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


    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. }

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

  • 相关阅读:
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java找学互助系统52568
    GateWay实现负载均衡
    2022年10月总结 (距离激动人心的928已经过去一个多月了)
    【Jprofile 11.0 安装】
    10月25日,每日信息差
    服装界BOM的管理方式
    NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架
    C/C++ 让黑框暂停的几种方法
    【面试】pc寄存器题
    java代理模式教你中间商赚差价
  • 原文地址:https://blog.csdn.net/u012917925/article/details/137954421