续写 Completions
千帆 SDK 支持调用续写Completions相关API。如果不需要对话,仅需要根据 prompt 补全的场景和模型,可以使用qianfan.Completion,且支持非流式、流式调用。
注意事项
模型不同,调用SDK时,使用参数不同。请结合具体模型,查看参数使用说明进行调用。
- 默认模型,即ERNIE-Bot-turbo,调用时无需填写model参数,详情见参数说明。
- 指定支持预置服务的模型,使用model参数指定支持预置服务的模型,详情见参数说明。
- 用户快速部署自行发布的模型服务,需使用参数endpoint,详见请求参数说明。
支持模型列表
- ERNIE-Bot 4.0
- ERNIE-Bot
- ERNIE-Bot-turbo
- BLOOMZ-7B
- Qianfan-BLOOMZ-7B-compressed
- Llama-2-7b-chat
- Llama-2-13b-chat
- Llama-2-70b-chat
- Qianfan-Chinese-Llama-2-7B
- ChatGLM2-6B-32K
- SQLCoder-7B
- CodeLlama-7b-Instruct
- AquilaChat-7B
- AquilaCode-multi
- Cerebras-GPT-13B
- Pythia-12B
- GPT-J-6B
- GPT-NeoX-20B
- GPT4All-J
- StarCoder
- StableLM-Alpha -7B
- 自定义导入模型
非流式
调用示例
默认模型
默认模型,即 ERNIE-Bot-turbo,无需使用参数model,调用示例如下。
import qianfan
# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_sk
comp = qianfan.Completion(ak="your_ak", sk="your_sk")
resp = comp.do(prompt="你好")
print(resp)
指定支持预置服务的模型
使用model字段,指定千帆平台支持预置服务的模型,调用示例如下。
import qianfan
# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_sk
comp = qianfan.Completion(ak="your_ak", sk="your_sk")
resp = comp.do(model="ERNIE-Bot", prompt="你好")
print(resp)
用户自行发布的模型服务
对于用户快速部署自行发布的模型服务,通过使用Endpoint进行调用,示例如下。
import qianfan
# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_sk
chat_comp = qianfan.ChatCompletion(ak="your_ak", sk="your_sk")
# 使用自行发布的模型
resp = comp.do(endpoint="your_custom_endpoint", prompt="你好")
# 可以通过resp["body"]获取接口返回的内容
print(resp)
返回示例
QfResponse(
code=200,
headers={
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Origin': '*',
'Appid': '26217442',
'Connection': 'keep-alive',
'Content-Encoding': 'gzip',
'Content-Type': 'application/json; charset=utf-8',
'Date': 'Mon, 18 Sep 2023 07:45:30 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "',
'Server': 'Apache',
'Set-Cookie': 'BAIDUID=7D341D95F72576B4CC8DE1AA12875B08:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1',
'Statement': 'AI-generated',
'Tracecode': '27302144600517774090091815',
'Vary': 'Accept-Encoding',
'X-Aipe-Self-Def': 'eb_total_tokens:15-id:as-rev7bcw476',
'X-Baidu-Request-Id': 'd1b7514c6bb321a23afca7b11e28e0361000147',
'X-Openapi-Server-Timestamp': '1695023127', 'Content-Length': '224'
},
body={
'id': 'as-rev7bcw476',
'object': 'completion',
'created': 1695023130,
'result': '你好!有什么我可以帮助你的吗?',
'is_truncated': False,
'need_clear_history': False,
'usage': {
'prompt_tokens': 2,
'completion_tokens': 13,
'total_tokens': 15
}
},
image=None
)
流式
调用示例
import qianfan
# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_sk
comp = qianfan.Completion(ak="your_ak", sk="your_sk")
# 续写功能同样支持流式调用
resp = comp.do(model="ERNIE-Bot", prompt="你好", stream=True)
for r in resp:
print(r)
返回示例
QfResponse(code=200, headers={'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Type': 'text/event-stream; charset=utf-8', 'Date': 'Mon, 18 Sep 2023 08:21:30 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=156B30CFE83F05CCA50BAD95BDD08372:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1', 'Statement': 'AI-generated', 'Tracecode': '12888209050517774090091816', 'X-Baidu-Request-Id': 'cf54232d2e6386c1e0e74f63139c1ada1000206', 'X-Openapi-Server-Timestamp': '1695025288', 'Transfer-Encoding': 'chunked'}, body={'id': 'as-grzsi3ig76', 'object': 'completion', 'created': 1695025290, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': '你好!', 'need_clear_history': False, 'usage': {'prompt_tokens': 2, 'completion_tokens': 2, 'total_tokens': 4}}, image=None)
QfResponse(code=200, headers={'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Type': 'text/event-stream; charset=utf-8', 'Date': 'Mon, 18 Sep 2023 08:21:30 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=156B30CFE83F05CCA50BAD95BDD08372:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1', 'Statement': 'AI-generated', 'Tracecode': '12888209050517774090091816', 'X-Baidu-Request-Id': 'cf54232d2e6386c1e0e74f63139c1ada1000206', 'X-Openapi-Server-Timestamp': '1695025288', 'Transfer-Encoding': 'chunked'}, body={'id': 'as-grzsi3ig76', 'object': 'completion', 'created': 1695025290, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '有什么我可以帮助你的吗?', 'need_clear_history': False, 'usage': {'prompt_tokens': 2, 'completion_tokens': 11, 'total_tokens': 15}}, image=None)
QfResponse(code=200, headers={'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Type': 'text/event-stream; charset=utf-8', 'Date': 'Mon, 18 Sep 2023 08:21:30 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=156B30CFE83F05CCA50BAD95BDD08372:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1', 'Statement': 'AI-generated', 'Tracecode': '12888209050517774090091816', 'X-Baidu-Request-Id': 'cf54232d2e6386c1e0e74f63139c1ada1000206', 'X-Openapi-Server-Timestamp': '1695025288', 'Transfer-Encoding': 'chunked'}, body={'id': 'as-grzsi3ig76', 'object': 'completion', 'created': 1695025290, 'sentence_id': 2, 'is_end': True, 'is_truncated': False, 'result': '', 'need_clear_history': False, 'usage': {'prompt_tokens': 2, 'completion_tokens': 0, 'total_tokens': 15}}, image=None)
参数说明
请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
model | string | 否 | 模型名称,用于指定平台支持的预置服务模型,说明: (1)不填写此字段,默认模型为ERNIE-Bot-turbo (2)如果需指定平台支持的预置服务模型,此字段必填,且支持模型如下: · ERNIE-Bot 4.0 · ERNIE-Bot · ERNIE-Bot-turbo · BLOOMZ-7B · Qianfan-BLOOMZ-7B-compressed · Llama-2-7b-chat · Llama-2-13b-chat · Llama-2-70b-chat · Qianfan-Chinese-Llama-2-7B · ChatGLM2-6B-32K · AquilaChat-7B |
endpoint | string | 否 | 用于指定用户自行发布的模型服务,包括自行发布平台预置的模型、用户自定义导入模型。说明: (1)如果需指定用户自行发布的模型服务,endpoint字段为必填,平台目前支持以下自行发布的模型: · SQLCoder-7B · CodeLlama-7b-Instruct · AquilaCode-multi · Cerebras-GPT-13B · Pythia-12B · GPT-J-6B · GPT-NeoX-20B · GPT4All-J · StarCoder · StableLM-Alpha -7B · 自定义导入模型 (2)用户自行发布服务,该字段值可以通过查看服务地址获取:打开服务管理-选择创建的服务-点击详情页查看服务地址,endpoint值为https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/completions/ 后面的地址,如下图所示 注意: 在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择模型Pythia-12B,输入API地址为“test1”,endpoint的取值即为“lbwxxxd4_test1”,如下图所示,如何发布服务请参考发布平台预置的模型服务、快速部署自定义导入模型 |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 (3)建议该参数和top_p只设置1个 (4)建议top_p和temperature不要同时更改 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 (3)以下情况,不支持使用此参数: · 当model或endpoint值为ERNIE-Bot、ERNIE-Bot 4.0或ERNIE-Bot-turbo · 基于ERNIE-Bot-turbo SFT调优后的模型 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] (3)建议该参数和temperature只设置1个 (4)建议top_p和temperature不要同时更改 |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false true:是,以流式接口的形式返回数据 false:否 |
retry_count | int | 否 | 重试次数,默认1次 |
request_timeout | float | 否 | 请求超时时间,默认60秒 |
backoff_factor | float | 否 | 请求重试参数,用于指定重试的策略,默认为0 |
stop | List[string] | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素 (3)以下情况,不支持使用此参数: · 当model或endpoint值为ERNIE-Bot、ERNIE-Bot 4.0或ERNIE-Bot-turbo · 基于ERNIE-Bot-turbo SFT调优后的模型 |
user_id | string | 否 | 表示最终用户的唯一标识符,可以监视和检测滥用行为,防止接口恶意调用 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
is_truncated | bool | 当前生成的结果是否被截断 |
result | string | 对话返回结果 |
need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 |
usage | usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
最后修改时间: 1 年前