跳转至

Graph 配置

Graph 配置控制工作流执行。理解关键设置有助于构建高效的多智能体工作流。

配置概览

Graph 配置分为两个层级:

层级 控制内容 关键设置
Graph 层级 整体工作流 名称、描述、输出格式
Node 层级 单个执行单元 Agent/模型、提示词、工具、连接

Graph 层级设置

设置项 作用 说明
名称 工作流标识符 不能包含 / \ .
描述 工作流功能说明 帮助组织和搜索
输出模板 格式化最终输出 组合多个节点的结果

输出模板 使用 {{node_name}} 语法组合节点输出:

# 报告
## 数据:{{collector}}
## 分析:{{analyzer}}

节点设置

每个节点有 6 个配置类别:

1. 标识

设置项 必填 作用
名称 节点标识符(不含 / \ .
描述 节点功能说明

2. 执行来源

选择一种方式:

方式 使用场景 获得什么
使用 Agent (agent_name) 复用已配置的 Agent 继承 Agent 的模型、提示词、工具
使用模型 (model_name) 自定义临时节点 完全手动控制提示词和工具
使用子图 (is_subgraph + subgraph_name) 调用另一个工作流 模块化、可复用的逻辑

Agent 覆盖:使用 Agent 时,节点设置会覆盖 Agent 默认值。例如,在节点中设置 model_name 会使用不同模型,同时保留 Agent 的提示词和工具。

3. 提示词

设置项 作用 支持变量
系统提示词 定义节点行为和角色
用户提示词 本次执行的具体任务

提示词中的变量替换:

语法 含义 示例
{{start}} 用户的原始输入 分析:{{start}}
{{node_name}} 引用节点的输出 总结:{{researcher}}
{{node_name:3}} 引用节点最近 3 次输出 审查:{{checker:3}}
{{node_name:all}} 引用节点所有输出 合并:{{processor:all}}
{{@prompt_name}} 引用已注册的提示词 {{@data_analyst}}

4. 工具

设置项 作用
系统工具 内置功能(file_creatormemory_tools 等)
MCP 服务器 外部服务(网页搜索、数据库、API)

5. 执行控制

设置项 默认值 范围 作用
最大迭代次数 50 1-200 限制单次执行的工具调用次数
Handoffs - - 节点可被重新选择的次数(用于循环)
输出启用 true - 向用户显示结果 vs 静默处理

最大迭代次数指南:

范围 使用场景
1-10 快速任务、简单查询
10-30 多步骤工作流
30-50 复杂分析(默认)
50-100 深度研究、代码生成
100-200 长时间运行的自动化

Handoffs 启用循环。设置为 3 时,节点在被禁用前可被选择最多 3 次。详见 Handoffs 了解路由逻辑。

输出启用 控制可见性:

设置 显示内容 用于
true 助手回复 面向用户的结果
false 仅工具结果 后台处理

6. 连接

设置项 作用
输入节点 此节点从哪里接收数据
输出节点 此节点向哪里发送数据

特殊值:

含义
["start"] 接收用户输入
["end"] 结束工作流

连接示例:

输入 输出 流向
["start"] ["processor"] 用户 → processor
["collector"] ["analyzer"] collector → analyzer
["validator"] ["end"] validator → 结束
["router"] ["option_a", "option_b"] router → 多路径

配置模式

快速响应

  • 最大迭代次数:10-20
  • 最少工具
  • 单一路径(无分支)

深度分析

  • 最大迭代次数:50-100
  • 多个 MCP 服务器
  • 文件/记忆操作的系统工具

后台处理

  • 处理节点的输出启用:false
  • 最终通知节点的输出启用:true

模块化工作流

  • 使用子图实现可复用逻辑
  • 每个子图处理一个职责
  • 顺序连接子图

常见问题

Q: agent_name 和 model_name 有什么区别?

设置项 使用对象 适用场景
agent_name 预配置的 Agent 可复用、行为一致
model_name 直接访问模型 自定义、一次性任务

Q: 可以覆盖 Agent 的设置吗?

可以。使用 agent_name 时,任何节点设置都会覆盖 Agent 默认值: - model_name → 使用不同模型 - system_prompt → 不同行为 - mcp_servers → 不同工具 - max_iterations → 不同限制

Q: 如何引用前面节点的输出?

在提示词中使用 {{node_name}}。连接到 ["start"] 的第一个节点可以使用 {{start}} 获取用户输入。

Q: 达到最大迭代次数会怎样?

执行优雅停止。节点返回已生成的内容。不会报错。

Q: 子图可以相互调用吗?

不能循环调用。如果 A 调用 B,那么 B 不能调用 A。

Q: 同一层级的节点如何执行?

按节点列表中出现的顺序依次执行。