对话
该接口用于在一轮对话中向agent应用发送消息。
权限说明
调用本API,需使用API Key鉴权方式。Authorization的值为Bearer <API Key>。获取API Key流程,请查看授权。
请求参数
用户query文字。
工具列表,其中每个字典对应一个工具,仅对自主规划Agent生效。
显示子属性
隐藏子属性
显示子属性
隐藏子属性
枚举:
function: 支持fucntion call模式调用工具
工具对象
显示子属性
隐藏子属性
函数名
只允许数字、大小写字母和中划线和下划线,最大长度为64个字符。一次运行中唯一。
函数请求参数,JSON Schema 格式,参考JSON Schema描述
在此基础上,新增约束如下:
1. 当某一字段为object类型时,properties字段必选,properties内可为空。
2. 当某一字段为array类型时,items字段必选,items内可为空。
显示子属性
隐藏子属性
函数描述
对话时要进行的特殊操作。如回复工作流agent中“信息收集节点“的消息。
显示子属性
隐藏子属性
要执行的操作。
可选值为:
resume:回复“信息收集节点” 的消息
action_type为resume时,执行操作时所需的参数
显示子属性
隐藏子属性
要回复的“信息收集节点”中断事件的id。
为上次对话“信息收集节点”返回的
{"interrupt_event_id": "e4ebfab8-4557-4e3c-9481-a38c4b6d2955", "interrupt_event_type": "chat"} 中的interrupt_event_id。
要回复的”信息收集节点“中断事件的type。
为上次对话“信息收集节点”返回的
{"interrupt_event_id": "e4ebfab8-4557-4e3c-9481-a38c4b6d2955", "interrupt_event_type": "chat"} 中的interrupt_event_type,当前仅有一个类型 "chat"。
要回复的“信息收集节点”中断事件的信息
显示子属性
隐藏子属性
app_id,来源于个人空间-应用-应用ID。应用分为自主规划agent和工作流agent。
是否以流式接口的形式返回数据,默认false。
如果在对话中上传了文件,可以将文件id放入该字段,目前只处理第一个文件。
显示子属性
隐藏子属性
使用记忆时为必填
终端用户ID,由用户自行定义与维护,限制6 - 64字符;该字段为记忆提供存储标识,若需完整使用记忆功能end_user_id必须输入。
控制大模型使用组件的方式,仅对自主规划Agent生效。
显示子属性
隐藏子属性
类型。可选值为:
auto:由LLM自动判断调什么组件;
function:由用户指定调用哪个组件,仅支持强制命中通过工作流自定义的组件,官方组件不支持强制命中;
如果想获取组件的原始输出,请在应用回复设置中将该组件设置成回复节点,详细操作可参考调用示例
组件对象,包括组件的英文名称和入参
显示子属性
隐藏子属性
组件的英文名称(唯一标识),用户通过工作流完成自定义组件后,
可在个人空间-组件下查看组件英文名称
当组件没有入参时填入空对象{}
显示子属性
隐藏子属性
内容为本地工具执行的结果,仅对自主规划Agent生效。
显示子属性
隐藏子属性
显示子属性
隐藏子属性
function call工具的输出。
如果是json,也需要对json序列化成string
工具调用的ID。 来源于上一轮Run请求时,Interrupt状态时,tool_calls \ id字段
对话id,可通过新建会话接口创建。
元数据过滤条件。仅对自主规划agent生效。
显示子属性
隐藏子属性
过滤条件。
例如:
文档的field 必须是doc_id
"filters": [
{ "operator": "in", "field": "doc_id", value: ["d-1", "d-2"] },
{ "operator": "==", "field": "doc_id", value: "d1" }]
显示子属性
隐藏子属性
显示子属性
隐藏子属性
操作符名称。
可选值:
==:文档id或标签值 等于value
in:文档id或标签值 在数组中的任一值
not_in:文档id或标签值 不在数组中
举例:
{ "operator": "in", "field": "doc_id", value: ["d-1", "d-2"] }
{ "operator": "==", "field": "动物", value: "爬行动物" }
字段名(目前仅支持doc_id)
文档id
文档标签过滤条件。
例如:
"tag_filters": [
{ "operator": "in", "field": "娱乐", value: ["电影", "综艺"] },
{ "operator": "==", "field": "动物", value: "爬行动物" }
]
显示子属性
隐藏子属性
显示子属性
隐藏子属性
操作符名称。
可选值:
==:文档id或标签值 等于value
in:文档id或标签值 在数组中的任一值
not_in:文档id或标签值 不在数组中
举例:
{ "operator": "in", "field": "doc_id", value: ["d-1", "d-2"] }
{ "operator": "==", "field": "动物", value: "爬行动物" }
标签key。
标签key对应的标签value
显示子属性
隐藏子属性
文档组合条件。
决定每一个 MetadataFilter 对象之间的关系。
可选值:
and:所有条件均满足,才会返回结果
or:任一条件满足,则返回结果
POST /v2/app/conversation/runs HTTP/1.1
HOST: qianfan.baidubce.com
Authorization: Bearer <API Key>
Content-Type: application/json
{
"app_id": "85036d8f-239c-469c-b342-b62ca9d696f6",
"query": "根据文件中的数据,统计这几所学校小学生有多少",
"stream": true,
"conversation_id": "355a4f4e-a6d8-4dec-b840-7075030c6d22",
"file_ids": [
"cdd1e194-cfb7-4173-a154-795fae8535d9"
]
}
示例代码
curl --location 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data '{
"app_id": "85036d8f-239c-469c-b342-b62ca9d696f6",
"query": "根据文件中的数据,统计这几所学校小学生有多少",
"stream": true,
"conversation_id": "355a4f4e-a6d8-4dec-b840-7075030c6d22",
"file_ids": [
"cdd1e194-cfb7-4173-a154-795fae8535d9"
]
}'
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id": "b412f6b3-d9e9-4617-8be5-94df02b06bdf",
"query": "你好",
"stream": true,
"conversation_id": "377208a9-2ec2-4ed3-bc1f-120d20d0018c",
"tool_choice": {
"type": "function",
"function": {
"name": "QueryFlights",
"input": {
"flight_number":"CZ8889"
}
}
}
}'
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id": "4d4b1b27-d607-4d2a-9002-206134217a9f",
"query": "今天北京的天气怎么样",
"stream": true,
"conversation_id": "8c5928f7-a9e7-4826-a027-3eb1f97f6eab",
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "仅支持中国城市的天气查询,参数location为中国城市名称,其他国家城市不支持天气查询",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. Beijing"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location",
"unit"
]
}
}
}
]
}'
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id": "4d4b1b27-d607-4d2a-9002-206134217a9f",
"stream": false,
"conversation_id": "8c5928f7-a9e7-4826-a027-3eb1f97f6eab",
"tool_outputs": [
{
"tool_call_id": "ba853313-cbf0-4ecc-8ae7-92b33f00509d",
"output": "北京今天天气晴朗,温度32度"
}
]
}'
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id": "7439c98a-a96c-468a-8a94-97a61b4476bf",
"query": "你好",
"stream": true,
"conversation_id": "f1e88920-6075-42e2-b6ce-fff44f2c3159"
}'
# 获取到interrupt_event_id后,通过"action"回复"信息收集节点"的消息
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer <AppBuilder API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id": "7439c98a-a96c-468a-8a94-97a61b4476bf",
"query": "这是回复信息收集节点的消息",
"stream": true,
"conversation_id": "f1e88920-6075-42e2-b6ce-fff44f2c3159",
"action":{
"action_type":"resume",
"parameters":{
"interrupt_event":{
"id": "af01f7ee-0ba2-4208-ac3c-09dee43c9ba0",
"type": "chat"
}
}
}
}'
返回响应
消息返回时间的时间戳 UTC时间格式。
文字答案。 流式场景下是增量数据。
节点输出信息相关内容。具体见下文content字段定义。
显示子属性
隐藏子属性
显示子属性
隐藏子属性
模型用量 仅Chat Agent和Function Call和FollowUpQuery有,按照各个独立的event_type计数。
显示子属性
隐藏子属性
消耗tokens的模型名称
总token数
输入token数
输出token数
每个事件个性化输出内容的汇总字段,根据事件的类型不同, outputs下内容不同。
event_type 为 rag , 结果包括以下字段:
text: string 普通文本
references list[object] 包含reference对象的数组, reference格式在下面定义
event_type 为 function_call , 结果包括以下字段:
text: function_call 的描述json
event_type 为 Workflow,结果包括以下字段:
text: string 普通文本
meta:json 自定义组件的描述信息
event_type 为DataSheetAgent , 结果包括以下字段:
text: string 普通文本
code: string 普通文本
references list[object] 包含reference对象的数组,
reference格式在下面定义
event_type为 DatabaseAgent , 结果包括以下字段:
code: string 普通文本
text: string 普通文本或者json结构。
当content_type为text时,text返回为string类型的普通文本,当content_type为chart时,text返回为json结构。json结构中,chart_type的值固定为 chart, chart_data的值为表格内容。
references list[object] 包含reference对象的数组,
reference格式在下面定义
event_type为 MemoryTableAgent , 结果包括以下字段:
text: string 普通文本
code: string 普通文本
event_type为MemoryVariableWriter , 结果包括以下字段:
text: string 普通文本
event_type 为 thought , 结果包括以下字段:
text: string 普通文本。思考模型思维链内容。
event_type为chatflow ,content_type是publish_message, 结果包括以下字段:
message: 消息内容
message_id: 消息id
event_type为chatflow ,content_type是chatflow_interrupt, 结果包括以下字段:
interrupt_event_id: string 信息收集节点返回的中断事件id
interrupt_event_type: string 信息收集节点返回的中断事件type
event_type为chatflow ,content_type是multiple_dialog_event, 结果包括以下字段:
name_cn: 固定为工作流Agent
event_type为chatflow ,content_type是code, 结果包括以下字段:
code: 返回的代码
language: 代码格式,固定为json
event_type为chatflow ,content_type是text, 结果包括以下字段:
text: 返回的文本
event_type为chatflow , 结果包括以下字段:
name_cn:string 普通文本
text: string 普通文本
event_type为FollowUpQuery ,content_type是json, 结果包括以下字段:
json: 返回的追问信息,格式是dict,key为follow_up_querys,格式为list[str],内容为返回的追问问题
event_type为chat_reasoning ,content_type是chat_reasoning, 结果包括以下字段:
text: string 普通文本。问答模型思维链内容。(暂不支持工作流Agent中展示思维链。)
event_type 为其它组件名,可能会出现以下多种字段
urls: 外部链接
files: 工具生成的文件链接
image:工具生成的图片url
audio:工具生成的语音url
video:工具生成的视频url
显示子属性
隐藏子属性
显示子属性
隐藏子属性
组件描述
组件id
组件编码
组件名称
多选一,只需要符合下列任意一组子节点
各个事件都可能产生文字信息
显示子属性
隐藏子属性
event_type 为 function_call
显示子属性
隐藏子属性
参数
组件编码
组件名称
各个事件都可能产生文字信息
工具生成的文件链接列表
显示子属性
隐藏子属性
工具生成的语音url
工具生成的可下载文件地址列表
显示子属性
隐藏子属性
工具生成的图片url
工具生成的视频url
多选一,只需要符合下列任意一组子节点
显示子属性
隐藏子属性
rag的reference参考信息。问答结果中的引用参考。 如大模型的回答引用了某切片, 需要在问答结果中标注出答案的来源位置。
显示子属性
隐藏子属性
content信息的id
BaiduSearch 的专用字段
信息来源
命中切片时出现该参数。
切片的元数据信息,与当前切片有关的信息
显示子属性
隐藏子属性
para_type值为chart时存在数据,展示图表链接
显示子属性
隐藏子属性
命中切片时出现该参数。
当前切片正文的类型:
table:表格;
chart:图表;
text:文字;
code:代码
命中切片时出现该参数。
当前切片正文的展示格式: html:html格式;
markdown:markdown格式;
json:json格式;
txt:文本格式
命中的文字在切片中的位置。
json转成的String,json格式为object,结果包含以下字段:
box list[list[int]] 命中的内容在切片中的位置;
page_num list[int] 命中的内容在文档中的页数
切片匹配分
切片内容
命中的表格型知识数据中的某行数据。具体描述参考RowLine对象 非表格型知识数据时值为空
显示子属性
隐藏子属性
显示子属性
隐藏子属性
列名
列顺序
列值
是否参与索引。
可选值:
true:参与索引。
false:不参与索引
是否参与问答(即该列数据是否对大模型可见)。当前值固定为true。
可选值:
true:参与问答。
false:不参与问答
切片id 知识问答专有字段
数据集id 知识问答专有字段
文档id 知识问答专有字段
子切片
显示子属性
隐藏子属性
显示子属性
隐藏子属性
切片的元数据信息
显示子属性
隐藏子属性
命中的内容在图片中的位置,可能一次对话命中一个文档中的多个段落,数组中每个元素代表一次命中的位置,每个位置用[x,y,w,h]表示,x y是框的左上角,w h是框的宽高
显示子属性
隐藏子属性
显示子属性
隐藏子属性
显示子属性
隐藏子属性
切片对应的原文档中的页形成的图片的url,有效期24h
当前切片在原文档中的页数
命中的文字在切片中的位置;
json转成的String,json格式为object。
字段包含box格式为list[list[int]]:命中的内容在切片中的位置;
page_num格式为list[int]:命中的内容在文档中的页数
切片匹配分
切片内容
子切片id
切片位置
数据集id 知识问答专有字段
切片id 知识问答专有字段
文档id 知识问答专有字段
文档名字 知识问答专有字段
关联原始切片,为空时代表是原始切片,非空是为扩展切片
原始切片的关联位置
切片类型(目前只有image)
文档名字 知识问答专有字段
是否是small2big合并后的切片。 如果是,则child_chunks中存储的是合并前的命中切片和扩展切片集合
知识库id 知识问答专有字段
关联原始切片。为空时代表是原始切片,非空是为扩展切片
和原始切片的关联位置
-1:代表上一个
1:代表下一个
event_type 为DataSheetAgent时,reference的参考信息
显示子属性
隐藏子属性
content信息的id
信息来源,值为search_db_sheet
类型,值为engine
数据库id
数据库名称
event_type 为DatabaseAgent,content_type为chart时,outputs.text.chart_data的json参考信息
显示子属性
隐藏子属性
直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放上下两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠
显示子属性
隐藏子属性
直角坐标系 grid 中的 y 轴,一般情况下单个 grid 组件最多只能放左右两个 y 轴,多于两个 y 轴需要通过配置 offset 属性防止同个位置多个 Y 轴的重叠。
显示子属性
隐藏子属性
图例组件
显示子属性
隐藏子属性
显示子属性
隐藏子属性
图表类型
显示子属性
隐藏子属性
ECharts 4 开始支持了 数据集(dataset)组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以自由指定数据到视觉的映射。这在不少场景下能带来使用上的方便;如"dataset": [{"dimensions": ["高校数量"], "source": [{"高校数量": 37}]}]
显示子属性
隐藏子属性
提示框组件
显示子属性
隐藏子属性
显示子属性
隐藏子属性
DatabaseAgent的reference参考信息
显示子属性
隐藏子属性
content信息的id
信息来源,值为database
类型,值为engine
数据表id
数据表名称
数据库id
数据库名称
消息内容
消息id
信息收集节点返回的中断事件id
信息收集节点返回的中断事件type
普通文本。
event_type为chatflow ,content_type是code时,代表“返回的代码”
代码格式
显示子属性
隐藏子属性
普通文本。
event_type为chatflow ,content_type是multiple_dialog_event时,固定为工作流Agent
事件id。
事件错误码
事件状态正常。
事件状出错时, 推送非0值,只代表事件状态,不代表整次对话状态。
事件类型
rag: 知识问答
function_call: function_call 工具
ChatAgent: 闲聊、总结、数字人口播文本
Workflow: 自定义工作流组件
DataSheetAgent:数据库问答(上传数据表)
DatabaseAgent:数据库问答(直连数据库)
MemoryTableAgent:记忆表
MemoryVariableWriter:记忆变量
chatflow:工作流Agent
FollowUpQuery: 追问
chat_reasoning: 问答模型深度思考的思维链,当前仅支持DeepSeek-R1。(暂不支持工作流Agent中展示思维链。)
其它工具: TTS、GetWeather、QueryArxiv、CodeInterpreter、WebPilot、WolframAlpha。
全部列表可见 事件类型说明 部分。
tool_calls: 需要用户本地调用的tool,包含了调用所需的参数和上下文
显示子属性
隐藏子属性
显示子属性
隐藏子属性
工具调用的ID。当您在提交工具输出时,必须引用此ID。
需要输出的工具调用的类型。就目前而言,这始终是function。
函数定义。
显示子属性
隐藏子属性
函数的名称
模型希望您传递给函数的参数,需要是一个json dump string
表示信息返回类型;
事件类型为rag时,返回以下结果:
docsearch_result:知识库文档中总结
empty_result:大模型根据经验总结
baidusearch_result:大模型从百度搜索查到后总结;
事件类型为chatflow时,返回以下结果:
chatflow:工作流Agent
事件本次输出内容的类型。
status 状态事件,无数据输出
text 文本回答
image 图片
files 文件
function_call:function_call
publish_message: chatflow中,用来返回中间消息。
chatflow_interrupt: chatflow中,“信息收集节点”返回的中断事件。
multiple_dialog_event: chatflow中,用来标识多轮对话进行中或者已经结束。
chatflow:chatflow
image: 图片url地址
audio:语音url地址
video: 视频url地址
oral_text:数字人口播文本
chat_reasoning: 问答模型深度思考的思维链,当前仅支持DeepSeek-R1。(暂不支持工作流Agent中展示思维链。)
事件执行状态:
preparing:准备中
running:运行中
error:错误
done:执行完成
interrupt:中断,等待用户提交 tool call结果
事件执行错误提示信息。
消息id, 流式场景下多次推流message_id保持一致。
request_id便于追踪。
流式消息推送回答结果是否完结。
对话id,可以用于后续调用,有效期为7天。
HTTP/1.1 200 OK
// 一条 function_call事件类型的流式消息
{
"request_id": "a335502e-502d-426d-9e87-ea8ad47efc8d",
"date": "2024-04-26T09:11:13Z",
"answer": "",
"conversation_id": "1fdc9182-de2d-4c56-bf64-a72d98c2b59f",
"message_id": "66c1c8c5-d04a-4376-91ff-3a7285e698f0",
"is_completion": false,
"content": [
{
"event_code": 0,
"event_message": "",
"event_type": "function_call",
"event_id": "6",
"event_status": "done",
"content_type": "function_call",
"outputs": {
"text": {
"arguments": {
"query": "对'北京小学.xlsx'文件中的'count'列数据进行求和操作",
"upload_file": "北京小学.xlsx"
},
"component_code": "CodeInterpreter",
"component_name": "代码解释器"
}
},
"usage": {
"prompt_tokens": 3476,
"completion_tokens": 0,
"total_tokens": 3476,
"name": "ERNIE-4.0-8K"
}
}
]
}
// 一条 ChatAgent 事件类型的流式消息
{
"request_id": "a335502e-502d-426d-9e87-ea8ad47efc8d",
"date": "2024-04-26T09:11:59Z",
"answer": "北京小学.xlsx'文件中的数据,这几所学校小学生的总数为:430人。",
"conversation_id": "1fdc9182-de2d-4c56-bf64-a72d98c2b59f",
"message_id": "66c1c8c5-d04a-4376-91ff-3a7285e698f0",
"is_completion": false,
"content": [
{
"event_code": 0,
"event_message": "",
"event_type": "ChatAgent",
"event_id": "13",
"event_status": "running",
"content_type": "text",
"outputs": {
"text": "北京小学.xlsx'文件中的数据,这几所学校小学生的总数为:430人。"
}
}
]
}
// 成功开启流式消息后,有出现异常需要终止流,返回的异常消息
{
"request_id": "ae2225f7-1c2e-427a-a1ad-5413b762957d",
"code": "ChatError",
"message": "流式消息发生异常"
}
// 一条 组件响应结果的流式消息
{
"request_id": "55d1825e-a3f6-4267-ae12-8061562f45f9",
"date": "2024-08-14T16:20:08Z",
"answer": "",
"conversation_id": "377208a9-2ec2-4ed3-bc1f-120d20d0018c",
"message_id": "9d637244-65e3-4b96-9f15-fe4ff69d5e15",
"is_completion": false,
"content": [
{
"result_type": "",
"event_code": 0,
"event_message": "",
"event_type": "QueryFlights",
"event_id": "2",
"event_status": "done",
"content_type": "text",
"visible_scope": "",
"outputs": {
"text": "[\n {\n \"航班号\": \"CZ8889\",\n \"是否延误\": null,\n \"是否改道\": null,\n \"是否取消\": null,\n \"始发地\": \"Beijing\",\n \"目的地\": \"上海 上海浦东 CN\",\n \"当前状态\": \"已到达 / 到达停机位\",\n \"预估出发时间\": \"2024-08-14T04:28:00Z\",\n \"实际出发时间\": \"2024-08-14T04:24:00Z\",\n \"预估到达时间\": \"2024-08-14T06:17:00Z\",\n \"实际到达间\": null\n }\n]"
}
}
]
}
// 一条 中断响应结果的流式消息
{
"code": 0,
"message": "",
"trace_id": "2f7b17ea-b526-4dec-946c-aef99d279c5b",
"time": 1723622172917,
"result": {
"answer": "",
"conversation_id": "c01171ba-e33f-4da3-aae1-b259c88e2140",
"message_id": "db4873e9-c30d-4721-8857-6856a0a28824",
"is_completion": false,
"content": [
{
"result_type": "",
"event_code": 0,
"event_message": "",
"node_name": "root",
"dependency_nodes": [
],
"event_type": "Interrupt",
"event_id": "0",
"event_status": "interrupt",
"content_type": "contexts",
"visible_scope": "",
"outputs": {
"text": {
"function_call": {
"thought": "用户想要知道今天北京的天气情况,这是一个明确的天气查询需求。根据工具描述,'get_current_weather'工具可以查询中国城市的天气,因此我将使用这个工具来满足用户的需求。",
"name": "get_current_weather",
"arguments": {
"location": "Beijing",
"unit": "celsius"
},
"usage": {
"prompt_tokens": 581,
"completion_tokens": 91,
"total_tokens": 672,
"name": "ERNIE-3.5-8K",
"type": "plan"
},
"tool_call_id": "4c03ac0d-7cd1-4bde-812f-63fa506c6aea"
},
"used_tool": [
]
}
},
"tool_calls": [
{
"id": "4c03ac0d-7cd1-4bde-812f-63fa506c6aea",
"type": "function",
"function": {
"name": "get_current_weather",
"arguments": {
"location": "Beijing",
"unit": "celsius"
}
}
}
]
}
],
"prototype": "function_call"
}
}
HTTP/1.1 401 OK
{
"request_id": "ae2225f7-1c2e-427a-a1ad-5413b762957d",
"code": "PermissionDeniedError",
"message": "没有权限"
}