对话
接口描述
该接口用于在一轮对话中向agent应用发送消息。
在线调试
百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。
权限说明
Authorization需要填写密钥。
接口定义
Path | /v2/app/conversation/runs |
---|---|
Method | POST |
Content-Type | application/json |
Authorization | 请求签名(此签名为应用工作台密钥) |
请求结构
POST /v2/app/conversation/runs HTTP/1.1
HOST: qianfan.baidubce.com
Authorization: authorization string
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"
]
}
请求头域
除公共头域外,无其它特殊头域。
请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
app_id | string | 是 | app_id,来源于个人空间-应用-应用ID。应用分为自主规划agent和工作流agent。 |
end_user_id | string | 使用记忆时为是 | 终端用户ID,由用户自行定义与维护,限制6 - 64字符;该字段为记忆提供存储标识,若需完整使用记忆功能end_user_id必须输入。 |
query | string | 是 | 用户query文字, 长度限制2000字符。 |
stream | bool | 是 | 是否以流式接口的形式返回数据,默认false。 |
conversation_id | string | 是 | 对话id,可通过新建会话接口创建。 |
file_ids | list[string] | 否 | 如果在对话中上传了文件,可以将文件id放入该字段,目前只处理第一个文件。 |
tool_choice | object | 否 | 控制大模型使用组件的方式,仅对自主规划Agent生效。 |
tools | list[Tool] | 否 | 工具列表,其中每个字典对应一个工具,仅对自主规划Agent生效。 |
tool_outputs | list[ToolOutput] | 否 | 内容为本地工具执行的结果,仅对自主规划Agent生效。 |
action | object | 否 | 对话时要进行的特殊操作。如回复工作流agent中“信息收集节点“的消息。 |
tool_choice对象
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 类型,可选值为:auto:由LLM自动判断调什么组件;function:由用户指定调用哪个组件,仅支持强制命中通过工作流自定义的组件,官方组件不支持强制命中;如果想获取组件的原始输出,请在应用回复设置中将该组件设置成回复节点,详细操作可参考调用示例 |
function | object | 否 | 组件对象,包括组件的英文名称和入参 |
tool_choice.function对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
name | string | 是 | 组件的英文名称(唯一标识),用户通过工作流完成自定义组件后,可在个人空间-组件下查看组件英文名称 |
input | object | 是 | 当组件没有入参时填入空对象{} |
Tool对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
type | string | 是 | 枚举: function: 支持fucntion call模式调用工具 |
function | object | 是 | 工具对象 |
Tool.function对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
name | string | 是 | 函数名 只允许数字、大小写字母和中划线和下划线,最大长度为64个字符。一次运行中唯一。 |
description | string | 是 | 函数描述 |
parameters | object | 是 | 函数请求参数,JSON Schema 格式,参考JSON Schema描述 在此基础上,新增约束如下: 1. 当某一字段为object类型时,properties字段必选,properties内可为空。 2. 当某一字段为array类型时,items字段必选,items内可为空。 |
ToolOutput对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
tool_call_id | string | 是 | 工具调用的ID。 来源于上一轮Run请求时,Interrupt状态时,tool_calls \ id字段 |
output | string | 是 | function call工具的输出。 如果是json,也需要对json序列化成string |
Action对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
action_type | string | 是 | 要执行的操作。 可选值为:resume:回复“信息收集节点” 的消息 |
parameters | string | 是 | 执行操作时所需的参数 |
parameters(action_type为resume)时
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
interrupt_event | object | 是 | 要回复的“信息收集节点”中断事件的信息 |
id | string | 是 | 要回复的“信息收集节点”中断事件的id。为上次对话“信息收集节点”返回的{"interrupt_event_id": "e4ebfab8-4557-4e3c-9481-a38c4b6d2955", "interrupt_event_type": "chat"}中的interrupt_event_id。 |
type | string | 是 | 要回复的”信息收集节点“中断事件的type。为上次对话“信息收集节点”返回的{"interrupt_event_id": "e4ebfab8-4557-4e3c-9481-a38c4b6d2955", "interrupt_event_type": "chat"}中的interrupt_event_type,当前仅有一个类型 "chat"。 |
响应头域
除公共头域外,无其它特殊头域。
响应参数
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
request_id | string | 是 | request_id便于追踪。 |
date | string | 是 | 消息返回时间的时间戳 UTC时间格式。 |
answer | string | 是 | 文字答案。 流式场景下是增量数据。 |
conversation_id | string | 是 | 对话id,可以用于后续调用,有效期为7天。 |
message_id | string | 是 | 消息id, 流式场景下多次推流message_id保持一致。 |
is_completion | boolean | 是 | 流式消息推送回答结果是否完结。 |
content | list[dict] | 是 | 节点输出信息相关内容。具体见下文content字段定义。 |
content字段
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
result_type | string | 否 | 表示信息返回类型;事件类型为rag时,返回以下结果:docsearch_result:知识库文档中总结 empty_result:大模型根据经验总结baidusearch_result:大模型从百度搜索查到后总结; 事件类型为chatflow时,返回以下结果: chatflow:工作流Agent |
event_code | int | 是 | 事件错误码 事件状态正常。 事件状出错时, 推送非0值,只代表事件状态,不代表整次对话状态。 |
event_message | string | 是 | 事件执行错误提示信息。 |
event_type | enum | 是 | 事件类型 rag: 知识问答function_call: function_call 工具ChatAgent: 闲聊、总结、数字人口播文本Workflow: 自定义工作流组件DataSheetAgent:数据库问答(上传数据表)DatabaseAgent:数据库问答(直连数据库)MemoryTableAgent:记忆表MemoryVariableWriter:记忆变量chatflow:工作流Agent其它工具: TTS、GetWeather、QueryArxiv、CodeInterpreter、WebPilot、WolframAlpha。全部列表可见 事件类型说明 部分。 |
event_id | string | 是 | 事件id。 |
event_status | enum | 是 | 事件执行状态: preparing:准备中 running:运行中 error:错误 done:执行完成 interrupt:中断,等待用户提交 tool call结果 |
content_type | enum | 是 | 事件本次输出内容的类型。status 状态事件,无数据输出 text 文本回答 image 图片 files 文件 function_call:function_call publish_message: chatflow中,用来返回中间消息。 chatflow_interrupt: chatflow中,“信息收集节点”返回的中断事件。 multiple_dialog_event: chatflow中,用来标识多轮对话进行中或者已经结束。 chatflow:chatflowimage: 图片url地址 audio:语音url地址 video: 视频url地址 oral_text:数字人口播文本 |
outputs | object | 是 | 每个事件个性化输出内容的汇总字段,根据事件的类型不同, outputs下内容不同。 |
usage | object | 是 | 模型用量 仅Chat Agent和Function Call有,按照各个独立的event_type计数。 |
tool_calls | list[ToolCall] | 否 | tool_calls: 需要用户本地调用的tool,包含了调用所需的参数和上下文 |
usage 模型用量对象
字段名称 | 类型 | 必然存在 | 说明 |
---|---|---|---|
prompt_tokens | int | 是 | 输入token数 |
completion_tokens | int | 是 | 输出token数 |
total_tokens | int | 是 | 总token数 |
name | string | 是 | 消耗tokens的模型名称 |
ToolCall对象
字段名称 | 类型 | 必然存在 | 说明 |
---|---|---|---|
id | string | 是 | 工具调用的ID。当您在提交工具输出时,必须引用此ID。 |
type | string | 是 | 需要输出的工具调用的类型。就目前而言,这始终是function。 |
function | object | 是 | 函数定义。 |
function \ name | string | 是 | 函数的名称 |
function \ arguments | string | 是 | 模型希望您传递给函数的参数,需要是一个json dump string |
outputs字段
说明: 每个事件类型的outputs字段均不相同。
字段名称 | 类型 | 描述 |
---|---|---|
outputs | Object | event_type 为 rag , 结果包括以下字段: text: string 普通文本 references list[object] 包含reference对象的数组, reference格式在下面定义 event_type 为 function_call , 结果包括以下字段: text: string 普通文本。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为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 为其它组件名,可能会出现以下多种字段 urls: 外部链接 files: 工具生成的文件链接 image:工具生成的图片url audio:工具生成的语音url video:工具生成的视频url |
-- text | string | 各个事件都可能产生文字信息 |
-- meta | json | 自定义组件信息 |
-- references | list[object] | 通用类型 Reference的列表 |
-- urls | list[string] | 工具生成的文件链接列表 |
-- files | list[string] | 工具生成的可下载文件地址列表 |
-- image | string | 工具生成的图片url |
-- audio | string | 工具生成的语音url |
-- video | string | 工具生成的视频url |
rag的reference参考信息
定义: 问答结果中的引用参考。 如大模型的回答引用了某切片, 需要在问答结果中标注出答案的来源位置。
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
id | String | 是 | content信息的id |
from | String | 是 | 信息来源 |
url | String | 否 | BaiduSearch 的专用字段 |
content | String | 是 | 文字描述 通用字段,一般用来当做文档名或者链接的title使用 |
segment_id | String | 否 | 切片id 知识问答专有字段 |
document_id | String | 否 | 文档id 知识问答专有字段 |
dataset_id | String | 否 | 数据集id 知识问答专有字段 |
knowledge_base_id | String | 否 | 知识库id 知识问答专有字段 |
document_name | String | 否 | 文档名字 知识问答专有字段 |
score | float | 是 | 切片匹配分 |
coord | String | 否 | 命中的文字在切片中的位置;json转成的String,json格式为object,结果包含以下字段:box list[list[int]] 命中的内容在切片中的位置;page_num list[int] 命中的内容在文档中的页数 |
child_chunks | list[object] | 否 | 子切片 |
child_chunks/chunk_id | string | 否 | 子切片id |
child_chunks/type | string | 否 | 切片类型(目前只有image) |
child_chunks/meta | object | 否 | 切片的元数据信息 |
child_chunks/meta/page_num | int | 否 | 当前切片在原文档中的页数 |
child_chunks/meta/url | string | 否 | 切片对应的原文档中的页形成的图片的url,有效期24h |
child_chunks/meta/box | list[list[int]] | 否 | 命中的内容在图片中的位置,可能一次对话命中一个文档中的多个段落,数组中每个元素代表一次命中的位置,每个位置用[x,y,w,h]表示,x y是框的左上角,w h是框的宽高 |
function_call描述json
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
arguments | String | 是 | 参数 |
component_code | String | 是 | 组件编码 |
component_name | String | 是 | 组件名称 |
meta自定义组件描述json
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
workflow_id | String | 是 | 组件id |
workflow_code | String | 是 | 组件编码 |
workflow_name | String | 是 | 组件名称 |
desc | String | 是 | 组件描述 |
event_type 为DataSheetAgent时,reference的参考信息
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
id | int | 是 | content信息的id |
type | String | 是 | 类型,值为engine |
from | String | 是 | 信息来源,值为search_db_sheet |
datasheet_id | String | 是 | 数据库id |
datasheet_name | String | 是 | 数据库名称 |
event_type 为DatabaseAgent,content_type为chart时,outputs.text.chart_data的json参考信息
注:详情可查看ECharts官网
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
legend | [object] | 是 | 图例组件 |
tooltip | [object] | 是 | 提示框组件 |
dataset | list[string] | 是 | ECharts 4 开始支持了 数据集 (dataset )组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以自由指定数据到视觉的映射。这在不少场景下能带来使用上的方便;如"dataset": [{"dimensions": ["高校数量"], "source": [{"高校数量": 37}]}] |
xAxis | [string] | 是 | 直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放上下两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠 |
yAxis | [string] | 是 | 直角坐标系 grid 中的 y 轴,一般情况下单个 grid 组件最多只能放左右两个 y 轴,多于两个 y 轴需要通过配置 offset 属性防止同个位置多个 Y 轴的重叠。 |
series | list[string] | 是 | 图表类型 |
DatabaseAgent的reference参考信息
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
id | int | 是 | content信息的id |
type | String | 是 | 类型,值为engine |
from | String | 是 | 信息来源,值为database |
database_id | String | 是 | 数据库id |
database_name | String | 是 | 数据库名称 |
table_id | String | 是 | 数据表id |
table_name | String | 是 | 数据表名称 |
事件类型说明
事件编码 | 事件名称 |
---|---|
rag | 知识问答 |
function_call | function_call 工具 |
ChatAgent | 闲聊、总结、数字人口播文本 |
Workflow | 自定义工作流组件 |
DataSheetAgent | 数据库问答(上传数据表) |
DatabaseAgent | 数据库问答(直连数据库) |
MemoryTableAgent | 记忆表 |
MemoryVariableWriter | 记忆变量 |
chatflow | 工作流Agent |
SimilarQuestion | 相似问生成 |
WeatherQuery | 天气查询 |
QueryExpressPackage | 快递查询 |
QueryFlights | 航班动态查询 |
DocumentUnderstanding | 长文档内容理解 |
Translation | 文本翻译-通用版 |
TableOCR | 表格文字识别 |
PlantRecognition | 植物识别 |
ImageUnderstand | 图像内容理解 |
HandwriteOCR | 手写文字识别 |
QRcodeOCR | 二维码识别 |
VideoGet | 热门视频 |
CodeInterpreter | 代码解释器 |
Arxiv | 论文搜索 |
WebPilot | 浏览网页 |
NewsGet | 头条新闻 |
TTS | 短文本在线合成 |
WolframAlpha | Wolfram Alpha |
BingImageSearch | 必应图片搜索 |
ZhouGongDreamInterpreter | 周公解梦大师 |
HealthAssistant | 健康小助手 |
AnimalRecognition | 动物识别 |
ObjectRecognition | 通用物体和场景识别-高级版 |
GeneralOCR | 通用文字识别-高精度版 |
LotteryResult | 彩票开奖结果 |
DocFormatConverter | 文档格式转换 |
ASR | 短语音识别-极速版 |
Text2Image | 文生图 |
ECommerceProductInquiryTB | 电商商品查询-tb |
BaiduSearch | 百度搜索 |
ECommerceProductInquiryJD | 电商商品查询-jd |
DocCropEnhance | 文档矫正增强 |
WebSummary | 网页内容总结 |
SportsEventInformation | 体育赛事信息 |
BaiduNovel | 百度小说 |
Excel2Figure | Excel转图表 |
MixCardOCR | 身份证混贴识别 |
StyleRewrite | 风格转写 |
StyleWriting | 风格写作 |
ExchangeRateCalc | 汇率计算 |
FundExpert | 基金专家 |
MovieAssistant | 电影助手 |
TravelExpert | 旅游达人 |
ImageAssistant | 搜图助手 |
ExamAssistant | 高考助手 |
StockGuru | 股票大师 |
ArticleAssistant | 文库助手 |
RoutePlanning | 百度地图路线规划 |
QueryRewrite | 多轮改写 |
Nl2pandas | 自然语言转pandas |
TagExtraction | 标签抽取 |
DialogSummary | 会话小结 |
OralQueryGeneration | 口语化Query生成 |
QueryDecomposition | 复杂Query分解 |
IsComplexQuery | 复杂Query判定 |
QAPairMining | 问答对挖掘 |
MRC | 阅读理解问答 |
Playground | 空应用 |
SelectTable | GBI选表 |
NL2Sql | GBI问表 |
DishRecognition | 菜品识别 |
LandmarkRecognition | 地标识别 |
DocParser | 文档解析 |
DocSplitter | 文档切分 |
Matching | 语义匹配 |
Embedding | 向量计算 |
HandwriteOCR | 手写体OCR识别 |
ExtractTableFromDoc | 表格抽取 |
BESRetriever | 向量检索-BES |
BaiduVDBRetriever | 向量检索-VDB |
HallucinationDetection | 幻觉检测 |
MusicAssistant | 音乐助手 |
HotDramaAssistant | 热剧助手 |
CardInfoExtractor | 卡证信息抽取 |
请求curl示例
curl --location 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer authorization string' \
--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"
]
}'
正确响应示例
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": "流式消息发生异常"
}
错误响应示例
HTTP/1.1 401 OK
{
"request_id": "ae2225f7-1c2e-427a-a1ad-5413b762957d",
"code": "PermissionDeniedError",
"message": "没有权限"
}
其他示例
1. 强制执行组件
开发者可以通过tool_chioce字段,绕过思考模型,直接对工作流组件进行调用,示例如下。注意,用户只需传入组件开始节点的新增参数,系统参数如rawQuery、chatHistory、fileUrls等,不需要传入,组件会自动获取对应app_id的系统参数。
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer authorization string' \
--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"
}
}
}
}'
组件执行完后,默认要经过问答模型进行总结。如想绕过问答模型,获取组件的原始输出,请在应用回复设置中将该组件设置成回复节点。注意,含有百度搜索节点的组件,不支持获取组件原始输出。
HTTP/1.1 200 OK
// 一条 组件响应结果的流式消息
{
"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]"
}
}
]
}
2. Function call本地函数
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer authorization string' \
--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"
]
}
}
}
]
}'
HTTP/1.1 200 OK
// 一条 中断响应结果的流式消息
{
"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"
}
}
3. 上报工具调用结果
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer authorization string' \
--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度"
}
]
}'
4. 回复“信息收集节点”的消息
当工作流agent中存在"信息收集节点",并且需要回复“信息收集节点”的消息时:
先发送第一轮消息,通过第一轮消息的回复,获取到interrupt_event_id 和 interrupt_event_type
curl --location --request POST 'https://qianfan.baidubce.com/v2/app/conversation/runs' \
--header 'Authorization: Bearer authorization string' \
--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 authorization string' \
--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"
}
}
}
}'
在线调试
AppBuilder提供了API调试平台,支持Python、Java、PHP、C#、Go、Node.js、C++ 7种主流语言示例代码自动生成。同时可以帮助开发者在线调试OpenAPI接口,支持查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。