ToolMessage 写回给调用它的 Agent。
当一个工具结果需要多步骤编排时,可以使用智能体工作流,例如数据检索、条件分支、迭代处理、调用其他工具、HTTP 请求、代码执行,以及最终结果格式化。
:::note
智能体工作流替代旧的 智能体工具(Agent Tool) 工作流节点。已有 agent-tool 节点会继续兼容运行,但新建工作流应使用 agent-workflow。
:::
工作机制
-
注册为工具
- 节点会注册为上游 Agent 可调用的工具。
工具名称、工具描述和工具参数会作为模型看到的工具名称、描述和入参 schema。
-
传递调用参数
- Agent 调用工具时,调用参数会保存到智能体工作流节点状态中。
- 每个配置的输入参数都会暴露给后续节点,变量路径为
args.<参数名>。
-
执行子工作流
- 智能体工作流后连接的节点就是这个工具的实现逻辑。
- 子工作流可以包含分支、迭代、工具调用、HTTP 请求、代码执行、模板转换、知识检索和 Agent 节点。
-
返回给调用 Agent
- 子工作流完成后,智能体工作流会创建
ToolMessage并写回调用它的 Agent。 - 调用 Agent 会基于该工具结果继续推理和回答。
- 子工作流完成后,智能体工作流会创建
配置说明
返回内容
智能体工作流支持三种返回方式:
如果后续路径最后是迭代节点,不要依赖最后消息。请选择迭代节点的输出变量,通常是
output_str,或者在迭代节点后添加回答节点并返回该结果。当智能体工作流以迭代路径结束且仍使用最后消息返回时,校验会报告错误。
兼容性
- 新节点使用
WorkflowNodeTypeEnum.AGENT_WORKFLOW,值为agent-workflow。 - 旧节点
WorkflowNodeTypeEnum.AGENT_TOOL,值为agent-tool,仍会为已有工作流继续加载和运行。 - 旧的智能体工具文档页仅作为废弃兼容入口保留。
最佳实践
- 为工具提供清晰的名称和描述,帮助 Agent 模型稳定选择它。
- 明确定义输入参数,不要让后续工作流依赖隐式上下文猜测。
- 生产流程优先使用变量或模版作为返回内容。
- 只有以回答或 Agent 响应结束的简单兼容流程,才建议使用最后消息。
- 如果存在分支,确保选择的返回变量在所有可能路径上都会产出,或在每条分支上使用模版/回答节点生成返回内容。