动态输入输出
更新时间:2024-08-15
本文介绍了大模型动态输入输出及如何使用流程。
什么是动态输入输出
大模型服务的输入输出一般有固定限制,比如speed、lite、tiny等模型预置服务,输入最大为6K,输出最大为2K。用户在使用过程中,期望能适当调整输入输出情况,如最大输入为7K等。目前,千帆大模型预置服务暂不支持此功能。
近期千帆功能升级后,针对一些经过SFT模型训练后发布的服务,已支持大模型上下文8k范围内的动态输入输出。即总长度为8K,可适当调整最大输入输出的限制值。如以下场景:
- 例如设定最大输入为7K,当实际输入为7K时,最大输出为1K,总长度8K
- 例如设定最大输入为1K,当实际输入为1K时,最大输出为7K,总长度为8K
支持范围
-
以下为经过SFT模型训练后发布的服务,如何调用API请查看平台训练模型调用API。
- ERNIE-Speed-8K
- ERNIE-Lite-8K
- ERNIE-Tiny-8K
- ERNIE-Character-8K
- ERNIE-Character-Fiction-8K
- 限定sampling采样方式。如果是beam search(含diverse beam serach),不支持动态输入输出
示例1-长输出
以指定最大输出7000为例说明。如输入问题tokens数为7 ,指定最大输出7000。调用结果,输出超过6K。
- 请求示例
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”
curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{创建服务时填写的API地址}?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{
"role": "user",
"content": "推荐上海10条旅游路线"
}
],
"min_output_tokens": 7000,
"max_output_tokens": 7000,
"stream":true
}'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{创建服务时填写的API地址}?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "给我推荐一些自驾游路线"
}
],
"min_output_tokens": 7000,
"max_output_tokens": 7000,
"stream":True
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload, stream=True)
for line in response.iter_lines():
print(line.decode("UTF-8"))
if __name__ == '__main__':
main()
- 调用结果
调用结果,输出超过6K。
示例2-长输入
以指定最大输入3000为例说明。
- 请求示例
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”,替换content内容
curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{创建服务时填写的API地址}?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{
"role": "user",
"content": "xxxxx请替换为长输入内容"
}
],
"min_output_tokens": 3000,
"max_output_tokens": 3000,
"stream":true
}'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{创建服务时填写的API地址}?access_token=" + get_access_token()
"""
请替换messages中content内容
"""
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "xxxx请替换长输入内容"
}
],
"min_output_tokens": 3000,
"max_output_tokens": 3000,
"stream":True
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload, stream=True)
for line in response.iter_lines():
print(line.decode("UTF-8"))
if __name__ == '__main__':
main()
- 调用结果