ERNIE-3.5-8K-0205
注意:ERNIE-3.5-8k-0205模型接口已于2024年7月11日下线,下线后接口将停止服务,如您需要继续使用请切换至ERNIE-3.5-8K模型接口,请查看ERNIE-3.5-8K接口文档。
ERNIE 3.5是百度自研的旗舰级大规模⼤语⾔模型,覆盖海量中英文语料,具有强大的通用能力,可满足绝大部分对话问答、创作生成、插件应用场景要求;支持自动对接百度搜索插件,保障问答信息时效。ERNIE-3.5-8K-0205是模型的一个版本,支持5K tokens输入+2K tokens输出。本文介绍了相关API。
创建chat
调用本接口,发起一次对话请求。
注意事项
- 模型版本说明:-MMDD,表示带日期版本接口,会定期退役,退役下线前会通知用户。
- 本文API对应的token和字符数限制,请参考本文参数messages说明。
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205
请求方式: POST
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
messages | List(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 ![]() (4)message中的content总长度、functions和system字段总内容不能超过20000个字符,且不能超过5120 tokens |
functions | List(function) | 否 | 一个可触发函数的描述列表,说明: (1)支持的function数量无限制 (2)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20000个字符,且不能超过5120 tokens |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)默认0.8,范围 (0, 1.0],不能为0 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)默认0.8,取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)默认1.0,取值范围:[1.0, 2.0] |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false |
enable_system_memory | bool | 否 | 是否开启系统记忆,说明: (1)false:未开启,默认false (2)true:表示开启,开启后,system_memory_id字段必填 |
system_memory_id | string | 否 | 系统记忆ID,用于读取对应ID下的系统记忆,读取到的记忆文本内容会拼接message参与请求推理 |
system | string | 否 | 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明: (1)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20000个字符,且不能超过5120 tokens (2)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化 |
stop | List(string) | 否 | 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符 (2)最多4个元素 |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,默认false,表示不关闭 |
enable_citation | bool | 否 | 是否开启上角标返回,说明: (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍 (2)默认false,不开启 |
enable_trace | bool | 否 | 是否返回搜索溯源信息,说明: (1)如果开启,在触发了搜索增强的场景下,会返回搜索溯源信息search_info,search_info内容见响应参数介绍 (2)默认false,表示不返回 |
max_output_tokens | int | 否 | 指定模型最大输出token数,说明: (1)如果设置此参数,范围[2, 2048] (2)如果不设置此参数,最大输出token数为1024 |
response_format | string | 否 | 指定响应内容的格式,说明: (1)可选值: · json_object:以json格式返回,可能出现不满足效果情况 · text:以文本格式返回 (2)如果不填写参数response_format值,默认为text |
user_id | string | 否 | 表示最终用户的唯一标识符 |
tool_choice | tool_choice | 否 | 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 |
message说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,说明: (1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空 (2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | function_call | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
function说明
functions中function说明如下
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 函数名 |
description | string | 是 | 函数描述 |
parameters | object | 是 | 函数请求参数,说明: (1)JSON Schema 格式,参考JSON Schema描述 (2)如果函数没有请求参数,parameters值格式如下: {"type": "object","properties": {}} |
responses | object | 否 | 函数响应参数,JSON Schema 格式,参考JSON Schema描述 |
examples | List(example) | 否 | function调用的一些历史示例,说明: (1)可以提供正例(正常触发)和反例(无需触发)的example ·正例:从历史请求数据中获取 ·反例: 当role = user,不会触发请求的query 当role = assistant,有固定的格式。function_call的name为空,arguments是空对象:"{}",thought可以填固定的:"我不需要调用任何工具" (2)兼容之前的 List(example) 格式 |
example说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,说明: (1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空 (2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | function_call | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
function_call说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 触发的function名 |
arguments | string | 是 | 请求参数 |
thoughts | string | 否 | 模型思考过程 |
tool_choice说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
type | string | 是 | 指定工具类型,function |
function | function | 是 | 指定要使用的函数 |
function说明
tool_choice中function说明如下
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 指定要使用的函数名 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型 chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
is_truncated | bool | 当前生成的结果是否被截断 |
finish_reason | string | 输出内容标识,说明: · normal:输出内容完全由大模型生成,未触发截断、替换 · stop:输出结果命中入参stop中指定的字段后被截断 · length:达到了最大的token数,根据EB返回结果is_truncated来截断 · content_filter:输出内容被截断、兜底、替换为**等 · function_call:调用了funtion call功能 |
search_info | search_info | 搜索数据,当请求参数enable_citation或enable_trace为true,并且触发搜索时,会返回该字段 |
result | string | 对话返回结果 |
need_clear_history | bool | 表示用户输入是否存在安全风险,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 |
usage | usage | token统计信息 |
function_call | function_call | 由模型生成的函数调用,包含函数名称,和调用参数 |
search_info说明
名称 | 类型 | 描述 |
---|---|---|
search_results | List(search_result) | 搜索结果列表 |
search_result说明
名称 | 类型 | 描述 |
---|---|---|
index | int | 序号 |
url | string | 搜索结果URL |
title | string | 搜索结果标题 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
function_call说明
名称 | 类型 | 描述 |
---|---|---|
name | string | 触发的function名 |
thoughts | string | 模型思考过程 |
arguments | string | 请求参数 |
注意 :同步模式和流式模式,响应参数返回不同,详细内容参考示例描述。
- 同步模式下,响应参数为以上字段的完整json包。
- 流式模式下,各字段的响应参数为 data: {响应参数}。
请求示例(单轮)
以访问凭证access_token鉴权方式为例,说明如何调用API,示例如下。
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
6 "messages": [
7 {"role":"user","content":"你好"}
8 ]
9}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20def main():
21 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
22
23 payload = json.dumps({
24 "messages": [
25 {
26 "role": "user",
27 "content": "你好"
28 }
29 ]
30 })
31 headers = {
32 'Content-Type': 'application/json'
33 }
34
35 response = requests.request("POST", url, headers=headers, data=payload)
36
37 print(response.text)
38
39
40if __name__ == '__main__':
41 main()
响应示例(单轮)
1HTTP/1.1 200 OK
2Date: Thu, 23 Mar 2023 03:12:03 GMT
3Content-Type: application/json;charset=utf-8
4Statement: AI-generated
5
6{
7 "id": "as-bnbaffikkm",
8 "object": "chat.completion",
9 "created": 1709714449,
10 "result": "你好!请问有什么我可以帮助你的吗?无论是回答问题、提供建议,还是聊天交流,我都会尽力为你服务。请随时告诉我你的需求,我会尽快回复你。",
11 "is_truncated": false,
12 "need_clear_history": false,
13 "finish_reason": "normal",
14 "usage": {
15 "prompt_tokens": 1,
16 "completion_tokens": 36,
17 "total_tokens": 37
18 }
19}
请求示例(多轮)
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
6 "messages": [
7 {"role":"user","content":"你好"},
8 {"role":"assistant","content":"你好!请问有什么我可以帮助你的吗?无论是回答问题、提供建议,还是聊天交流,我都会尽力为你服务。请随时告诉我你的需求,我会尽快回复你。"},
9 {"role":"user","content": "我在上海,周末可以去哪里玩?"},
10 {"role":"assistant","content": "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\n\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。\n3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。\n4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。\n5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。\n\n这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。"},
11 {"role":"user","content": "上海有哪些美食"}
12 ]
13}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20
21def main():
22
23 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
24
25 payload = json.dumps({
26 "messages": [
27 {
28 "role": "user",
29 "content": "你好"
30 },
31 {
32 "role": "assistant",
33 "content": "你好!请问有什么我可以帮助你的吗?无论是回答问题、提供建议,还是聊天交流,我都会尽力为你服务。请随时告诉我你的需求,我会尽快回复你。"
34 },
35 {
36 "role": "user",
37 "content": "我在上海,周末可以去哪里玩?"
38 },
39 {
40 "role": "assistant",
41 "content": "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\n\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。\n3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。\n4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。\n5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。\n\n这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。"
42 },
43 {
44 "role": "user",
45 "content": "上海有哪些美食"
46 }
47 ]
48 })
49 headers = {
50 'Content-Type': 'application/json'
51 }
52
53 response = requests.request("POST", url, headers=headers, data=payload)
54
55 print(response.text)
56
57
58if __name__ == '__main__':
59 main()
响应示例(多轮)
1HTTP/1.1 200 OK
2Date: Mon, 12 Apr 2021 06:27:55 GMT
3Content-Type: application/json;charset=utf-8
4Statement: AI-generated
5
6{
7 "id": "as-mcq1zcnb9x",
8 "object": "chat.completion",
9 "created": 1709714578,
10 "result": "上海是一个美食之都,拥有许多著名的特色小吃和菜肴。以下是一些上海的美食推荐:\n\n1. 生煎包:生煎包是上海的特色小吃之一,是一种半发酵的面粉包,里面填充有猪肉、虾仁等馅料,底部煎得酥脆,口感香脆可口。\n\n2. 小笼包:小笼包是上海的另一种著名小吃,特点是皮薄馅嫩,汤汁丰富,味道鲜美。\n\n3. 蟹壳黄:蟹壳黄是一种传统的上海点心,外形像小螃蟹壳,因此得名。它的馅料有甜、咸两种口味,口感酥脆香甜。\n\n4. 白斩鸡:白斩鸡是上海的传统名菜之一,以鸡肉鲜嫩、味道清淡爽口而著名。\n\n5. 油条:油条是一种传统的中式早餐食品,上海人常常搭配豆浆一起食用。\n\n6. 粢饭糕:粢饭糕是一种传统的上海早餐食品,是用糯米饭制成的糕点,口感软糯香甜。\n\n7. 咸豆花:咸豆花是上海的特色小吃之一,是用豆浆制成的,口感细腻爽滑,搭配咸味调料食用。\n\n以上这些美食都是上海的代表性食品,当然还有许多其他的小吃和菜肴值得一试。",
11 "is_truncated": false,
12 "need_clear_history": false,
13 "finish_reason": "normal",
14 "usage": {
15 "prompt_tokens": 266,
16 "completion_tokens": 285,
17 "total_tokens": 551
18 }
19}
请求示例(流式)
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
6 "messages": [
7 {"role":"user", "content": "给我推荐一些自驾游路线"}
8 ],
9 "stream": true
10}'
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20
21def main():
22
23 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
24
25 payload = json.dumps({
26 "messages": [
27 {
28 "role": "user",
29 "content": "给我推荐一些自驾游路线"
30 }
31 ],
32 "stream": True
33 })
34 headers = {
35 'Content-Type': 'application/json'
36 }
37
38 response = requests.request("POST", url, headers=headers, data=payload, stream=True)
39
40 for line in response.iter_lines():
41 print(line.decode("UTF-8"))
42
43
44if __name__ == '__main__':
45 main()
响应示例(流式)
1HTTP/1.1 200 OK
2Date: Mon, 12 Apr 2021 06:27:55 GMT
3Content-Type: text/event-stream;charset=utf-8
4Cache-Control: no-cache
5Statement: AI-generated
6
7data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166793,"sentence_id":0,"is_end":false,is_truncated":false,"result":"以下是一些适合自驾游的路线推荐:\n\n1.","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":16,"total_tokens":27}}
8
9data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166794,"sentence_id":1,"is_end":false,is_truncated":false,"result":" 中国大陆最美的景观大道:川藏线,从成都出发,沿着川藏公路一路向西,经过稻城亚丁、理塘、巴塘、芒康等美景,最终到达拉萨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":50,"total_tokens":77}}
10
11data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166795,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"\n2. 丝绸之路:这是一条贯穿中国东西部的公路,从上海出发,经过西安、兰州、乌鲁木齐等城市,最终到达喀什。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":43,"total_tokens":120}}
12
13data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166796,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"沿途可以欣赏到中国北方和南方的不同景色。\n3. 西北大环线:从成都出发,经过都江堰、青城山、丹巴、塔公草原、新都桥等景点,最终到达西宁。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":56,"total_tokens":176}}
14
15data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166799,"sentence_id":4,"is_end":false,"is_truncated":false,"result":"这条路线可以领略到中国西北地区的壮美风光。\n4. 东北环线:从沈阳出发,经过长春、吉林、延吉等城市,最终到达哈尔滨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":48,"total_tokens":224}}
16
17data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166800,"sentence_id":5,"is_end":false,"is_truncated":false,"result":"沿途可以欣赏到中国东北地区的广阔草原和森林。\n5. 西南环线:从成都出发,经过雅安、康定、理塘、稻城亚丁等景点,最终到达香格里拉。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":54,"total_tokens":278}}
18
19data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166802,"sentence_id":6,"is_end":false,"is_truncated":false,"result":"这条路线可以领略到中国西南地区的高山峡谷和民族文化。\n6. 海南环线:从三亚出发,经过海口、文昌、万宁等城市,最终到达三亚。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":52,"total_tokens":330}}
20
21data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166803,"sentence_id":7,"is_end":false,"is_truncated":false,"result":"这条路线可以欣赏到中国南方的海岸线和热带雨林。\n7. 滇藏线:从昆明出发,经过大理、丽江、香格里拉等景点,最终到达西藏拉萨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":52,"total_tokens":382}}
22
23data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166804,"sentence_id":8,"is_end":true,"is_truncated":false,"result":"这条路线可以领略到中国西南地区和西藏地区的自然风光和人文景观。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":30,"total_tokens":412}}
function call示例(单轮)
- 第一次请求
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5
6curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
7 "messages": [
8 {"role":"user","content":"上海市今天的天气"}
9 ],
10 "functions": [
11 {
12 "name": "get_current_weather",
13 "description": "获得指定地点的天气",
14 "parameters": {
15 "type": "object",
16 "properties": {
17 "location": {
18 "type": "string",
19 "description": "省,市名,例如:河北省,石家庄"
20 },
21 "unit": {
22 "type": "string",
23 "enum": ["摄氏度", "华氏度"]
24 }
25 },
26 "required": ["location"]
27 }
28 },
29 {
30 "name": "get_current_price",
31 "description": "获得指定公司的股价",
32 "parameters": {
33 "type": "object",
34 "properties": {
35 "company": {
36 "type": "string",
37 "description": "公司名,例如:腾讯,阿里巴巴"
38 },
39 "exchange": {
40 "type": "string",
41 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
42 }
43 },
44 "required": ["company", "exchange"]
45 },
46 "responses": {
47 "type": "object",
48 "properties": {
49 "price": {
50 "type": "int",
51 "description": "当日股票价格"
52 },
53 "unit": {
54 "type": "string",
55 "enum": ["人民币", "美元","港币"],
56 "description": "股票价格货币类型"
57 },
58 "change": {
59 "type": "string",
60 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
61 }
62 }
63 },
64 "examples": [
65 [
66 {"role":"user","content":"What is the weather like in Boston?"},
67 {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}}
68 ],
69 [
70 {"role":"user","content":"你的名字是什么?"},
71 {"role": "assistant", "content": null, "function_call": {"name": "", "arguments": "{}", "thoughts":"我无需调用任何工具"}}
72 ]
73 ]
74 }
75 ],
76 "stream":true,
77 "tool_choice": {
78 "type": "function",
79 "function": {
80 "name": "get_current_weather"
81 }
82 }
83}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20def main():
21 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
22
23 payload = json.dumps({
24 "messages": [
25 {
26 "role": "user",
27 "content": "你好"
28 }
29 ]
30 })
31 headers = {
32 'Content-Type': 'application/json'
33 }
34
35 response = requests.request("POST", url, headers=headers, data=payload)
36
37 print(response.text)
38
39
40if __name__ == '__main__':
41 main()
- 第一次响应
1data: {"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}}
- 函数调用
1curl -X POST 'http://0.0.0.0:80/get_current_weather' -d '{
2 "unit": "摄氏度",
3 "location": "上海市"
4}' | iconv -f utf-8 -t utf-8
- 函数响应
1{
2 "temperature": "25",
3 "unit": "摄氏度",
4 "description": "晴朗"
5}
- 第二次请求
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5
6curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
7 "messages": [
8 {"role":"user","content":"上海市今天天气如何?"},
9 {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"上海市\"}"}},
10 {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"}],
11 "functions": [
12 {
13 "name": "get_current_weather",
14 "description": "获得指定地点的天气",
15 "parameters": {
16 "type": "object",
17 "properties": {
18 "location": {
19 "type": "string",
20 "description": "省,市名,例如:河北省,石家庄"
21 },
22 "unit": {
23 "type": "string",
24 "enum": ["摄氏度", "华氏度"]
25 }
26 },
27 "required": ["location"]
28 }
29 },
30 {
31 "name": "get_current_price",
32 "description": "获得指定公司的股价",
33 "parameters": {
34 "type": "object",
35 "properties": {
36 "company": {
37 "type": "string",
38 "description": "公司名,例如:腾讯,阿里巴巴"
39 },
40 "exchange": {
41 "type": "string",
42 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
43 }
44 },
45 "required": ["company", "exchange"]
46 },
47 "responses": {
48 "type": "object",
49 "properties": {
50 "price": {
51 "type": "int",
52 "description": "当日股票价格"
53 },
54 "unit": {
55 "type": "string",
56 "enum": ["人民币", "美元","港币"],
57 "description": "股票价格货币类型"
58 },
59 "change": {
60 "type": "string",
61 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
62 }
63 }
64 }
65 }
66 ],
67"stream":true
68}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20def main():
21 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
22
23 payload = json.dumps({
24 "messages": [
25 {"role":"user","content":"上海市今天天气如何?"},
26 {"role": "assistant", "content": None, "function_call": {"name": "get_current_weather", "arguments": "{ "location": "上海市"}"}},
27 {"role": "function", "name": "get_current_weather", "content": "{"temperature": "25", "unit": "摄氏度", "description": "晴朗"}"}],
28 "functions": [
29 {
30 "name": "get_current_weather",
31 "description": "获得指定地点的天气",
32 "parameters": {
33 "type": "object",
34 "properties": {
35 "location": {
36 "type": "string",
37 "description": "省,市名,例如:河北省,石家庄"
38 },
39 "unit": {
40 "type": "string",
41 "enum": ["摄氏度", "华氏度"]
42 }
43 },
44 "required": ["location"]
45 }
46 },
47 {
48 "name": "get_current_price",
49 "description": "获得指定公司的股价",
50 "parameters": {
51 "type": "object",
52 "properties": {
53 "company": {
54 "type": "string",
55 "description": "公司名,例如:腾讯,阿里巴巴"
56 },
57 "exchange": {
58 "type": "string",
59 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
60 }
61 },
62 "required": ["company", "exchange"]
63 },
64 "responses": {
65 "type": "object",
66 "properties": {
67 "price": {
68 "type": "int",
69 "description": "当日股票价格"
70 },
71 "unit": {
72 "type": "string",
73 "enum": ["人民币", "美元","港币"],
74 "description": "股票价格货币类型"
75 },
76 "change": {
77 "type": "string",
78 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
79 }
80 }
81 }
82 }
83 ],
84 "stream":True
85 })
86 headers = {
87 'Content-Type': 'application/json'
88 }
89
90 response = requests.request("POST", url, headers=headers, data=payload)
91
92 print(response.text)
93
94
95if __name__ == '__main__':
96 main()
- 第二次响应
1data: {"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}}
2
3data: {"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}}
4
5data: {"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示例(多轮)
- 第一次请求
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5
6curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
7 "messages": [
8 {
9 "role": "user",
10 "content": "上海市今天天气如何?"
11 },
12 {
13 "role": "assistant",
14 "content": null,
15 "function_call": {
16 "name": "get_current_weather",
17 "arguments": "{ \"location\": \"上海市\"}"
18 }
19 },
20 {
21 "role": "function",
22 "name": "get_current_weather",
23 "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"
24 },
25 {
26 "role": "assistant",
27 "content": "上海市今天天气是:气温25摄氏度,晴朗。"
28 },
29 {
30 "role": "user",
31 "content": "北京市今天天气如何?"
32 }
33 ],
34 "functions": [
35 {
36 "name": "get_current_weather",
37 "description": "获得指定地点的天气",
38 "parameters": {
39 "type": "object",
40 "properties": {
41 "location": {
42 "type": "string",
43 "description": "省,市名,例如:河北省,石家庄"
44 },
45 "unit": {
46 "type": "string",
47 "enum": ["摄氏度", "华氏度"]
48 }
49 },
50 "required": ["location"]
51 }
52 },
53 {
54 "name": "get_current_price",
55 "description": "获得指定公司的股价",
56 "parameters": {
57 "type": "object",
58 "properties": {
59 "company": {
60 "type": "string",
61 "description": "公司名,例如:腾讯,阿里巴巴"
62 },
63 "exchange": {
64 "type": "string",
65 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
66 }
67 },
68 "required": ["company", "exchange"]
69 },
70 "responses": {
71 "type": "object",
72 "properties": {
73 "price": {
74 "type": "int",
75 "description": "当日股票价格"
76 },
77 "unit": {
78 "type": "string",
79 "enum": ["人民币", "美元","港币"],
80 "description": "股票价格货币类型"
81 },
82 "change": {
83 "type": "string",
84 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
85 }
86 }
87 },
88 "examples": [
89 [
90 {"role":"user","content":"What is the weather like in Boston?"},
91 {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}}
92 ],
93 [
94 {"role":"user","content":"你的名字是什么?"},
95 {"role": "assistant", "content": null, "function_call": {"name": "", "arguments": "{}", "thoughts":"我无需调用任何工具"}}
96 ]
97 ]
98 }
99 ],
100 "stream":true,
101 "tool_choice": {
102 "type": "function",
103 "function": {
104 "name": "get_current_weather"
105 }
106 }
107}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20def main():
21 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
22
23 payload = json.dumps({
24 "messages": [
25 {
26 "role": "user",
27 "content": "上海市今天天气如何?"
28 },
29 {
30 "role": "assistant",
31 "content": None,
32 "function_call": {
33 "name": "get_current_weather",
34 "arguments": "{ "location": "上海市"}"
35 }
36 },
37 {
38 "role": "function",
39 "name": "get_current_weather",
40 "content": "{"temperature": "25", "unit": "摄氏度", "description": "晴朗"}"
41 },
42 {
43 "role": "assistant",
44 "content": "上海市今天天气是:气温25摄氏度,晴朗。"
45 },
46 {
47 "role": "user",
48 "content": "北京市今天天气如何?"
49 }
50 ],
51 "functions": [
52 {
53 "name": "get_current_weather",
54 "description": "获得指定地点的天气",
55 "parameters": {
56 "type": "object",
57 "properties": {
58 "location": {
59 "type": "string",
60 "description": "省,市名,例如:河北省,石家庄"
61 },
62 "unit": {
63 "type": "string",
64 "enum": ["摄氏度", "华氏度"]
65 }
66 },
67 "required": ["location"]
68 }
69 },
70 {
71 "name": "get_current_price",
72 "description": "获得指定公司的股价",
73 "parameters": {
74 "type": "object",
75 "properties": {
76 "company": {
77 "type": "string",
78 "description": "公司名,例如:腾讯,阿里巴巴"
79 },
80 "exchange": {
81 "type": "string",
82 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
83 }
84 },
85 "required": ["company", "exchange"]
86 },
87 "responses": {
88 "type": "object",
89 "properties": {
90 "price": {
91 "type": "int",
92 "description": "当日股票价格"
93 },
94 "unit": {
95 "type": "string",
96 "enum": ["人民币", "美元","港币"],
97 "description": "股票价格货币类型"
98 },
99 "change": {
100 "type": "string",
101 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
102 }
103 }
104 },
105 "examples": [
106 {"role":"user","content":"What is the weather like in Boston?"},
107 {"role": "assistant", "content": None, "function_call": {"name": "get_current_weather", "arguments": "{ "location": "Boston"}"}},
108 {"role": "function", "name": "get_current_weather", "content": "{"temperature": "25", "unit": "centigrade", "description": "cloud"}"}
109 ]
110 }
111 ],
112 "stream":True,
113 "tool_choice": {
114 "type": "function",
115 "function": {
116 "name": "get_current_weather"
117 }
118 }
119 })
120 headers = {
121 'Content-Type': 'application/json'
122 }
123
124 response = requests.request("POST", url, headers=headers, data=payload)
125
126 print(response.text)
127
128
129if __name__ == '__main__':
130 main()
- 第一次响应
1data: {"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}}
- 函数调用
1curl -XPOST http://0.0.0.0:80/get_current_weather -d '{
2 "unit": "摄氏度",
3 "location": "北京市"
4}' | iconv -f utf-8 -t utf-8
- 函数响应
1{
2 "temperature": "-1",
3 "unit": "摄氏度",
4 "description": "大雪"
5}
- 第二次请求
1# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
5
6curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=[步骤一调用接口获取的access_token]' -d '{
7 "messages": [
8 {
9 "role": "user",
10 "content": "上海市今天天气如何?"
11 },
12 {
13 "role": "assistant",
14 "content": null,
15 "function_call": {
16 "name": "get_current_weather",
17 "arguments": "{ \"location\": \"上海市\"}"
18 }
19 },
20 {
21 "role": "function",
22 "name": "get_current_weather",
23 "content": "{\"temperature\": \"25\", \"unit\": \"摄氏度\", \"description\": \"晴朗\"}"
24 },
25 {
26 "role": "assistant",
27 "content": "上海市今天天气是:气温25摄氏度,晴朗。"
28 },
29 {
30 "role": "user",
31 "content": "北京市今天天气如何?"
32 },
33 {
34 "role": "assistant",
35 "content": null,
36 "function_call": {
37 "name": "get_current_weather",
38 "arguments": "{ \"location\": \"北京市\"}"
39 }
40 },
41 {
42 "role": "function",
43 "name": "get_current_weather",
44 "content": "{\"temperature\": \"-1\", \"unit\": \"摄氏度\", \"description\": \"大雪\"}"
45 }
46 ],
47 "functions": [
48 {
49 "name": "get_current_weather",
50 "description": "获得指定地点的天气",
51 "parameters": {
52 "type": "object",
53 "properties": {
54 "location": {
55 "type": "string",
56 "description": "省,市名,例如:河北省,石家庄"
57 },
58 "unit": {
59 "type": "string",
60 "enum": ["摄氏度", "华氏度"]
61 }
62 },
63 "required": ["location"]
64 }
65 },
66 {
67 "name": "get_current_price",
68 "description": "获得指定公司的股价",
69 "parameters": {
70 "type": "object",
71 "properties": {
72 "company": {
73 "type": "string",
74 "description": "公司名,例如:腾讯,阿里巴巴"
75 },
76 "exchange": {
77 "type": "string",
78 "enum": ["纳斯达克", "上海证券交易所","香港证券交易所"]
79 }
80 },
81 "required": ["company", "exchange"]
82 },
83 "responses": {
84 "type": "object",
85 "properties": {
86 "price": {
87 "type": "int",
88 "description": "当日股票价格"
89 },
90 "unit": {
91 "type": "string",
92 "enum": ["人民币", "美元","港币"],
93 "description": "股票价格货币类型"
94 },
95 "change": {
96 "type": "string",
97 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
98 }
99 }
100 },
101 "examples": [
102 [
103 {"role":"user","content":"What is the weather like in Boston?"},
104 {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston\"}"}}
105 ],
106 [
107 {"role":"user","content":"你的名字是什么?"},
108 {"role": "assistant", "content": null, "function_call": {"name": "", "arguments": "{}", "thoughts":"我无需调用任何工具"}}
109 ]
110 ]
111 }
112 ],
113 "stream":true,
114 "tool_choice": {
115 "type": "function",
116 "function": {
117 "name": "get_current_weather"
118 }
119 }
120}' | iconv -f utf-8 -t utf-8
1import requests
2import json
3
4def get_access_token():
5 """
6 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7 """
8
9 url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10
11 payload = json.dumps("")
12 headers = {
13 'Content-Type': 'application/json',
14 'Accept': 'application/json'
15 }
16
17 response = requests.request("POST", url, headers=headers, data=payload)
18 return response.json().get("access_token")
19
20def main():
21 url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-8k-0205?access_token=" + get_access_token()
22
23 payload = json.dumps({
24 "messages": [
25 {
26 "role": "user",
27 "content": "上海市今天天气如何?"
28 },
29 {
30 "role": "assistant",
31 "content": None,
32 "function_call": {
33 "name": "get_current_weather",
34 "arguments": "{ "location": "上海市"}"
35 }
36 },
37 {
38 "role": "function",
39 "name": "get_current_weather",
40 "content": "{"temperature": "25", "unit": "摄氏度", "description": "晴朗"}"
41 },
42 {
43 "role": "assistant",
44 "content": "上海市今天天气是:气温25摄氏度,晴朗。"
45 },
46 {
47 "role": "user",
48 "content": "北京市今天天气如何?"
49 },
50 {
51 "role": "assistant",
52 "content": None,
53 "function_call": {
54 "name": "get_current_weather",
55 "arguments": "{ "location": "北京市"}"
56 }
57 },
58 {
59 "role": "function",
60 "name": "get_current_weather",
61 "content": "{"temperature": "-1", "unit": "摄氏度", "description": "大雪"}"
62 }
63 ],
64 "functions": [
65 {
66 "name": "get_current_weather",
67 "description": "获得指定地点的天气",
68 "parameters": {
69 "type": "object",
70 "properties": {
71 "location": {
72 "type": "string",
73 "description": "省,市名,例如:河北省,石家庄"
74 },
75 "unit": {
76 "type": "string",
77 "enum": ["摄氏度", "华氏度"]
78 }
79 },
80 "required": ["location"]
81 }
82 },
83 {
84 "name": "get_current_price",
85 "description": "获得指定公司的股价",
86 "parameters": {
87 "type": "object",
88 "properties": {
89 "company": {
90 "type": "string",
91 "description": "公司名,例如:腾讯,阿里巴巴"
92 },
93 "exchange": {
94 "type": "string",
95 "enum": ["纳斯达克", "上海证券交易所", "香港证券交易所"]
96 }
97 },
98 "required": ["company", "exchange"]
99 },
100 "responses": {
101 "type": "object",
102 "properties": {
103 "price": {
104 "type": "int",
105 "description": "当日股票价格"
106 },
107 "unit": {
108 "type": "string",
109 "enum": ["人民币", "美元", "港币"],
110 "description": "股票价格货币类型"
111 },
112 "change": {
113 "type": "string",
114 "description": "当日股票价格变化,如下跌3%,上涨0.5%"
115 }
116 }
117 },
118 "examples": [
119 [
120 {"role": "user", "content": "What is the weather like in Boston?"},
121 {"role": "assistant", "content": None, "function_call": {
122 "name": "get_current_weather", "arguments": "{ "location": "Boston"}"}}
123 ],
124 [
125 {"role": "user", "content": "你的名字是什么?"},
126 {"role": "assistant", "content": None, "function_call": {
127 "name": "", "arguments": "{}", "thoughts": "我无需调用任何工具"}}
128 ]
129 ]
130 }
131 ],
132 "stream": True,
133 "tool_choice": {
134 "type": "function",
135 "function": {
136 "name": "get_current_weather"
137 }
138 }
139 })
140 headers = {
141 'Content-Type': 'application/json'
142 }
143
144 response = requests.request("POST", url, headers=headers, data=payload)
145
146 print(response.text)
147
148
149if __name__ == '__main__':
150 main()
- 第二次响应
1data: {"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
3data: {"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}}
4
5data: {"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}}
6
7data: {"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}}
SDK调用
使用说明
本文API支持通过Python、Go、Java和Node.js SDK调用,调用流程请参考SDK安装及使用流程。
调用示例(单轮)
使用model
字段,指定平台支持预置服务的模型,调用示例如下。
1import os
2import qianfan
3
4#【推荐】使用安全认证AK/SK鉴权,通过环境变量初始化认证信息
5# 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
6os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
7os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
8
9chat_comp = qianfan.ChatCompletion()
10
11# 指定特定模型
12resp = chat_comp.do(model="ERNIE-3.5-8K-0205", messages=[{
13 "role": "user",
14 "content": "你好"
15}])
16
17print(resp["body"])
1package main
2
3import (
4 "context"
5 "fmt"
6 "os"
7
8 "github.com/baidubce/bce-qianfan-sdk/go/qianfan"
9)
10
11func main() {
12 // 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
13 os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
14 os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
15
16 // 指定特定模型
17 chat := qianfan.NewChatCompletion(
18 qianfan.WithModel("ERNIE-3.5-8K-0205"),
19 )
20
21 resp, _ := chat.Do(
22 context.TODO(),
23 &qianfan.ChatCompletionRequest{
24 Messages: []qianfan.ChatCompletionMessage{
25 qianfan.ChatCompletionUserMessage("你好"),
26 },
27 },
28 )
29 fmt.Println(resp.Result)
30}
1import com.baidubce.qianfan.Qianfan;
2import com.baidubce.qianfan.model.chat.ChatResponse;
3
4public class Demo {
5 public static void main(String[] args) {
6 // 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
7 Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
8
9 // 指定模型
10 ChatResponse resp = qianfan.chatCompletion()
11 .model("ERNIE-3.5-8K-0205")
12 .addMessage("user", "你好")
13 .execute();
14 System.out.println(resp.getResult());
15 }
16}
1import {ChatCompletion, setEnvVariable} from "@baiducloud/qianfan";
2
3// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
4setEnvVariable('QIANFAN_ACCESS_KEY','your_iam_ak');
5setEnvVariable('QIANFAN_SECRET_KEY','your_iam_sk');
6
7const client = new ChatCompletion();
8async function main() {
9 const resp = await client.chat({
10 messages: [
11 {
12 role: 'user',
13 content: '你好',
14 },
15 ],
16 }, 'ERNIE-3.5-8K-0205');
17 console.log(resp);
18}
19
20main();
返回示例(单轮)
1{
2 'id': 'as-75q7q2i2tm',
3 'object': 'chat.completion',
4 'created': 1719051683,
5 'result': '你好,请问有什么我可以帮助你的吗?无论你需要什么帮助,我都会尽力回答你的问题或提供帮助。',
6 'is_truncated': False,
7 'need_clear_history': False,
8 'finish_reason': 'normal',
9 'usage': {'prompt_tokens': 1, 'completion_tokens': 21, 'total_tokens': 22}
10}
1你好,请问有什么我可以帮助你的吗?无论是生活问题还是知识查询,我都会尽力为你提供帮助。
1你好!请问有什么我可以帮助你的吗?无论是关于生活、工作、学习还是其他方面,都可以随时告诉我。
1{
2 headers: {...},
3 id: 'as-vbth613hw7',
4 object: 'chat.completion',
5 created: 1719214694,
6 result: "你好!有什么我可以帮助你的吗?无论你是需要了解天气、查询知识,还是有其他任何问题,我都会尽力为你提供帮助。",
7 is_truncated: false,
8 need_clear_history: false,
9 finish_reason: 'normal',
10 usage: { prompt_tokens: 1, completion_tokens: 26, total_tokens: 27 }
11}
调用示例(多轮)
1import os
2import qianfan
3
4#通过环境变量初始化认证信息
5# 【推荐】使用安全认证AK/SK鉴权
6# 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
7os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
8os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
9
10chat_comp = qianfan.ChatCompletion()
11
12# 多轮对话
13resp = chat_comp.do(model="ERNIE-3.5-8K-0205", messages=[{
14 "role": "user",
15 "content": "你好"
16},
17{
18 "role": "assistant",
19 "content": "你好,请问有什么我可以帮助你的吗?无论你需要什么帮助,我都会尽力回答你的问题或提供帮助。"
20},
21{
22 "role": "user",
23 "content": "北京有哪些美食"
24},
25])
26print(resp["body"])
1package main
2
3import (
4 "context"
5 "fmt"
6 "os"
7
8 "github.com/baidubce/bce-qianfan-sdk/go/qianfan"
9)
10
11func main() {
12 // 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
13 os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
14 os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
15
16 // 多轮对话
17 chat := qianfan.NewChatCompletion(
18 qianfan.WithModel("ERNIE-3.5-8K-0205"),
19 )
20 resp, _ := chat.Do(
21 context.TODO(),
22 &qianfan.ChatCompletionRequest{
23 Messages: []qianfan.ChatCompletionMessage{
24 qianfan.ChatCompletionUserMessage("你好"),
25 qianfan.ChatCompletionAssistantMessage("你好,请问有什么我可以帮助你的吗?无论你需要什么帮助,我都会尽力回答你的问题或提供帮助。"),
26 qianfan.ChatCompletionUserMessage("我在上海,周末可以去哪里玩?"),
27 qianfan.ChatCompletionAssistantMessage("上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\n\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。\n3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。\n4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。\n5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。\n\n这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。"),
28 qianfan.ChatCompletionUserMessage("简单介绍下上海的旅游景点"),
29 },
30 },
31 )
32 fmt.Println(resp.Result)
33}
1import com.baidubce.qianfan.Qianfan;
2import com.baidubce.qianfan.model.chat.ChatResponse;
3
4public class Demo {
5 public static void main(String[] args) {
6 // 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
7 Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
8
9 // 多轮对话
10 ChatResponse resp = qianfan.chatCompletion()
11 .model("ERNIE-3.5-8K-0205")
12 .addMessage("user", "你好")
13 .addMessage("assistant", "你好!请问有什么我可以帮助你的吗?无论是关于生活、工作、学习还是其他方面,都可以随时告诉我。")
14 .addMessage("user", "我在上海,周末可以去哪里玩?")
15 .addMessage("assistant", "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\\n\\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。\\n3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。\\n4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。\\n5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。\\n\\n这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。")
16 .addMessage("user", "简单介绍下上海的旅游景点")
17 System.out.println(resp.getResult());
18 }
19}
1import {ChatCompletion, setEnvVariable} from "@baiducloud/qianfan";
2
3// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
4setEnvVariable('QIANFAN_ACCESS_KEY','your_iam_ak');
5setEnvVariable('QIANFAN_SECRET_KEY','your_iam_sk');
6
7const client = new ChatCompletion();
8async function main() {
9 const resp = await client.chat({
10 messages: [
11 {
12 role: 'user',
13 content: '你好!',
14 },
15 {
16 role: "assistant",
17 content: "你好,请问有什么我可以帮助你的吗?无论你需要什么帮助,我都会尽力回答你的问题或提供帮助。"
18 },
19 {
20 role: "user",
21 "content": "我在上海,周末可以去哪里玩?"
22 },
23 ],
24 },'ERNIE-3.5-8K-0205');
25 console.log(resp);
26}
27
28main();
返回示例(多轮)
1{
2 'id': 'as-w1kfv3j5vf',
3 'object': 'chat.completion',
4 'created': 1719051799,
5 'result': '北京作为中国的首都,拥有丰富的美食文化,其美食种类繁多,独具特色。以下是一些北京的著名美食:\n\n1. **北京烤鸭**:作为北京的标志性美食,北京烤鸭以其色泽红润、肉质细嫩、味道醇厚而闻名。它采用优质的北京填鸭为原料,经过独特的烤制工艺,使鸭皮酥脆、肉质鲜嫩。\n2. **炸酱面**:炸酱面是北京的传统面食之一,由面条、炸酱、黄瓜丝、豆芽等配料组成。炸酱是由黄豆酱、甜面酱等炒制而成,味道鲜美,搭配面条食用,口感丰富。\n3. **豆汁儿焦圈**:豆汁儿是北京的传统小吃,由黄豆发酵而成,具有独特的酸味。焦圈则是一种油炸面食,形状类似圆圈,色泽金黄,口感酥脆。豆汁儿和焦圈是许多老北京人的早餐标配。\n4. **驴打滚**:驴打滚是一种用糯米制成的传统小吃,其外形滚圆,口感软糯,外层粘满黄豆面,内部包裹着豆沙馅或红糖馅,味道香甜可口。\n5. **艾窝窝**:艾窝窝是北京的传统风味小吃,以糯米粉为主要原料制成,外形似小窝头,口感软糯,内馅为白糖、桂花等,香甜可口,常作为节日食品或馈赠亲友的礼品。\n\n此外,北京还有许多其他美食,如豌豆黄、炒肝、爆肚儿、门钉肉饼等,每一种都有其独特的口感和风味。\n\n在美食地图上,北京国际美食荟活动发布了驻京办推荐餐厅、老字号餐厅、异国餐厅等美食地图,为消费者提供了丰富的美食选择。同时,北京市文旅局还推出了“漫步北京:边吃边逛美食主题游线路”,让消费者在品尝美食的同时,还能欣赏到北京的风景和文化。\n\n总之,北京的美食文化丰富多彩,无论是传统小吃还是现代美食,都值得一试。',
6 'is_truncated': False,
7 'need_clear_history': False,
8 'finish_reason': 'normal',
9 'usage': {'prompt_tokens': 25, 'completion_tokens': 395, 'total_tokens': 420}
10}
1当谈到上海的旅游景点时,有许多令人兴奋和迷人的地方值得一游。以下是一些主要的旅游景点,按照不同的特色和类型进行分类介绍:
2
3**1. 历史与建筑景点**
4
5* **外滩**:位于黄浦江畔,是上海最具标志性的景点之一。这里拥有超过50栋风格迥异的古典复兴大楼,素有“外滩万国建筑博览群”之称。漫步在外滩,可以领略到上海独特的城市风貌和历史韵味。
6* **豫园**:位于上海市黄浦区,是市区留存完好的江南古典园林。亭台楼阁雕梁画栋,是体验中国传统文化和园林艺术的好去处。
7
8**2. 现代地标景点**
9
10* **东方明珠广播电视塔**:位于浦东新区陆家嘴,塔高约468米。作为上海的地标性建筑,东方明珠拥有太空舱、旋转餐厅等设施,提供360度欣赏申城夜景的绝佳视角。
11* **上海迪士尼度假区**:中国大陆首座迪士尼度假区,提供身临其境的奇妙体验。游客可以在这里享受各种游乐设施、表演和娱乐项目。
12
13**3. 购物与休闲景点**
14
15* **南京路步行街**:全国十大著名步行街之一,是上海最繁华的商业街之一。这里汇聚了众多百货公司、商店和餐厅,是购物和休闲的好去处。
16* **田子坊**:由上海最具特色的石库门里弄演变而来,是文艺青年的聚集地。这里有许多特色小店、艺术作坊和创意工作室,是感受上海独特文化氛围的好去处。
17
18**4. 自然与生态景点**
19
20* **上海野生动物园**:与世界各地的动物亲密接触,是家庭游的好选择。游客可以在这里观赏到各种珍稀动物,并体验亲手投食给动物的乐趣。
21
22以上这些景点都是上海的代表性旅游景点,每个都有其独特的魅力和特色。无论是欣赏历史建筑、体验现代地标、享受购物休闲还是亲近自然生态,上海都能为游客提供丰富多彩的旅游体验。
1上海的旅游景点丰富多样,以下是一些主要的景点介绍,以清晰的分点方式进行归纳:
2
31. **外滩**:
4 - 位置:位于上海市中心黄浦区的黄浦江畔。
5 - 特点:最具上海城市象征意义的景点之一,长1.5公里,左手边是宽阔的中山东一路,路边一字排开着数十栋风格迥异的外国建筑。夜晚,浦江两岸霓虹齐放,适合与爱人漫步。
6 - 交通:地铁2号线、10号线在南京东路站出站步行约15分钟。
7 - 开放时间:全天。
8
92. **田子坊**:
10 - 位置:位于浦西,由上海最具特色的石库门里弄演变而来。
11 - 特点:个性、文艺的年轻人初到上海必去之地,内有特色小店、艺术作坊、茶馆、露天餐厅等。
12 - 交通:地铁9号线到打浦桥站下车,从1号口出来后步行5分钟即到;也可乘坐多路公交车到达。
13 - 开放时间:全天,店铺一般10:00-22:00营业。
14
153. **南京路步行街**:
16 - 位置:全国十大著名步行街之一,上海开埠后最早建立的一条商业街。
17 - 特点:百货公司的聚集地,商品类目齐全,购物者的天堂。随处可见富有创意的城市雕塑,文艺时尚气息十足。
18 - 交通:地铁1、2、8号线至“人民广场”站下,或地铁2、10号线至“南京东路”站下。
19 - 开放时间:全天。
20
214. **东方明珠**:
22 - 位置:上海市浦东新区世纪大道1号。
23 - 特点:上海的标志性建筑之一,塔高468米,集观光、餐饮、购物、娱乐于一体。可360度饱览上海全景。
24 - 交通:地铁2号线陆家嘴站下。
25 - 营业时间:09:00-21:00。
26
275. **豫园**:
28 - 位置:上海市黄浦区福佑路168号。
29 - 特点:典型的江南古典园林,已有超过400年的历史。蜿蜒曲折的小道、精巧的亭台楼阁,尽显古代园林设计的绝妙智慧。
30 - 交通:地铁10号线豫园站下。
31 - 开放时间:明天09:00开放。
32
336. **上海迪士尼度假区**:
34 - 位置:距市中心约20.8km。
35 - 特点:充满欢乐童真的梦幻乐园,全球100必打卡景点之一。
36 - 交通:地铁11号线迪士尼站下。
37 - 开放时间及票价:根据季节和节假日有所不同,可提前在官方网站查询。
38
39除了上述景点外,上海还有许多其他值得一游的景点,如上海野生动物园、朱家角古镇、上海博物馆等。在游玩时,请提前规划好行程,并注意景点的开放时间和门票价格。
1{
2 headers: {...},
3 id: 'as-t77y93bqdg',
4 object: 'chat.completion',
5 created: 1719214566,
6 result: '当然,上海周末有很多好玩的地方可以选择。以下是一些建议,供您参考:\n' +
7 '\n' +
8 '1. **文化与艺术**\n' +
9 ' - 上海博物馆东馆:作为上海的文化象征,这里收藏了丰富的艺术品,适合喜欢艺术和历史的游客参观。\n' +
10 ' - 世界技能博物馆:展示各种技能和技术,适合对技能展示感兴趣的游客。\n' +
11 ' - 上海观复博物馆:一个展示古代文物和艺术品的地方,适合对中国古代文化感兴趣的游客。\n' +
12 '\n' +
13 '2. **历史与地标**\n' +
14 ' - 外滩:以其独特的万国建筑群和黄浦江的美景而闻名,是拍照留念的好地方。\n' +
15 ' - 豫园·上海城隍庙:体验上海传统文化和品尝小吃的好地方。\n' +
16 ' - 和平饭店:一座历史悠久的建筑,也是上海的著名地标之一。\n' +
17 '\n' +
18 '3. **自然与休闲**\n' +
19 ' - 世纪公园:一个大型的城市公园,适合休闲散步和观赏自然景观。\n' +
20 ' - 浦江郊野公园:周末休闲好去处,可以欣赏到浦江两岸的美景。\n' +
21 ' - 上海共青森林公园:植物多样性丰富,适合亲近自然。\n' +
22 '\n' +
23 '4. **科技与娱乐**\n' +
24 ' - 上海迪士尼乐园:一个充满乐趣和魔法的主题公园,适合家庭游客。\n' +
25 ' - 上海科技馆:适合带孩子去学习科学知识的地方,有各种互动展览。\n' +
26 '\n' +
27 '5. **红色文化**\n' +
28 ' - “光荣之城”2024上海红色文化季:有各种红色文化活动,如舞剧电影《永不消逝的电波》和舞剧《永不消逝的电波》等,可以深入了解上海的红色历史。\n' +
29 '\n' +
30 '6. **购物与美食**\n' +
31 ' - 南京路步行街:购物天堂,适合喜欢逛街和购物的游客。\n' +
32 ' - 豫园商城:体验上海传统文化和品尝地道小吃的综合性商业区。\n' +
33 '\n' +
34 '7. **特色体验**\n' +
35 ' - 田子坊:一个充满艺术氛围的小巷,适合喜欢探索当地文化和艺术的游客。\n' +
36 ' - 上海电影博物馆:了解中国电影起步的地方,对电影感兴趣的游客不容错过。\n' +
37 '\n' +
38 '8. **免费景点**\n' +
39 ' - 外滩沿线:包括南京路步行街、陆家嘴等,浦江两岸的景观灯亮起时非常美丽。\n' +
40 '\n' +
41 '以上建议涵盖了文化、历史、自然、科技、娱乐等多个方面,您可以根据自己的兴趣和喜好选择适合的景点进行游览。祝您周末愉快!',
42 is_truncated: false,
43 need_clear_history: false,
44 finish_reason: 'normal',
45 usage: { prompt_tokens: 30, completion_tokens: 481, total_tokens: 511 }
46}
调用示例(流式)
1import os
2import qianfan
3
4#【推荐】使用安全认证AK/SK鉴权,通过环境变量初始化认证信息
5# 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
6os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
7os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
8
9chat_comp = qianfan.ChatCompletion()
10
11resp = chat_comp.do(model="ERNIE-3.5-8K-0205", messages=[{
12 "role": "user",
13 "content": "简单介绍下故宫"
14}], stream=True)
15
16for r in resp:
17 print(r["body"])
1package main
2
3import (
4 "context"
5 "fmt"
6 "os"
7
8 "github.com/baidubce/bce-qianfan-sdk/go/qianfan"
9)
10
11func main() {
12 // 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
13 os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
14 os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
15
16 chat := qianfan.NewChatCompletion(
17 qianfan.WithModel("ERNIE-3.5-8K-0205"),
18 )
19 resp, _ := chat.Stream( // Stream 启用流式返回,参数与 Do 相同
20 context.TODO(),
21 &qianfan.ChatCompletionRequest{
22 Messages: []qianfan.ChatCompletionMessage{
23 qianfan.ChatCompletionUserMessage("简单介绍下故宫"),
24 },
25 },
26 )
27 for {
28 r, err := resp.Recv()
29 if err != nil {
30 panic(err)
31 }
32 if resp.IsEnd { // 判断是否结束
33 break
34 }
35 fmt.Println(r.Result)
36 }
37}
1import com.baidubce.qianfan.Qianfan;
2import com.google.gson.Gson;
3
4public class Demo {
5 public static void main(String[] args) {
6 Gson gson = new Gson();
7
8 // 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
9 Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
10
11 qianfan.chatCompletion()
12 .model("ERNIE-3.5-8K-0205")
13 .addMessage("user", "简单介绍下故宫")
14 // 启用流式返回
15 .executeStream()
16 .forEachRemaining(chunk -> System.out.print(gson.toJson(chunk)));
17 }
18}
1import {ChatCompletion, setEnvVariable} from "@baiducloud/qianfan";
2
3// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
4setEnvVariable('QIANFAN_ACCESS_KEY','your_iam_ak');
5setEnvVariable('QIANFAN_SECRET_KEY','your_iam_sk');
6
7const client = new ChatCompletion();
8async function main() {
9 const resp = await client.chat({
10 messages: [
11 {
12 role: 'user',
13 content: '简单介绍下故宫',
14 },
15 ],
16 stream: true, //启用流式返回
17 }, 'ERNIE-3.5-8K-0205');
18
19 for await (const chunk of resp) {
20 console.log(chunk);
21 }
22}
23
24main();
返回示例(流式)
1{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051515, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': '故宫,', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
2{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051517, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '又称紫禁城,位于中国北京的中心,是明清两代(公元1368年至1912年)的皇家宫殿,也是世界上', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
3{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051518, 'sentence_id': 2, 'is_end': False, 'is_truncated': False, 'result': '现存规模最大、保存最为完整的木质结构古建筑群之一。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
4{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051520, 'sentence_id': 3, 'is_end': False, 'is_truncated': False, 'result': '故宫占地面积约72万平方米,建筑面积约15万平方米,有大小宫殿七十多座,房屋九千余间。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
5{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051522, 'sentence_id': 4, 'is_end': False, 'is_truncated': False, 'result': '\n\n故宫始建于明成祖永乐四年(1406年),以南京故宫为蓝本营建,到永乐十八年(142', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
6{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051524, 'sentence_id': 5, 'is_end': False, 'is_truncated': False, 'result': '0年)建成,成为明清两朝二十四位皇帝的皇宫。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
7{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051525, 'sentence_id': 6, 'is_end': False, 'is_truncated': False, 'result': '故宫的建筑风格庄严肃穆,体现了中国古代皇权的至高无上。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 2, 'total_tokens': 5}}
8{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051526, 'sentence_id': 7, 'is_end': False, 'is_truncated': False, 'result': '其建筑布局严格遵循中轴对称的原则,分为外朝和内廷两部分。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
9{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051528, 'sentence_id': 8, 'is_end': False, 'is_truncated': False, 'result': '外朝是皇帝处理政务、举行朝会的地方,以太和殿、中和殿、保和殿三大殿为中心;', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
10{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051529, 'sentence_id': 9, 'is_end': False, 'is_truncated': False, 'result': '内廷是皇帝和后妃们起居生活的地方,包括乾清宫、交泰殿、坤宁宫等。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
11{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051530, 'sentence_id': 10, 'is_end': False, 'is_truncated': False, 'result': '\n\n故宫不仅是一座宏伟的建筑群,更是中国古代文化的瑰宝。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
12{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051533, 'sentence_id': 11, 'is_end': False, 'is_truncated': False, 'result': '它收藏了大量的文物,包括珍贵的书画、陶瓷、玉器、金银器等,这些文物不仅具有很高的艺术价值,也反映了中国古代社会的历史和文化。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
13{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051534, 'sentence_id': 12, 'is_end': False, 'is_truncated': False, 'result': '\n\n如今,故宫已经成为了一个著名的旅游景点,吸引着来自世界各地的游客前来参观。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
14{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051537, 'sentence_id': 13, 'is_end': False, 'is_truncated': False, 'result': '通过参观故宫,人们可以了解到中国古代皇家的生活方式、政治制度以及文化艺术等方面的知识,也可以感受到中国古代文化的博大精深和独特魅力。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 146, 'total_tokens': 149}}
15{'id': 'as-5rf2xaepa5', 'object': 'chat.completion', 'created': 1719051537, 'sentence_id': 14, 'is_end': True, 'is_truncated': False, 'result': '', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 3, 'completion_tokens': 284, 'total_tokens': 287}}
1故宫,
2又称紫禁城,位于中国北京中轴线的中心,是明清两代的皇家宫殿,也是世界上现存规模最大、保存最为完整的木质结构古建筑群
3之一。
4它始建于明成祖永乐四年(1406年),以南京故宫为蓝本营建,于永乐十八年(142
50年)建成,是明清两朝二十四位皇帝的皇宫。
6
7
8故宫占地面积约为72万平方米,建筑面积约为15万平方米,有大小宫殿七十多座,房屋九千余间。
9它分为外朝和内廷两部分。
10外朝的中心为太和殿、中和殿、保和殿,统称三大殿,是国家举行大典礼的地方。
11内廷的中心是乾清宫、交泰殿、坤宁宫,统称后三宫,是皇帝和皇后居住的正宫。
12
13
14故宫的建筑风格宏伟壮丽,庭院明朗开阔,象征封建政权至高无上的中心地位。
15故宫的每一处建筑都蕴含着深厚的文化内涵,体现了中国古代建筑的精华和独特的艺术魅力。
16同时,故宫也是中国古代宫廷文化、建筑艺术、工艺美学的集大成者,是中华五千年文明的重要载体。
17
18
19此外,故宫还是明清两代皇家文化的重要聚集地,珍藏有大量的文物,如钟表馆、珍宝馆等,都是中国文化的瑰宝
20。
21如今,故宫已成为中国最著名的旅游景点之一,每年吸引着大量的国内外游客前来参观。
1{"sentenceId":0,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"故宫,","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215843,"headers":{...}}{"sentenceId":1,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"又称紫禁城,位于中国北京中轴线的中心,是明、清两代的皇家宫殿,也是世界上现存规模最大、保存最为完整的木质结构","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215845,"headers":{...}}{"sentenceId":2,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"古建筑群之一。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215846,"headers":{...}}{"sentenceId":3,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"故宫始建于明成祖永乐四年(1406年),以南京故宫为蓝本营建,到永乐十八年(142","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215847,"headers":{...}}{"sentenceId":4,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"0年)建成,成为明清两朝二十四位皇帝的皇宫。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215848,"headers":{...}}{"sentenceId":5,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"\n\n故宫占地面积约为72万平方米,建筑面积约为15万平方米,有大小宫殿七十多座,房屋九千余间。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215850,"headers":{...}}{"sentenceId":6,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"它是一座长方形城池,南北长961米,东西宽753米,四面围有高10米的城墙,城外有宽","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215853,"headers":{...}}{"sentenceId":7,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"52米的护城河。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215853,"headers":{...}}{"sentenceId":8,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"紫禁城内的建筑分为外朝和内廷两部分。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215854,"headers":{...}}{"sentenceId":9,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"外朝的中心为太和殿、中和殿、保和殿,统称三大殿,是国家举行大典礼的地方。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215856,"headers":{...}}{"sentenceId":10,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"内廷的中心是乾清宫、交泰殿、坤宁宫,统称后三宫,是皇帝和皇后居住的正宫。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215859,"headers":{...}}{"sentenceId":11,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"\n\n故宫的建筑艺术达到了中国建筑的顶峰,无论是其独特的建筑构造,还是精美的雕刻和装饰,都体现了中国古代劳动人民的卓越智慧和创造力。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215861,"headers":{...}}{"sentenceId":12,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"同时,故宫也是中国传统文化的重要载体,其收藏的各种文物,如书画、陶瓷、玉器、金银器等,都是中国古代文化的瑰宝。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215863,"headers":{...}}{"sentenceId":13,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"\n\n如今,故宫已成为中国最重要的文化遗产和旅游胜地之一,每年吸引着数以百万计的国内外游客前来参观。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-z927sckm39","object":"chat.completion","created":1719215865,"headers":{...}}{"sentenceId":14,"isEnd":true,"isTruncated":false,"finishReason":"normal","result":"","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":288,"totalTokens":291},"id":"as-z927sckm39","object":"chat.completion","created":1719215865,"headers":{...}}
1{
2 headers: {...},
3 id: 'as-vzgh1ya1nc',
4 object: 'chat.completion',
5 created: 1719216755,
6 sentence_id: 0,
7 is_end: false,
8 is_truncated: false,
9 result: '故宫,',
10 need_clear_history: false,
11 finish_reason: 'normal',
12 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
13}
14{
15 headers: {...},
16 id: 'as-vzgh1ya1nc',
17 object: 'chat.completion',
18 created: 1719216757,
19 sentence_id: 1,
20 is_end: false,
21 is_truncated: false,
22 result: '又称紫禁城,位于中国北京中轴线的中心,是明、清两代的皇家宫殿,也是世界上现存规模最大、保存最为完整的木质结构',
23 need_clear_history: false,
24 finish_reason: 'normal',
25 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
26}
27{
28 headers: {...},
29 id: 'as-vzgh1ya1nc',
30 object: 'chat.completion',
31 created: 1719216758,
32 sentence_id: 2,
33 is_end: false,
34 is_truncated: false,
35 result: '古建筑群之一。',
36 need_clear_history: false,
37 finish_reason: 'normal',
38 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
39}
40{
41 headers: {...},
42 id: 'as-vzgh1ya1nc',
43 object: 'chat.completion',
44 created: 1719216760,
45 sentence_id: 3,
46 is_end: false,
47 is_truncated: false,
48 result: '故宫始建于明成祖永乐四年(1406年),以南京故宫为蓝本营建,至永乐十八年(142',
49 need_clear_history: false,
50 finish_reason: 'normal',
51 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
52}
53{
54 headers: {...},
55 id: 'as-vzgh1ya1nc',
56 object: 'chat.completion',
57 created: 1719216762,
58 sentence_id: 4,
59 is_end: false,
60 is_truncated: false,
61 result: '0年)落成,成为明清两朝二十四位皇帝的皇宫。',
62 need_clear_history: false,
63 finish_reason: 'normal',
64 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
65}
66{
67 headers: {...},
68 id: 'as-vzgh1ya1nc',
69 object: 'chat.completion',
70 created: 1719216763,
71 sentence_id: 5,
72 is_end: false,
73 is_truncated: false,
74 result: '\n\n故宫的建筑风格独特,气势恢宏,布局严谨有序,体现了中国古代建筑艺术的最高成就。',
75 need_clear_history: false,
76 finish_reason: 'normal',
77 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
78}
79{
80 headers: {...},
81 id: 'as-vzgh1ya1nc',
82 object: 'chat.completion',
83 created: 1719216765,
84 sentence_id: 6,
85 is_end: false,
86 is_truncated: false,
87 result: '它占地面积约72万平方米,建筑面积约15万平方米,有大小宫殿七十多座,房屋九千余间。',
88 need_clear_history: false,
89 finish_reason: 'normal',
90 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
91}
92{
93 headers: {...},
94 id: 'as-vzgh1ya1nc',
95 object: 'chat.completion',
96 created: 1719216767,
97 sentence_id: 7,
98 is_end: false,
99 is_truncated: false,
100 result: '宫殿的数量之多、建筑之精美,无不彰显了皇家的威严与尊贵。',
101 need_clear_history: false,
102 finish_reason: 'normal',
103 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
104}
105{
106 headers: {...},
107 id: 'as-vzgh1ya1nc',
108 object: 'chat.completion',
109 created: 1719216770,
110 sentence_id: 8,
111 is_end: false,
112 is_truncated: false,
113 result: '\n\n故宫的建造遵循了中轴对称、前朝后寝、左祖右社的建筑原则,其空间布局和建筑结构都体现了中国古代的礼',
114 need_clear_history: false,
115 finish_reason: 'normal',
116 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
117}
118{
119 headers: {...},
120 id: 'as-vzgh1ya1nc',
121 object: 'chat.completion',
122 created: 1719216770,
123 sentence_id: 9,
124 is_end: false,
125 is_truncated: false,
126 result: '制思想和皇权至上的理念。',
127 need_clear_history: false,
128 finish_reason: 'normal',
129 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
130}
131{
132 headers: {...},
133 id: 'as-vzgh1ya1nc',
134 object: 'chat.completion',
135 created: 1719216772,
136 sentence_id: 10,
137 is_end: false,
138 is_truncated: false,
139 result: '故宫的建筑艺术也达到了中国古代建筑艺术的巅峰,无论是屋顶的样式、檐角的起翘、斗拱的构造,还是彩画',
140 need_clear_history: false,
141 finish_reason: 'normal',
142 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
143}
144{
145 headers: {...},
146 id: 'as-vzgh1ya1nc',
147 object: 'chat.completion',
148 created: 1719216774,
149 sentence_id: 11,
150 is_end: false,
151 is_truncated: false,
152 result: '、雕刻等装饰艺术,都体现了中国古代工匠的精湛技艺和非凡智慧。',
153 need_clear_history: false,
154 finish_reason: 'normal',
155 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
156}
157{
158 headers: {...},
159 id: 'as-vzgh1ya1nc',
160 object: 'chat.completion',
161 created: 1719216776,
162 sentence_id: 12,
163 is_end: false,
164 is_truncated: false,
165 result: '\n\n此外,故宫还是一座珍贵的文化遗产,收藏了大量的文物珍宝,如书画、玉器、陶瓷、青铜器等,这些文物不仅具有极高的艺术价值',
166 need_clear_history: false,
167 finish_reason: 'normal',
168 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
169}
170{
171 headers: {...},
172 id: 'as-vzgh1ya1nc',
173 object: 'chat.completion',
174 created: 1719216777,
175 sentence_id: 13,
176 is_end: false,
177 is_truncated: false,
178 result: ',还蕴含着丰富的历史信息和文化内涵。',
179 need_clear_history: false,
180 finish_reason: 'normal',
181 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
182}
183{
184 headers: {...},
185 id: 'as-vzgh1ya1nc',
186 object: 'chat.completion',
187 created: 1719216778,
188 sentence_id: 14,
189 is_end: false,
190 is_truncated: false,
191 result: '如今,故宫已经成为了一个著名的旅游景点,吸引着来自世界各地的游客前来参观游览。',
192 need_clear_history: false,
193 finish_reason: 'normal',
194 usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
195}
196{
197 headers: {...},
198 id: 'as-vzgh1ya1nc',
199 object: 'chat.completion',
200 created: 1719216778,
201 sentence_id: 15,
202 is_end: true,
203 is_truncated: false,
204 result: '',
205 need_clear_history: false,
206 finish_reason: 'normal',
207 usage: { prompt_tokens: 3, completion_tokens: 284, total_tokens: 287 }
208}
function call请求示例
1mport qianfan
2import json
3import os
4
5# 【推荐】通过环境变量初始化认证信息,使用安全认证AK/SK鉴权
6# 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
7os.environ["QIANFAN_ACCESS_KEY"]="your_iam_ak"
8os.environ["QIANFAN_SECRET_KEY"]="your_iam_sk"
9
10chat_comp = qianfan.ChatCompletion(model="ERNIE-3.5-8K-0205") # 指定模型
11
12def get_file_num(language: str) -> str:
13 """获取数据库中指定语言的代码文件数量"""
14 language_low = language.lower()
15 language_map = {
16 "c/c++": 35,
17 "java": 10,
18 "javascript": 25,
19 "python": 35,
20 "go": 32,
21 }
22 return str(language_map.get(language_low, 0))
23
24func_list = [{
25 "name": "get_file_num", # 函数名称
26 "description": "获取内部数据库中以某一编程语言编写的文件数量", # 函数描述
27 "parameters":{
28 "type":"object",
29 "properties":{ # 参数schema,如果参数为空,设为空字典即可
30 "language":{ # 参数名称
31 "type":"string", # 参数类型
32 "description": "代码所运用的编程语言,例如:python、c/c++、go、java" # 参数描述
33 }
34 },
35 "required":["language"] # 必填参数(无默认值)
36 }
37}]
38
39query = "请帮我查询一下数据库中用go撰写的代码文件数量"
40msgs = qianfan.QfMessages()
41msgs.append(query,role='user')
42resp = chat_comp.do(
43 messages=msgs,
44 functions=func_list
45)
46if resp.get("function_call"):
47 # 获取函数名称、入参及返回值
48 func_call_result = resp["function_call"]
49 func_name = func_call_result["name"]
50 language = json.loads(func_call_result["arguments"]).get("language")
51 func_resp = get_file_num(language)
52
53 # 将函数返回值转换成json字符串
54 func_content = json.dumps({
55 "return":func_resp
56 })
57
58 # 创建新的消息
59 msgs.append(resp, role="assistant")
60 msgs.append(func_content, role="function")
61
62 # 再次调用chat_completion
63 second_resp = chat_comp.do(
64 messages=msgs,
65 functions=func_list
66 )
67
68 print(second_resp['body']['result'])
function call响应示例
1根据您的请求,我已经查询了数据库中用go撰写的代码文件数量,共有32个文件。如果您需要进一步的帮助或有其他问题,请随时告诉我。
请求参数
注意:以下为Python SDK参数说明,其他SDK参数相关说明请参考Go SDK-对话Chat参数相关说明、Java SDK参数相关说明、Node.js SDK参数相关说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
messages | List[dict] | 是 | 聊天上下文信息。说明: (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 ![]() (4)message中的content总长度、functions和system字段总内容不能超过20000 个字符,且不能超过5120 tokens |
model | string | 否 | 模型名称,用于指定平台支持预置服务的模型,说明:该字段为固定值ERNIE-3.5-8K-0205 |
functions | List[dict] | 否 | 一个可触发函数的描述列表,说明: (1)支持的function数量无限制 (2)长度限制请参考message说明 |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)默认0.8,范围 (0, 1.0],不能为0 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)默认0.8,取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)默认1.0,取值范围:[1.0, 2.0] |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认False · True:是,以流式接口的形式返回数据 · False:否 |
enable_system_memory | bool | 否 | 是否开启系统记忆,说明: (1)false:未开启,默认false (2)true:表示开启,开启后,system_memory_id字段必填 |
system_memory_id | string | 否 | 系统记忆ID,用于读取对应ID下的系统记忆,读取到的记忆文本内容会拼接message参与请求推理 |
stop | List[string] | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符 (2)最多4个元素 |
system | string | 否 | 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明: (1)长度限制,message中的content总长度、functions和system字段总内容不能超过20000 个字符,且不能超过5120 tokens (2)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化 |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,默认false,表示不关闭 |
enable_citation | bool | 否 | 是否开启上角标返回,说明: (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍 (2)默认false,不开启 |
enable_trace | bool | 否 | 是否返回搜索溯源信息,说明: (1)如果开启,在触发了搜索增强的场景下,会返回搜索溯源信息search_info,search_info内容见响应参数介绍 (2)默认false,表示不返回 |
max_output_tokens | int | 否 | 指定模型最大输出token数,说明: (1)如果设置此参数,范围[2, 2048] (2)如果不设置此参数,最大输出token数为1024 |
response_format | string | 否 | 指定响应内容的格式,说明: (1)可选值: · json_object:以json格式返回,可能出现不满足效果情况 · text:以文本格式返回 (2)如果不填写参数response_format值,默认为text |
user_id | string | 否 | 表示最终用户的唯一标识符 |
tool_choice | tool_choice | 否 | 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 |
retry_count | int | 否 | 重试次数,默认1次 |
request_timeout | float | 否 | 请求超时时间,默认60秒 |
backoff_factor | float | 否 | 请求重试参数,用于指定重试的策略,默认为0 |
message说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,说明: (1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空 (2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等 (3)当role为function,content为JSON格式,效果可能更好 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | function_call | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
function说明
functions中function说明如下
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 函数名 |
description | string | 是 | 函数描述 |
parameters | object | 是 | 函数请求参数,说明: (1)JSON Schema 格式,参考JSON Schema描述 (2)如果函数没有请求参数,parameters值格式如下: {"type": "object","properties": {}} |
responses | object | 否 | 函数响应参数,JSON Schema 格式,参考JSON Schema描述 |
examples | List(List(example)) | 否 | function调用的一些历史示例,说明: (1)可以提供正例(正常触发)和反例(无需触发)的example ·正例:从历史请求数据中获取 ·反例: 当role = user,不会触发请求的query 当role = assistant,有固定的格式。function_call的name为空,arguments是空对象:"{}",thought可以填固定的:"我不需要调用任何工具" (2)兼容之前的 List(example) 格式 |
example说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,说明: (1)当前message存在function_call,且role="assistant"时可以为空,其他场景不能为空 (2)最后一个message对应的content不能为blank字符,包含空格、"\n"、“\r”、“\f”等 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | function_call | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
function_call说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 触发的function名 |
arguments | string | 是 | 请求参数 |
thoughts | string | 否 | 模型思考过程 |
tool_choice说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
type | string | 是 | 指定工具类型,function |
function | function | 是 | 指定要使用的函数 |
function说明
tool_choice中function说明如下
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 指定要使用的函数名 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型 chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
is_truncated | bool | 当前生成的结果是否被截断 |
finish_reason | string | 输出内容标识,说明: · normal:输出内容完全由大模型生成,未触发截断、替换 · stop:输出结果命中入参stop中指定的字段后被截断 · length:达到了最大的token数,根据EB返回结果is_truncated来截断 · content_filter:输出内容被截断、兜底、替换为**等 · function_call:调用了funtion call功能 |
search_info | search_info | 搜索数据,当请求参数enable_citation或enable_trace为true,并且触发搜索时,会返回该字段 |
result | string | 对话返回结果 |
need_clear_history | bool | 表示用户输入是否存在安全风险,是否关闭当前会话,清理历史会话信息 · true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 · false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 |
usage | usage | token统计信息 |
function_call | function_call | 由模型生成的函数调用,包含函数名称,和调用参数 |
search_info说明
名称 | 类型 | 描述 |
---|---|---|
search_results | List(search_result) | 搜索结果列表 |
search_result说明
名称 | 类型 | 描述 |
---|---|---|
index | int | 序号 |
url | string | 搜索结果URL |
title | string | 搜索结果标题 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
function_call说明
名称 | 类型 | 描述 |
---|---|---|
name | string | 触发的function名 |
thoughts | string | 模型思考过程 |
arguments | string | 请求参数 |
错误码
如果请求错误,服务器返回的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}
更多相关错误码,请查看错误码说明。