|
| 1 | +# 客户端使用方式 |
| 2 | + |
| 3 | +## 简介 |
| 4 | + |
| 5 | +FastDeploy客户端提供命令行接口和Python接口,可以快速调用FastDeploy后端部署的LLM模型服务。 |
| 6 | + |
| 7 | +## 安装 |
| 8 | + |
| 9 | +源码安装 |
| 10 | +``` |
| 11 | +pip install . |
| 12 | +``` |
| 13 | + |
| 14 | +## 命令行接口 |
| 15 | + |
| 16 | +首先通过环境变量设置模型服务模式、模型服务URL、模型ID,然后使用命令行接口调用模型服务。 |
| 17 | + |
| 18 | +| 参数 | 说明 | 是否必填 | 默认值 | |
| 19 | +| --- | --- | --- | --- | |
| 20 | +| FASTDEPLOY_MODEL_URL | 模型服务部署的IP地址和端口,格式为`x.x.x.x:xxx`。 | 是 | | |
| 21 | + |
| 22 | +``` |
| 23 | +export FASTDEPLOY_MODEL_URL="x.x.x.x:xxx" |
| 24 | +
|
| 25 | +# 流式接口 |
| 26 | +fdclient stream_generate "你好?" |
| 27 | +
|
| 28 | +# 非流式接口 |
| 29 | +fdclient generate "你好,你是谁?" |
| 30 | +``` |
| 31 | + |
| 32 | +## Python接口 |
| 33 | + |
| 34 | +首先通过Python代码设置模型服务URL(hostname+port),然后使用Python接口调用模型服务。 |
| 35 | + |
| 36 | +| 参数 | 说明 | 是否必填 | 默认值 | |
| 37 | +| --- | --- | --- | --- | |
| 38 | +| hostname+port | 模型服务部署的IP地址和端口,格式为`x.x.x.x。 | 是 | | |
| 39 | + |
| 40 | + |
| 41 | +``` |
| 42 | +from fastdeploy_client.chatbot import ChatBot |
| 43 | +
|
| 44 | +hostname = "x.x.x.x" |
| 45 | +port = xxx |
| 46 | +
|
| 47 | +# 流式接口,stream_generate api的参数说明见附录 |
| 48 | +chatbot = ChatBot(hostname=hostname, port=port) |
| 49 | +stream_result = chatbot.stream_generate("你好", topp=0.8) |
| 50 | +for res in stream_result: |
| 51 | + print(res) |
| 52 | +
|
| 53 | +# 非流式接口,generate api的参数说明见附录 |
| 54 | +chatbot = ChatBot(hostname=hostname, port=port) |
| 55 | +result = chatbot.generate("你好", topp=0.8) |
| 56 | +print(result) |
| 57 | +``` |
| 58 | + |
| 59 | +### 接口说明 |
| 60 | +``` |
| 61 | +ChatBot.stream_generate(message, |
| 62 | + max_dec_len=1024, |
| 63 | + min_dec_len=2, |
| 64 | + topp=0.0, |
| 65 | + temperature=1.0, |
| 66 | + frequency_score=0.0, |
| 67 | + penalty_score=1.0, |
| 68 | + presence_score=0.0, |
| 69 | + eos_token_ids=254186) |
| 70 | +
|
| 71 | +# 此函数返回一个iterator,其中每个元素为一个dict, 例如:{"token": "好的", "is_end": 0} |
| 72 | +# 其中token为生成的字符,is_end表明是否为生成的最后一个字符(0表示否,1表示是) |
| 73 | +# 注意:当生成结果出错时,返回错误信息;不同模型的eos_token_ids不同 |
| 74 | +``` |
| 75 | + |
| 76 | +``` |
| 77 | +ChatBot.generate(message, |
| 78 | + max_dec_len=1024, |
| 79 | + min_dec_len=2, |
| 80 | + topp=0.0, |
| 81 | + temperature=1.0, |
| 82 | + frequency_score=0.0, |
| 83 | + penalty_score=1.0, |
| 84 | + presence_score=0.0, |
| 85 | + eos_token_ids=254186) |
| 86 | +
|
| 87 | +# 此函数返回一个,例如:{"results": "好的,我知道了。"},其中results即为生成结果 |
| 88 | +# 注意:当生成结果出错时,返回错误信息;不同模型的eos_token_ids不同 |
| 89 | +``` |
| 90 | + |
| 91 | +### 参数说明 |
| 92 | + |
| 93 | +| 字段名 | 字段类型 | 说明 | 是否必填 | 默认值 | 备注 | |
| 94 | +| :---: | :-----: | :---: | :---: | :-----: | :----: | |
| 95 | +| req_id | str | 请求ID,用于标识一个请求。建议设置req_id,保证其唯一性 | 否 | 随机id | 如果推理服务中同时有两个相同req_id的请求,会返回req_id重复的错误信息 | |
| 96 | +| text | str | 请求的文本 | 是 | 无 | | |
| 97 | +| max_dec_len | int | 最大生成token的长度,如果请求的文本token长度加上max_dec_len大于模型的max_seq_len,会返回长度超限的错误信息 | 否 | max_seq_len减去文本token长度 | | |
| 98 | +| min_dec_len | int | 最小生成token的长度,最小是1 | 否 | 1 | | |
| 99 | +| topp | float | 控制随机性参数,数值越大则随机性越大,范围是0~1 | 否 | 0.7 | | |
| 100 | +| temperature | float | 控制随机性参数,数值越小随机性越大,需要大于 0 | 否 | 0.95 | | |
| 101 | +| frequency_score | float | 频率分数 | 否 | 0 | | |
| 102 | +| penalty_score | float | 惩罚分数 | 否 | 1 | | |
| 103 | +| presence_score | float | 存在分数 | 否 | 0 | | |
| 104 | +| stream | bool | 是否流式返回 | 否 | False | | |
| 105 | +| return_all_tokens | bool | 是否一次性返回所有结果 | 否 | False | 与stream参数差异见表后备注 | |
| 106 | +| timeout | int | 请求等待的超时时间,单位是秒 | 否 | 300 | | |
| 107 | + |
| 108 | +* 在正确配置PUSH_MODE_HTTP_PORT字段下,服务支持 GRPC 和 HTTP 两种请求服务 |
| 109 | + * stream 参数仅对 HTTP 请求生效 |
| 110 | + * return_all_tokens 参数对 GRPC 和 HTTP 请求均有效 |
0 commit comments