ERNIE Speed是百度2024年最新发布的自研高性能大语言模型,通用能力优异,适合作为基座模型进行精调,更好地处理特定场景问题,同时具备极佳的推理性能。ERNIE-Speed-128K是模型的一个版本。本文将为大家详细介绍相关API的使用方法。
免费模型列表
为了能让更多用户能够体验大模型带来的技术突破。2024年5月21日起,百度智能云千帆ModelBuilder中ERNIE-Speed、ERNIE-Lite、ERNIE-Tiny系列模型Tokens后付费的服务对客户免费开放使用,具体包括ERNIE-Speed-8K、ERNIE-Speed-128K、ERNIE-Speed-AppBuilder专用版、ERNIE-Lite-8K、ERNIE-Lite-128K(即将上线)、ERNIE-Tiny共计7款模型的预置服务,详细的情况如下表所示:
模型规格 | 输入价格 (元/千tokens) | 降幅 | 输出价格 (元/千tokens) | 降幅 | |||
降价前 | 降价后 | 降价前 | 降价后 | ||||
ERNIE 系列模型 | Speed-8K | 0.004 | 0 | 100%↓ | 0.008 | 0 | 100%↓ |
Speed-AppBuilder | 0.004 | 0 | 100%↓ | 0.008 | 0 | 100%↓ | |
Speed-128K | 0.016 | 0 | 100%↓ | 0.032 | 0 | 100%↓ | |
Lite-8K | 0.003 | 0 | 100%↓ | 0.006 | 0 | 100%↓ | |
Lite-8K-0922 | 0.008 | 0 | 100%↓ | 0.008 | 0 | 100%↓ | |
Lite-128K | 0.012 | 0 | 100%↓ | 0.024 | 0 | 100%↓ | |
Tiny-8K | 0.001 | 0 | 100%↓ | 0.001 | 0 | 100%↓ |
API创建chat接口详解
让我们来了解如何调用接口发起一次对话请求。
注意事项
开发者在使用API时,支持两种鉴权方式:
• 访问凭证access_token鉴权[2]
• 基于安全认证AK/SK进行签名计算鉴权[3]
API基本信息
• 请求地址:
https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k
• 请求方式:POST
Header参数说明
根据不同的鉴权方式,需要设置不同的Header参数:
1. 访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
Content-Type | string | 是 | 固定值application/json |
2. 基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,详见鉴权认证机制[4] |
Query参数说明
只有访问凭证access_token鉴权方式需要使用Query参数:
名称 | 类型 | 必填 | 描述 |
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取[5] |
Body参数详解
名称 | 类型 | 必填 | 描述 |
messages | List(message) | 是 | 聊天上下文信息。说明:(1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话(2)最后一个message为当前请求的信息,前面的message为历史对话信息(3)必须为奇数个成员,成员中message的role必须依次为user、assistant(4)message中的content总长度和system字段总内容不能超过516096个字符,且不能超过126976 tokens |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false |
temperature | float | 否 | 说明:(1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定(2)默认0.95,范围(0, 1.0],不能为0 |
top_p | float | 否 | 说明:(1)影响输出文本的多样性,取值越大,生成文本的多样性越强(2)默认0.7,取值范围[0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明:(1)值越大表示惩罚越大(2)默认1.0,取值范围:[1.0, 2.0] |
system | string | 否 | 模型人设,主要用于人设设定,例如:你是xxx公司制作的AI助手。说明:长度限制,message中的content总长度和system字段总内容不能超过516096个字符,且不能超过126976 tokens |
stop | List(string) | 否 | 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明:(1)每个元素长度不超过20字符(2)最多4个元素 |
max_output_tokens | int | 否 | 指定模型最大输出token数,说明:(1)如果设置此参数,范围[2, 4096](2)如果不设置此参数,最大输出token数为4096 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
其中message的具体说明如下:
名称 | 类型 | 描述 |
role | string | 当前支持以下:user: 表示用户 assistant: 表示对话助手 |
content | string | 对话内容,不能为空 |
响应参数说明
响应头Header参数
部分重要参数如下:
名称 | 描述 |
X-Ratelimit-Limit-Requests | 一分钟内允许的最大请求次数 |
X-Ratelimit-Limit-Tokens | 一分钟内允许的最大tokens消耗,包含输入tokens和输出tokens |
X-Ratelimit-Remaining-Requests | 达到RPM速率限制前,剩余可发送的请求数配额,如果配额用完,将会在0-60s后刷新 |
X-Ratelimit-Remaining-Tokens | 达到TPM速率限制前,剩余可消耗的tokens数配额,如果配额用完,将会在0-60s后刷新 |
响应体参数
名称 | 类型 | 描述 |
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统计信息 |
usage字段说明:
名称 | 类型 | 描述 |
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
完整示例代码
下面分别展示单轮对话、多轮对话和流式输出的完整示例代码,以访问凭证access_token鉴权方式为例。
单轮对话示例
请求示例:
# 步骤一,获取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/ernie-speed-128k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user","content":"介绍一下北京"}
]
}' | iconv -f utf-8 -t utf-8
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/ernie-speed-128k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "介绍一下北京"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例:
HTTP/1.1 200 OK
Date: Wed, 28 Feb 2024 02:40:25 GMT
Content-Type: application/json;charset=utf-8
Statement: AI-generated
X-Ratelimit-Limit-Requests: 300
X-Ratelimit-Limit-Tokens: 300000
X-Ratelimit-Remaining-Requests: 299
X-Ratelimit-Remaining-Tokens: 299998
{
"id": "as-fkiyg0zixm",
"object": "chat.completion",
"created": 1709088025,
"result": "北京,作为中国的首都和直辖市,是中国政治、文化、科技和国际交往的中心。以下是关于北京的详细介绍:\n\n1. 地理位置:北京位于华北平原的西北部,背靠燕山,毗邻天津市和河北省。\n2. 历史背景:北京有着丰富的历史文化遗产。自元朝开始,这里就是中国的政治中心。明清两代,北京更是成为全国的政治和文化中心。著名的故宫、天坛、长城等历史遗迹见证了北京的辉煌历史。\n3. 文化特色:北京汇聚了中国的传统文化和现代文明。京剧、相声、舞龙舞狮等传统文化活动在这里得以传承和发展。同时,现代艺术、时尚和设计也在北京崭露头角。\n4. 教育资源:北京拥有众多知名高校,如北京大学、清华大学等,为培养人才提供了优质的教育资源。\n5. 科技产业:北京的科技产业发达,尤其是电子信息、生物医药等领域,吸引了众多国内外企业入驻。\n6. 经济发展:作为中国的经济中心之一,北京不仅有着现代服务业的蓬勃发展,还在金融、贸易、旅游等方面取得了显著成就。\n7. 旅游景点:北京拥有丰富的旅游资源,如故宫、天安门广场、长城、颐和园等著名景点,每年都吸引着大量国内外游客。\n8. 美食文化:北京的美食文化独具特色,如北京烤鸭、炸酱面、豆汁等,让游客流连忘返。\n\n总之,北京是一座充满历史底蕴、文化气息和现代文明的城市,也是中国走向世界的重要窗口。",
"is_truncated": false,
"need_clear_history": false,
"usage": {
"prompt_tokens": 2,
"completion_tokens": 335,
"total_tokens": 337
}
}
多轮对话示例
请求示例:
# 步骤一,获取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/ernie-speed-128k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user","content":"介绍一下北京"},
{"role":"assistant","content":"北京,作为中国的首都和直辖市,是中国政治、文化、科技和国际交往的中心。以下是关于北京的详细介绍:\n\n1. 地理位置:北京位于华北平原的西北部,背靠燕山,毗邻天津市和河北省。\n2. 历史背景:北京有着丰富的历史文化遗产。自元朝开始,这里就是中国的政治中心。明清两代,北京更是成为全国的政治和文化中心。著名的故宫、天坛、长城等历史遗迹见证了北京的辉煌历史。\n3. 文化特色:北京汇聚了中国的传统文化和现代文明。京剧、相声、舞龙舞狮等传统文化活动在这里得以传承和发展。同时,现代艺术、时尚和设计也在北京崭露头角。\n4. 教育资源:北京拥有众多知名高校,如北京大学、清华大学等,为培养人才提供了优质的教育资源。\n5. 科技产业:北京的科技产业发达,尤其是电子信息、生物医药等领域,吸引了众多国内外企业入驻。\n6. 经济发展:作为中国的经济中心之一,北京不仅有着现代服务业的蓬勃发展,还在金融、贸易、旅游等方面取得了显著成就。\n7. 旅游景点:北京拥有丰富的旅游资源,如故宫、天安门广场、长城、颐和园等著名景点,每年都吸引着大量国内外游客。\n8. 美食文化:北京的美食文化独具特色,如北京烤鸭、炸酱面、豆汁等,让游客流连忘返。\n\n总之,北京是一座充满历史底蕴、文化气息和现代文明的城市,也是中国走向世界的重要窗口。"},
{"role":"user","content": "北京有哪些著名景点"}
]
}' | iconv -f utf-8 -t utf-8
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/ernie-speed-128k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "介绍一下北京"
},
{
"role": "assistant",
"content": "北京,作为中国的首都和直辖市,是中国政治、文化、科技和国际交往的中心。以下是关于北京的详细介绍:\n\n1. 地理位置:北京位于华北平原的西北部,背靠燕山,毗邻天津市和河北省。\n2. 历史背景:北京有着丰富的历史文化遗产。自元朝开始,这里就是中国的政治中心。明清两代,北京更是成为全国的政治和文化中心。著名的故宫、天坛、长城等历史遗迹见证了北京的辉煌历史。\n3. 文化特色:北京汇聚了中国的传统文化和现代文明。京剧、相声、舞龙舞狮等传统文化活动在这里得以传承和发展。同时,现代艺术、时尚和设计也在北京崭露头角。\n4. 教育资源:北京拥有众多知名高校,如北京大学、清华大学等,为培养人才提供了优质的教育资源。\n5. 科技产业:北京的科技产业发达,尤其是电子信息、生物医药等领域,吸引了众多国内外企业入驻。\n6. 经济发展:作为中国的经济中心之一,北京不仅有着现代服务业的蓬勃发展,还在金融、贸易、旅游等方面取得了显著成就。\n7. 旅游景点:北京拥有丰富的旅游资源,如故宫、天安门广场、长城、颐和园等著名景点,每年都吸引着大量国内外游客。\n8. 美食文化:北京的美食文化独具特色,如北京烤鸭、炸酱面、豆汁等,让游客流连忘返。\n\n总之,北京是一座充满历史底蕴、文化气息和现代文明的城市,也是中国走向世界的重要窗口。"
},
{
"role": "user",
"content": "北京有哪些著名景点"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例:
HTTP/1.1 200 OK
Date: Wed, 28 Feb 2024 02:42:53 GMT
Content-Type: application/json;charset=utf-8
Statement: AI-generated
X-Ratelimit-Limit-Requests: 300
X-Ratelimit-Limit-Tokens: 300000
X-Ratelimit-Remaining-Requests: 299
X-Ratelimit-Remaining-Tokens: 299659
{
"id": "as-tsfapg1k0z",
"object": "chat.completion",
"created": 1709088173,
"result": "北京有许多著名景点,其中包括天安门广场、故宫、长城、颐和园、天坛公园、圆明园、北海公园、北京欢乐谷等。天安门广场是北京的地标性景点之一,是世界上最大的城市广场之一;故宫是中国古代皇宫建筑的代表之一,也是世界文化遗产;长城是中国古代的军事防御工程,被誉为世界八大奇迹之一;颐和园是一座大型皇家园林,具有极高的艺术价值;天坛公园是古代皇家祭天和祈年的地方,也是中国现存最大的圜丘祈年建筑群;圆明园是清朝皇家的花园,融合了中西园林艺术的精华;北海公园是一座具有独特北方风格的皇家园林;北京欢乐谷是一个大型主题公园,集游乐、演艺、科普、文化等多种元素于一体。此外,北京还有许多其他著名景点,如慕田峪长城、八达岭长城等。",
"is_truncated": false,
"need_clear_history": false,
"usage": {
"prompt_tokens": 341,
"completion_tokens": 189,
"total_tokens": 530
}
}
流式输出示例
请求示例:
# 步骤一,获取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/ernie-speed-128k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user", "content": "给我推荐一些自驾游路线"}
],
"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/ernie-speed-128k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "给我推荐一些自驾游路线"
}
],
"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()
响应示例:
HTTP/1.1 200 OK
Date: Mon, 12 Apr 2021 06:27:55 GMT
Content-Type: text/event-stream;charset=utf-8
Cache-Control: no-cache
Statement: AI-generated
X-Ratelimit-Limit-Requests: 300
X-Ratelimit-Limit-Tokens: 300000
X-Ratelimit-Remaining-Requests: 299
X-Ratelimit-Remaining-Tokens: 299994
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088340,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"以下为您","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088341,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"推荐几条经典的自驾游路线:\n\n1. 海南环岛自驾游:从海口出发,沿着海南岛的海岸线前行,途经三亚、","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088341,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"陵水、万宁等城市,欣赏海南的热带风情和美丽的海景。","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088342,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"\n2. 西藏自驾游:从拉萨出发,沿途可以欣赏到壮丽的雪山、草原、湖泊等自然景观,体验浓郁的藏族文化。","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088342,"sentence_id":4,"is_end":false,"is_truncated":false,"result":"\n3. 丽江-香格里拉自驾游:从丽江古城出发,前往香格里拉,沿途可以游览泸沽湖、虎跳峡等景点,感受云南的","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088342,"sentence_id":5,"is_end":false,"is_truncated":false,"result":"多元文化和
......
data: {"id":"as-34jurid5xf","object":"chat.completion","created":1709088346,"sentence_id":15,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"usage":{"prompt_tokens":6,"completion_tokens":351,"total_tokens":357}}
错误码说明
如果请求错误,服务器返回的JSON文本包含以下参数:
名称 | 描述 |
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求:
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
千帆大模型平台相关错误码,请查看错误码说明[6]。
curl 的调用示范
以下是去掉敏感密钥信息的 curl
使用示范:
第一步:获取 access_token
curl -X POST 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的API_Key&client_secret=你的Secret_Key' -H 'Content-Type: application/json'
在命令中替换 你的API_Key
和 你的Secret_Key
为您实际的 API Key 和 Secret Key。执行此命令后,您将获得一个 JSON 响应,其中包含 access_token
。
第二步:使用 access_token
调用接口
在获得的 access_token
基础上,可以使用它来调用 ernie-speed-128k
模型接口。以下是一个示例请求:
curl --location --request POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token=你的access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [
{
"role": "user",
"content": "你好"
}
]
}'
参数说明
• API URL:
https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k
是调用ernie-speed-128k
模型的 API 端点。• access_token:将
你的access_token
替换为从第一步中获得的实际access_token
。• messages:对话内容,格式为 JSON。
运行此命令后,您将收到模型生成的响应结果。
相关的链接
示范代码工具[1]
引用链接
[1]
示范代码工具: https://console.bce.baidu.com/support/?_=1692863460488#/api?product=QIANFAN&project=%E5%8D%83%E5%B8%86ModelBuilder&parent=ERNIE-Speed&api=rpc%2F2.0%2Fai_custom%2Fv1%2Fwenxinworkshop%2Fchat%2Fernie-speed-128k&method=post[2]
访问凭证access_token鉴权: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Dlkm79mnx[3]
基于安全认证AK/SK进行签名计算鉴权: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Dlkm79mnx#基于安全认证aksk签名计算认证[4]
鉴权认证机制: https://cloud.baidu.com/doc/Reference/s/Njwvz1wot[5]
Access Token获取: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ilkkrb0i5[6]
错误码说明: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/tlmyncueh