n8n 的多智能体编排可以从一个主 Agent 和两个 AI Agent Tool 开始:主 Agent 接收问题并决定委派,计算 Agent 负责算式,回复 Agent 把已确认的数字整理成一句客户答复。重点是职责与传递的数据可核对,而不是在画布上多放几个聊天模型。
下面用“129 元买 3 件、运费 12 元”演示分工,预期金额为 399 元。它是依据 2026 年 10 月 1 日官方文档和项目源码整理的教学方案,未在真实 n8n 实例运行;不是已经验证的客户案例,也不保证模型每次按同一路径调用。

先画清楚连接关系
Chat Trigger → 主 AI Agent → 最终聊天答复
├ Chat Model:主 Agent 的模型
├ Tool:calculate_quote(AI Agent Tool)
│ ├ Chat Model:计算 Agent 的模型
│ └ Tool:Calculator
└ Tool:compose_reply(AI Agent Tool)
└ Chat Model:回复 Agent 的模型
两个 AI Agent Tool 都连接到主 Agent 的 Tool 接口,而不是排成两条普通主流程实线。每个子 Agent 都要有自己的 Chat Model 连接;它们可以选择同一个可用模型和相同凭证,但不能省略子节点的模型接口。
本文针对界面中能添加 AI Agent Tool 的近期节点版本。官方项目的Agent Tool v3 定义把聊天模型列为必要输入、工具列为可选输入,因此纯粹整理已知文本的回复 Agent 可以不再接外部工具。如果你的旧节点提示缺少工具,先核对并更新节点版本,不要随意加一个无关工具消除报错。
1. 配置只负责计算的子 Agent
- 在现有主 Agent 的 Tool 接口添加 AI Agent Tool,把节点名称改为
calculate_quote。 - 在它自己的 Chat Model 接口添加已验证可用、支持工具调用的聊天模型;在 Tool 接口添加 Calculator。
- 设置 Description:“根据明确提供的单价、数量、运费计算合计。适合金额核算;缺少数字时返回缺失字段,不编造折扣、税费或价格。”
- Prompt (User Message) 切为表达式,设置为下方 task 表达式。主 Agent 通过工具参数把计算任务交给子 Agent。
{{ $fromAI('task', '完整的计算任务,必须包含用户给出的单价、数量、运费以及限制', 'string') }}
在计算子 Agent 的 System Message 中写:
你只做金额计算。
有齐全数字时必须使用 Calculator;先算商品金额,再加运费。
返回三行:输入条件、计算表达式、合计金额。
没有提供的税费、折扣和费用一律不补。
缺少条件时返回“缺失信息:...”并列出缺失字段。
先不启用 Require Specific Output Format,以便直接查看三行文本;后续要写入数据库时,再单独增加输出解析和字段校验。工具参数填充方式可查$fromAI 官方说明。
2. 配置只负责整理答复的子 Agent
再从主 Agent 的 Tool 接口添加第二个 AI Agent Tool,命名为 compose_reply,接入它的 Chat Model。Description 写为:“仅根据已提供的计算结果写一段客户答复;不能查询价格、重新算数或承诺订单已创建。”
Prompt (User Message) 用下面的表达式,并设置对应系统指令:
{{ $fromAI('reply_context', '用户需求、已核对的计算表达式和金额;缺失信息也要原样包含', 'string') }}
把提供的已确认信息整理为一句简短答复。
保留金额、数量、运费,不增加新价格或新政策。
有“缺失信息”时只提出补充问题,不能给出合计。
这是演示报价,不说订单已经下单或库存已经锁定。
这里不是让两个 Agent互相聊天。父节点每次调用其中一个,拿到工具结果后决定下一步;任务与结果应出现在执行记录中。官方AI Agent Tool 文档说明了父 Agent 委派、Description、Prompt、System Message 与嵌套能力。
3. 让主 Agent 控制顺序与失败条件
主 Agent 接受 Chat Trigger 的 chatInput,系统指令设置为:
你是报价演示的主管。
涉及金额时,先把用户完整条件交给 calculate_quote,不自行计算。
拿到计算结果后,把用户需求和计算结果原样交给 compose_reply。
若计算工具返回缺失信息或调用失败,禁止继续给出报价。
确认最终答复保留计算工具返回的金额,没有新增费用。
返回 compose_reply 的简短答复,说明这是演示报价。
单纯问用途时直接说明,不需要强制调用两个工具。
在主 Agent 和计算子 Agent 的 Options 中开启 Return Intermediate Steps。调试过程中用它核对委派顺序。Max Iterations 是允许模型尝试的上限,不表示保证成功;先保留合理的默认值,出现反复调用时查任务描述,不要无限调高。
4. 检查每层做了什么
发送:“请给客户一段简短报价回复:单价 129 元,数量 3,运费 12 元,没有折扣。”本例希望看到如下过程,措辞不必逐字相同:
| 层级 | 预期行为 | 检查依据 |
|---|---|---|
| 主 Agent | 先调用 calculate_quote | 工具名与传入的 task 包含 129、3、12 |
| 计算 Agent | 调用 Calculator | 表达式 129 * 3 + 12,结果 399 |
| 主 Agent | 把算式和 399 交给 compose_reply | reply_context 中没有丢失运费或新增折扣 |
| 回复 Agent | 给出含 399 元的演示报价 | 不声称下单成功、锁定库存或真实商店价格 |
再用“单价 129 元,买几件还没决定”测试缺失条件。应询问数量与运费条件,不能擅用之前的 3 件和 12 元。本例不配置记忆,每次把完整条件写进消息。
什么时候应改用固定工作流?
如果无论输入是什么,都必须按“计算 → 审核 → 回复”严格执行,普通节点顺序或子工作流调用更容易保证流程。AI Agent Tool 适合由主 Agent根据任务决定委派;提示词要求的顺序不等同于确定性流程控制。
也不要把多智能体数量当成效果指标。多一次模型调用通常增加耗时和用量,先对相同样本核对准确性、缺失输入处理与调用成本。批处理时还要注意:官方文档提醒子节点表达式通常解析第一条 item,不能把一批不同客户的输入直接当作已经隔离的任务。
如果最后金额不对,从最先变错的字段开始查:原始输入是否完整、task 是否丢字段、Calculator 是否真的执行、reply_context 是否传错。主节点参数与工具行为可再对照Tools Agent 文档和Calculator 文档。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30180.html