当前位置:   article > 正文

文心一言api开发者文档,python版ERNIE-3.5-8K-Preview模型调用方法_ernie 3.5token

ernie 3.5token

ERNIE 3.5是百度自研的旗舰级大规模⼤语⾔模型,覆盖海量中英文语料,具有强大的通用能力,可满足绝大部分对话问答、创作生成、插件应用场景要求;支持自动对接百度搜索插件,保障问答信息时效。本文介绍了ERNIE-3.5-8K-Preview相关API。

创建chat

调用本接口,发起一次对话请求。

注意事项

请求说明

基本信息

请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview

请求方式: POST

Header参数

根据不同鉴权方式,查看对应Header参数。

  • 访问凭证access_token鉴权
名称类型必填描述
Content-Typestring固定值application/json
  • 基于安全认证AK/SK进行签名计算鉴权
名称类型必填描述
Content-Typestring固定值application/json
x-bce-datestring当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z
Authorizationstring用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具

Query参数

只有访问凭证access_token鉴权方式,需使用Query参数。

  • 访问凭证access_token鉴权
名称类型必填描述
access_tokenstring通过API Key和Secret Key获取的access_token,参考Access Token获取

Body参数

名称类型必填描述
messagesList(message)聊天上下文信息。说明:
(1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话;例如:
· 1个成员示例,"messages": [ {"role": "user","content": "你好"}]
· 3个成员示例,"messages": [ {"role": "user","content": "你好"},{"role":"assistant","content":"需要什么帮助"},{"role":"user","content":"自我介绍下"}]
(2)最后一个message为当前请求的信息,前面的message为历史对话信息
(3)成员数目必须为奇数,成员中message的role值说明如下:奇数位message的role值必须为user或function,偶数位message的role值为assistant,第一个message的role不能是function。例如:
示例中message中的role值分别为user、assistant、user、assistant、user;奇数位(红框)message中的role值为user,即第1、3、5个message中的role值为user;偶数位(蓝框)值为assistant,即第2、4个message中的role值为assistant

image.png


(4)message中的content总长度、functions和system字段总内容不能超过20000 个字符,且不能超过5120 tokens
functionsList(function)一个可触发函数的描述列表,说明:
(1)支持的function数量无限制
(2)长度限制,message中的content总长度、functions和system字段总内容不能超过20000 个字符,且不能超过5120 tokens
temperaturefloat说明:
(1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定
(2)默认0.8,范围 (0, 1.0],不能为0
top_pfloat说明:
(1)影响输出文本的多样性,取值越大,生成文本的多样性越强
(2)默认0.8,取值范围 [0, 1.0]
penalty_scorefloat通过对已生成的token增加惩罚,减少重复生成的现象。说明:
(1)值越大表示惩罚越大
(2)默认1.0,取值范围:[1.0, 2.0]
streambool是否以流式接口的形式返回数据,默认false
systemstring模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明:
(1)长度限制,message中的content总长度、functions和system字段总内容不能超过20000 个字符,且不能超过5120 tokens
(2)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化
stopList(string)生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明:
(1)每个元素长度不超过20字符
(2)最多4个元素
disable_searchbool是否强制关闭实时搜索功能,默认false,表示不关闭
enable_citationbool是否开启上角标返回,说明:
(1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍
(2)默认false,不开启
enable_tracebool是否返回搜索溯源信息,说明:
(1)如果开启,在触发了搜索增强的场景下,会返回搜索溯源信息search_info,search_info内容见响应参数介绍
(2)默认false,表示不返回
max_output_tokensint指定模型最大输出token数,说明:
(1)如果设置此参数,范围[2, 2048]
(2)如果不设置此参数,最大输出token数为2048
response_formatstring指定响应内容的格式,说明:
(1)可选值:
· json_object:以json格式返回,可能出现不满足效果情况
· text:以文本格式返回
(2)如果不填写参数response_format值,默认为text
user_idstring表示最终用户的唯一标识符
tool_choicetool_choice在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在

message说明

名称类型必填描述
rolestring当前支持以下:
user: 表示用户
assistant: 表示对话助手
function: 表示函数
contentstring对话内容,说明:
(1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空
(2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等
(3)当role为function,content为JSON格式,效果可能更好
namestringmessage作者;当role=function时,必填,且是响应内容中function_call中的name
function_callfunction_call函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入

function说明

functions中function说明如下

名称类型必填描述
namestring函数名
descriptionstring函数描述
parametersobject函数请求参数,说明:
(1)JSON Schema 格式,参考JSON Schema描述
(2)如果函数没有请求参数,parameters值格式如下:
{"type": "object","properties": {}}
responsesobject函数响应参数,JSON Schema 格式,参考JSON Schema描述
examplesList(List(example))function调用的一些历史示例,说明:
(1)可以提供正例(正常触发)和反例(无需触发)的example
·正例:从历史请求数据中获取
·反例:
       当role = user,不会触发请求的query
       当role = assistant,有固定的格式。function_call的name为空,arguments是空对象:"{}",thought可以填固定的:"我不需要调用任何工具"
(2)兼容之前的 List(example) 格式

example说明

名称类型必填描述
rolestring当前支持以下:
user: 表示用户
assistant: 表示对话助手
function: 表示函数
contentstring对话内容,说明:
(1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空
(2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等
namestringmessage作者;当role=function时,必填,且是响应内容中function_call中的name
function_callfunction_call函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入

function_call说明

名称类型必填描述
namestring触发的function名
argumentsstring请求参数
thoughtsstring模型思考过程

tool_choice说明

名称类型必填描述
typestring指定工具类型,function
functionfunction指定要使用的函数

function说明

tool_choice中function说明如下

名称类型必填描述
namestring指定要使用的函数名

响应说明

响应头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后刷新

响应体参数

名称类型描述
idstring本轮对话的id
objectstring回包类型
chat.completion:多轮对话返回
createdint时间戳
sentence_idint表示当前子句的序号。只有在流式接口模式下会返回该字段
is_endbool表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段
is_truncatedbool当前生成的结果是否被截断
finish_reasonstring输出内容标识,说明:
· normal:输出内容完全由大模型生成,未触发截断、替换
· stop:输出结果命中入参stop中指定的字段后被截断
· length:达到了最大的token数,根据EB返回结果is_truncated来截断
· content_filter:输出内容被截断、兜底、替换为**等
· function_call:调用了funtion call功能
search_infosearch_info搜索数据,当请求参数enable_citation或enable_trace为true,并且触发搜索时,会返回该字段
resultstring对话返回结果
need_clear_historybool表示用户输入是否存在安全风险,是否关闭当前会话,清理历史会话信息
· true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息
· false:否,表示用户输入无安全风险
flagint说明:
· 0:正常返回
· 其他:非正常
ban_roundint当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1
usageusagetoken统计信息
function_callfunction_call由模型生成的函数调用,包含函数名称,和调用参数

search_info说明

名称类型描述
search_resultsList(search_result)搜索结果列表

search_result说明

名称类型描述
indexint序号
urlstring搜索结果URL
titlestring搜索结果标题

usage说明

名称类型描述
prompt_tokensint问题tokens数
completion_tokensint回答tokens数
total_tokensinttokens总数
pluginsList(plugin_usage)plugin消耗的tokens

plugin_usage说明

名称类型描述
namestringplugin名称,chatFile:chatfile插件消耗的tokens
parse_tokensint解析文档tokens
abstract_tokensint摘要文档tokens
search_tokensint检索文档tokens
total_tokensint总tokens

function_call说明

名称类型描述
namestring触发的function名
thoughtsstring模型思考过程
argumentsstring请求参数

注意 :同步模式和流式模式,响应参数返回不同,详细内容参考示例描述。

  • 同步模式下,响应参数为以上字段的完整json包。
  • 流式模式下,各字段的响应参数为 data: {响应参数}。

示例

以访问凭证access_token鉴权方式为例,说明如何调用API,示例如下。

请求示例(单轮)python

  1. import requests
  2. import json
  3. def get_access_token():
  4. """
  5. 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
  6. """
  7. url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
  8. payload = json.dumps("")
  9. headers = {
  10. 'Content-Type': 'application/json',
  11. 'Accept': 'application/json'
  12. }
  13. response = requests.request("POST", url, headers=headers, data=payload)
  14. return response.json().get("access_token")
  15. def main():
  16. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=" + get_access_token()
  17. payload = json.dumps({
  18. "messages": [
  19. {
  20. "role": "user",
  21. "content": "你好"
  22. }
  23. ]
  24. })
  25. headers = {
  26. 'Content-Type': 'application/json'
  27. }
  28. response = requests.request("POST", url, headers=headers, data=payload)
  29. print(response.text)
  30. if __name__ == '__main__':
  31. main()

响应示例(单轮)json

  1. HTTP/1.1 200 OK
  2. Date: Fri, 19 Jan 2024 08:49:13 GMT
  3. Content-Type: application/json;charset=utf-8
  4. Statement: AI-generated
  5. X-Ratelimit-Limit-Requests: 300
  6. X-Ratelimit-Limit-Tokens: 300000
  7. X-Ratelimit-Remaining-Requests: 298
  8. X-Ratelimit-Remaining-Tokens: 299971
  9. {
  10. "id": "as-61qu1k9xvf",
  11. "object": "chat.completion",
  12. "created": 1709711333,
  13. "result": "你好,请问有什么我可以帮助你的吗?无论你有什么问题或需要帮助,我都会尽力回答和协助你。请随时告诉我你的需求。",
  14. "is_truncated": false,
  15. "need_clear_history": false,
  16. "finish_reason": "normal",
  17. "usage": {
  18. "prompt_tokens": 1,
  19. "completion_tokens": 29,
  20. "total_tokens": 30
  21. }
  22. }

请求示例(多轮)python

  1. import requests
  2. import json
  3. def get_access_token():
  4. """
  5. 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
  6. """
  7. url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
  8. payload = json.dumps("")
  9. headers = {
  10. 'Content-Type': 'application/json',
  11. 'Accept': 'application/json'
  12. }
  13. response = requests.request("POST", url, headers=headers, data=payload)
  14. return response.json().get("access_token")
  15. def main():
  16. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=" + get_access_token()
  17. payload = json.dumps({
  18. "messages": [
  19. {
  20. "role": "user",
  21. "content": "你好"
  22. },
  23. {
  24. "role": "assistant",
  25. "content": "你好,请问有什么我可以帮助你的吗?无论你有什么问题或需要帮助,我都会尽力回答和协助你。请随时告诉我你的需求。"
  26. },
  27. {
  28. "role": "user",
  29. "content": "我在上海,周末可以去哪里玩?"
  30. },
  31. {
  32. "role": "assistant",
  33. "content": "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:
  34. 1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。
  35. 2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。
  36. 3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。
  37. 4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。
  38. 5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。
  39. 这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。"
  40. },
  41. {
  42. "role": "user",
  43. "content": "上海有哪些美食"
  44. }
  45. ]
  46. })
  47. headers = {
  48. 'Content-Type': 'application/json'
  49. }
  50. response = requests.request("POST", url, headers=headers, data=payload)
  51. print(response.text)
  52. if __name__ == '__main__':
  53. main()

响应示例(多轮)​​​​​​​json

  1. HTTP/1.1 200 OK
  2. Date: Wed, 28 Feb 2024 02:04:30 GMT
  3. Content-Type: application/json;charset=utf-8
  4. Statement: AI-generated
  5. X-Ratelimit-Limit-Requests: 300
  6. X-Ratelimit-Limit-Tokens: 300000
  7. X-Ratelimit-Remaining-Requests: 299
  8. X-Ratelimit-Remaining-Tokens: 299741
  9. {
  10. "id": "as-g1mtr4p03c",
  11. "object": "chat.completion",
  12. "created": 1709711455,
  13. "result": "上海是一个美食之都,拥有许多独特的地方特色菜肴和小吃。以下是一些上海的美食推荐:\n\n1. 生煎包:生煎包是上海的特色小吃之一,底部酥脆,上部松软,馅料鲜美,深受当地人喜爱。\n\n2. 南翔小笼包:南翔小笼包是上海的著名特色小吃,皮薄馅嫩,汤汁丰富,味道鲜美,是品尝上海传统美食的必选之一。\n\n3. 白斩鸡:白斩鸡是上海菜中的一道经典菜肴,鸡肉鲜嫩多汁,口感滑爽,搭配上调料食用更佳。\n\n4. 油条:油条是上海的传统早餐食品之一,外酥里嫩,香气四溢,搭配豆浆或豆腐脑食用更佳。\n\n5. 蟹壳黄:蟹壳黄是一种上海传统小吃,因其形似蟹壳而得名,口感香脆,馅料丰富,有甜、咸两种口味可选。\n\n6. 咸豆花:咸豆花是上海的传统小吃之一,豆花口感细腻,搭配咸味的调料和配料,味道独特而美味。\n\n除了以上几种美食,上海还有许多其他特色小吃和菜肴,如糖醋排骨、红烧肉、松鼠桂鱼、罗宋汤等。无论您是美食家还是普通游客,都可以在上海找到满足自己味蕾的美食佳肴。",
  14. "is_truncated": false,
  15. "need_clear_history": false,
  16. "finish_reason": "normal",
  17. "usage": {
  18. "prompt_tokens": 259,
  19. "completion_tokens": 306,
  20. "total_tokens": 565
  21. }
  22. }

请求示例(流式)​​​​​​​python​​​​​​​

  1. import requests
  2. import json
  3. def get_access_token():
  4. """
  5. 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
  6. """
  7. url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
  8. payload = json.dumps("")
  9. headers = {
  10. 'Content-Type': 'application/json',
  11. 'Accept': 'application/json'
  12. }
  13. response = requests.request("POST", url, headers=headers, data=payload)
  14. return response.json().get("access_token")
  15. def main():
  16. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=" + get_access_token()
  17. payload = json.dumps({
  18. "messages": [
  19. {
  20. "role": "user",
  21. "content": "给我推荐一些自驾游路线"
  22. }
  23. ],
  24. "stream": True
  25. })
  26. headers = {
  27. 'Content-Type': 'application/json'
  28. }
  29. response = requests.request("POST", url, headers=headers, data=payload, stream=True)
  30. for line in response.iter_lines():
  31. print(line.decode("UTF-8"))
  32. if __name__ == '__main__':
  33. main()

响应示例(流式)json

  1. HTTP/1.1 200 OK
  2. Date: Wed, 28 Feb 2024 02:02:31 GMT
  3. Content-Type: text/event-stream;charset=utf-8
  4. Cache-Control: no-cache
  5. Statement: AI-generated
  6. X-Ratelimit-Limit-Requests: 300
  7. X-Ratelimit-Limit-Tokens: 300000
  8. X-Ratelimit-Remaining-Requests: 299
  9. X-Ratelimit-Remaining-Tokens: 299994
  10. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085751,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"当然可以","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  11. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085752,"sentence_id":1,"is_end":false,"is_truncated":false,"result":",以下是一些建议的自驾游路线:\n\n1. **丝绸之路自驾游**:西安出发,经过天水、兰州、嘉峪关","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  12. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085752,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"、敦煌,最后到达哈密和乌鲁木齐。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  13. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085752,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"这条路线将带你领略古代丝绸之路的辉煌和壮丽。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  14. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085753,"sentence_id":4,"is_end":false,"is_truncated":false,"result":"\n2. **海南环岛自驾**:这是一条热带天堂的自驾路线,你可以尽情享受海南的美丽海滩和热带风情。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  15. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085754,"sentence_id":5,"is_end":false,"is_truncated":false,"result":"\n3. **穿越阿里大北线**:成都出发,经过广元、汉中、西安、延安、银川、阿拉善左","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  16. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085754,"sentence_id":6,"is_end":false,"is_truncated":false,"result":"旗等地,最后回到成都。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  17. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085755,"sentence_id":7,"is_end":false,"is_truncated":false,"result":"这条路线将带你穿越中国的大西北,感受高原的壮丽和神秘。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":0,"total_tokens":6}}
  18. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085756,"sentence_id":8,"is_end":false,"is_truncated":false,"result":"\n4. **寻找那北方的净土——自驾阿尔山**:北京出发,经过张家口、张北、太仆寺旗等地","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  19. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085756,"sentence_id":9,"is_end":false,"is_truncated":false,"result":",最后到达阿尔山。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  20. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085757,"sentence_id":10,"is_end":false,"is_truncated":false,"result":"这条路线将带你领略北方的自然风光和纯净之美。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  21. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085757,"sentence_id":11,"is_end":false,"is_truncated":false,"result":"\n\n这些路线各具特色,可以满足不同人群的需求。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  22. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085758,"sentence_id":12,"is_end":false,"is_truncated":false,"result":"无论你喜欢历史人文、自然风光还是热带风情,都可以在这些路线中找到满意的旅程。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  23. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085759,"sentence_id":13,"is_end":false,"is_truncated":false,"result":"在计划行程时,记得留出时间来享受路途中的风景,这样你的自驾游体验将更加丰富和难忘。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":176,"total_tokens":182}}
  24. data: {"id":"as-0gcrii0a9k","object":"chat.completion","created":1709085759,"sentence_id":14,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":6,"completion_tokens":255,"total_tokens":261}}

function call示例(单轮)

第一次请求
  • Bash
  1. # 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
  2. curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
  3. # 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
  4. curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=[步骤一调用接口获取的access_token]' -d '{
  5. "messages": [
  6. {"role":"user","content":"上海市今天的天气"}
  7. ],
  8. "functions": [
  9. {
  10. "name": "get_current_weather",
  11. "description": "获得指定地点的天气",
  12. "parameters": {
  13. "type": "object",
  14. "properties": {
  15. "location": {
  16. "type": "string",
  17. "description": "省,市名,例如:河北省,石家庄"
  18. },
  19. "unit": {
  20. "type": "string",
  21. "enum": ["摄氏度", "华氏度"]
  22. }
  23. },
  24. "required": ["location"]
  25. }
  26. },
  27. {
  28. "name": "get_current_price",
  29. "description": "获得指定公司的股价",
  30. "parameters": {
  31. "type": "object",
  32. "properties": {
  33. "company": {
  34. "type": "string",
  35. "description": "公司名,例如:腾讯,阿里巴巴"
  36. },
  37. "exchange": {
  38. "type": "string",
  39. "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
  40. }
  41. },
  42. "required": ["company", "exchange"]
  43. },
  44. "responses": {
  45. "type": "object",
  46. "properties": {
  47. "price": {
  48. "type": "int",
  49. "description": "当日股票价格"
  50. },
  51. "unit": {
  52. "type": "string",
  53. "enum": ["人民币", "美元","港币"],
  54. "description": "股票价格货币类型"
  55. },
  56. "change": {
  57. "type": "string",
  58. "description": "当日股票价格变化,如下跌3%,上涨0.5%"
  59. }
  60. }
  61. },
  62. "examples": [
  63. [
  64. {"role":"user","content":"What is the weather like in Boston?"},
  65. {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}}
  66. ],
  67. [
  68. {"role":"user","content":"你的名字是什么?"},
  69. {"role": "assistant", "content": null, "function_call": {"name": "", "arguments": "{}", "thoughts":"我无需调用任何工具"}}
  70. ]
  71. ]
  72. }
  73. ],
  74. "stream":true,
  75. "tool_choice": {
  76. "type": "function",
  77. "function": {
  78. "name": "get_current_weather"
  79. }
  80. }
  81. }' | iconv -f utf-8 -t utf-8
第一次响应​​​​​​​json
data: {"id":"as-rtpw9dcmef","object":"chat.completion","created":1693449832,"sentence_id":0,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"function_call":{"name":"get_current_weather","thoughts":"用户提到了天气,需要调用API来获取天气信息。","arguments":"{\"unit\":\"摄氏度\",\"location\":\"上海市\"}"},"usage":{"prompt_tokens":8,"completion_tokens":46,"total_tokens":54}}
函数调用
  • Bash
  1. curl -X POST 'http://0.0.0.0:80/get_current_weather' -d '{
  2. "unit": "摄氏度",
  3. "location": "上海市"
  4. }' | iconv -f utf-8 -t utf-8
函数响应json
  1. HTTP/1.1 200 OK
  2. {
  3. "temperature": "25",
  4. "unit": "摄氏度",
  5. "description": "晴朗"
  6. }
第二次请求
  • Bash
  1. # 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
  2. curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
  3. # 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
  4. curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=[步骤一调用接口获取的access_token]' -d '{
  5. "messages": [
  6. {"role":"user","content":"上海市今天天气如何?"},
  7. {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"上海市\"}"}},
  8. {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"}],
  9. "functions": [
  10. {
  11. "name": "get_current_weather",
  12. "description": "获得指定地点的天气",
  13. "parameters": {
  14. "type": "object",
  15. "properties": {
  16. "location": {
  17. "type": "string",
  18. "description": "省,市名,例如:河北省,石家庄"
  19. },
  20. "unit": {
  21. "type": "string",
  22. "enum": ["摄氏度", "华氏度"]
  23. }
  24. },
  25. "required": ["location"]
  26. }
  27. },
  28. {
  29. "name": "get_current_price",
  30. "description": "获得指定公司的股价",
  31. "parameters": {
  32. "type": "object",
  33. "properties": {
  34. "company": {
  35. "type": "string",
  36. "description": "公司名,例如:腾讯,阿里巴巴"
  37. },
  38. "exchange": {
  39. "type": "string",
  40. "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
  41. }
  42. },
  43. "required": ["company", "exchange"]
  44. },
  45. "responses": {
  46. "type": "object",
  47. "properties": {
  48. "price": {
  49. "type": "int",
  50. "description": "当日股票价格"
  51. },
  52. "unit": {
  53. "type": "string",
  54. "enum": ["人民币", "美元","港币"],
  55. "description": "股票价格货币类型"
  56. },
  57. "change": {
  58. "type": "string",
  59. "description": "当日股票价格变化,如下跌3%,上涨0.5%"
  60. }
  61. }
  62. }
  63. }
  64. ],
  65. "stream":true
  66. }' | iconv -f utf-8 -t utf-8
第二次响应 json
  1. HTTP/1.1 200 OK
  2. Date: Mon, 12 Apr 2021 06:27:55 GMT
  3. Content-Type: text/event-stream;charset=utf-8
  4. Cache-Control: no-cache
  5. Statement: AI-generated
  6. data: {"id":"as-kf6e9thk0f","object":"chat.completion","created":1693450180,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"上海市今天天气是:","need_clear_history":false,"usage":{"prompt_tokens":26,"completion_tokens":8,"total_tokens":34}}
  7. data: {"id":"as-kf6e9thk0f","object":"chat.completion","created":1693450180,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"气温25摄氏度,晴朗。","need_clear_history":false,"usage":{"prompt_tokens":26,"completion_tokens":8,"total_tokens":42}}
  8. data: {"id":"as-kf6e9thk0f","object":"chat.completion","created":1693450180,"sentence_id":2,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"usage":{"prompt_tokens":26,"completion_tokens":0,"total_tokens":42}}

function call示例(多轮)

第一次请求
  • Bash
  1. # 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
  2. curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
  3. # 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
  4. curl -XPOST https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=[步骤一调用接口获取的access_token] -d '{
  5. "messages": [
  6. {
  7. "role": "user",
  8. "content": "上海市今天天气如何?"
  9. },
  10. {
  11. "role": "assistant",
  12. "content": null,
  13. "function_call": {
  14. "name": "get_current_weather",
  15. "arguments": "{ \"location\": \"上海市\"}"
  16. }
  17. },
  18. {
  19. "role": "function",
  20. "name": "get_current_weather",
  21. "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"
  22. },
  23. {
  24. "role": "assistant",
  25. "content": "上海市今天天气是:气温25摄氏度,晴朗。"
  26. },
  27. {
  28. "role": "user",
  29. "content": "北京市今天天气如何?"
  30. }
  31. ],
  32. "functions": [
  33. {
  34. "name": "get_current_weather",
  35. "description": "获得指定地点的天气",
  36. "parameters": {
  37. "type": "object",
  38. "properties": {
  39. "location": {
  40. "type": "string",
  41. "description": "省,市名,例如:河北省,石家庄"
  42. },
  43. "unit": {
  44. "type": "string",
  45. "enum": ["摄氏度", "华氏度"]
  46. }
  47. },
  48. "required": ["location"]
  49. }
  50. },
  51. {
  52. "name": "get_current_price",
  53. "description": "获得指定公司的股价",
  54. "parameters": {
  55. "type": "object",
  56. "properties": {
  57. "company": {
  58. "type": "string",
  59. "description": "公司名,例如:腾讯,阿里巴巴"
  60. },
  61. "exchange": {
  62. "type": "string",
  63. "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
  64. }
  65. },
  66. "required": ["company", "exchange"]
  67. },
  68. "responses": {
  69. "type": "object",
  70. "properties": {
  71. "price": {
  72. "type": "int",
  73. "description": "当日股票价格"
  74. },
  75. "unit": {
  76. "type": "string",
  77. "enum": ["人民币", "美元","港币"],
  78. "description": "股票价格货币类型"
  79. },
  80. "change": {
  81. "type": "string",
  82. "description": "当日股票价格变化,如下跌3%,上涨0.5%"
  83. }
  84. }
  85. },
  86. "examples": [
  87. {"role":"user","content":"What is the weather like in Boston?"},
  88. {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}},
  89. {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": \"25\", \"unit\": \"centigrade\", \"description\": \"cloud\"}"}
  90. ]
  91. }
  92. ],
  93. "stream":true,
  94. "tool_choice": {
  95. "type": "function",
  96. "function": {
  97. "name": "get_current_weather"
  98. }
  99. }
  100. }' | iconv -f utf-8 -t utf-8
第一次响应
  • json
data: {"id":"as-cp6rrapzdp","object":"chat.completion","created":1701421831,"sentence_id":0,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"function_call":{"name":"get_current_weather","thoughts":"用户询问了北京市今天的天气,我需要使用get_current_weather工具来获取相关信息。","arguments":"{\"location\":\"北京市\"}"},"finish_reason":"function_call","usage":{"prompt_tokens":43,"completion_tokens":0,"total_tokens":43}}
函数调用
  • Bash
  1. curl -XPOST http://0.0.0.0:80/get_current_weather -d '{
  2. "unit": "摄氏度",
  3. "location": "北京市"
  4. }' | iconv -f utf-8 -t utf-8
函数响应
  • json
  1. {
  2. "temperature": "-1",
  3. "unit": "摄氏度",
  4. "description": "大雪"
  5. }
第二次请求

​​​​​Bash 

  1. # 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
  2. curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
  3. # 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
  4. curl -XPOST https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-preview?access_token=[步骤一调用接口获取的access_token] -d '{
  5. "messages": [
  6. {
  7. "role": "user",
  8. "content": "上海市今天天气如何?"
  9. },
  10. {
  11. "role": "assistant",
  12. "content": null,
  13. "function_call": {
  14. "name": "get_current_weather",
  15. "arguments": "{ \"location\": \"上海市\"}"
  16. }
  17. },
  18. {
  19. "role": "function",
  20. "name": "get_current_weather",
  21. "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"
  22. },
  23. {
  24. "role": "assistant",
  25. "content": "上海市今天天气是:气温25摄氏度,晴朗。"
  26. },
  27. {
  28. "role": "user",
  29. "content": "北京市今天天气如何?"
  30. },
  31. {
  32. "role": "assistant",
  33. "content": null,
  34. "function_call": {
  35. "name": "get_current_weather",
  36. "arguments": "{ \"location\": \"北京市\"}"
  37. }
  38. },
  39. {
  40. "role": "function",
  41. "name": "get_current_weather",
  42. "content": "{\"temperature\": \"-1\", \"unit\": \"摄氏度\", \"description\": \"大雪\"}"
  43. }
  44. ],
  45. "functions": [
  46. {
  47. "name": "get_current_weather",
  48. "description": "获得指定地点的天气",
  49. "parameters": {
  50. "type": "object",
  51. "properties": {
  52. "location": {
  53. "type": "string",
  54. "description": "省,市名,例如:河北省,石家庄"
  55. },
  56. "unit": {
  57. "type": "string",
  58. "enum": ["摄氏度", "华氏度"]
  59. }
  60. },
  61. "required": ["location"]
  62. }
  63. },
  64. {
  65. "name": "get_current_price",
  66. "description": "获得指定公司的股价",
  67. "parameters": {
  68. "type": "object",
  69. "properties": {
  70. "company": {
  71. "type": "string",
  72. "description": "公司名,例如:腾讯,阿里巴巴"
  73. },
  74. "exchange": {
  75. "type": "string",
  76. "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
  77. }
  78. },
  79. "required": ["company", "exchange"]
  80. },
  81. "responses": {
  82. "type": "object",
  83. "properties": {
  84. "price": {
  85. "type": "int",
  86. "description": "当日股票价格"
  87. },
  88. "unit": {
  89. "type": "string",
  90. "enum": ["人民币", "美元","港币"],
  91. "description": "股票价格货币类型"
  92. },
  93. "change": {
  94. "type": "string",
  95. "description": "当日股票价格变化,如下跌3%,上涨0.5%"
  96. }
  97. }
  98. },
  99. "examples": [
  100. [
  101. {"role":"user","content":"What is the weather like in Boston?"},
  102. {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}}
  103. ],
  104. [
  105. {"role":"user","content":"你的名字是什么?"},
  106. {"role": "assistant", "content": null, "function_call": {"name": "", "arguments": "{}", "thoughts":"我无需调用任何工具"}}
  107. ]
  108. ]
  109. }
  110. ],
  111. "stream":true,
  112. "tool_choice": {
  113. "type": "function",
  114. "function": {
  115. "name": "get_current_weather"
  116. }
  117. }
  118. }' | iconv -f utf-8 -t utf-8
第二次响应
  • json
  1. data: {"id":"as-jp2fqncxhk","object":"chat.completion","created":1701422332,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"根据天气预报,北京市","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":62,"completion_tokens":0,"total_tokens":62}}
  2. data: {"id":"as-jp2fqncxhk","object":"chat.completion","created":1701422333,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"今天天气是:气温-1摄氏度,大雪。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":62,"completion_tokens":0,"total_tokens":62}}
  3. data: {"id":"as-jp2fqncxhk","object":"chat.completion","created":1701422333,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"如果您需要了解更多天气信息或有其他问题,请随时告诉我。","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":62,"completion_tokens":0,"total_tokens":62}}
  4. data: {"id":"as-jp2fqncxhk","object":"chat.completion","created":1701422333,"sentence_id":3,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"finish_reason":"normal","usage":{"prompt_tokens":62,"completion_tokens":31,"total_tokens":93}}

错误码

如果请求错误,服务器返回的JSON文本包含以下参数。

名称描述
error_code错误码
error_msg错误描述信息,帮助理解和解决发生的错误

例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。

  1. {
  2. "error_code": 110,
  3. "error_msg": "Access token invalid or no longer valid"
  4. }

千帆大模型平台相关错误码,请查看错误码说明

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号