Skip to main content
多代理系统通过协调专业化组件来处理复杂工作流。然而,并非每个复杂任务都需要这种方式——配备了合适(有时是动态的)工具和提示词的单个代理通常也能实现类似的效果。

为什么需要多代理?

当开发者说他们需要”多代理”时,通常是在寻找以下一种或多种能力:
  • 上下文管理:在不超出模型上下文窗口限制的情况下提供专业知识。如果上下文无限且延迟为零,你可以将所有知识塞入单个提示词——但现实中做不到,因此需要一些模式来选择性地呈现相关信息。
  • 分布式开发:允许不同团队独立开发和维护各自的能力,并通过清晰的边界将它们组合成更大的系统。
  • 并行化:为子任务生成专业工作进程并并发执行,从而加快结果获取速度。
当单个代理拥有过多工具而难以正确选择时、当任务需要具备大量上下文的专业知识(长提示词和领域专用工具)时,或者当你需要强制执行顺序约束——只有满足特定条件后才能解锁某些能力时,多代理模式尤为有价值。
多代理设计的核心是**上下文工程**——决定每个代理能看到哪些信息。系统质量取决于确保每个代理都能访问其任务所需的正确数据。

模式

以下是构建多代理系统的主要模式,每种模式适用于不同的使用场景:
模式工作原理
子代理主代理将子代理作为工具进行协调。所有路由都经过主代理,由其决定何时以及如何调用每个子代理。
移交行为根据状态动态变化。工具调用更新状态变量,触发路由或配置变更,切换代理或调整当前代理的工具和提示词。
技能按需加载专业提示词和知识。单个代理保持控制权,同时根据需要从技能中加载上下文。
路由器路由步骤对输入进行分类并将其定向到一个或多个专业代理。结果被合并成综合响应。
自定义工作流使用 LangGraph 构建定制化执行流,将确定性逻辑与代理行为混合使用。将其他模式作为节点嵌入工作流中。

选择模式

使用此表格将你的需求与合适的模式进行匹配:
模式分布式开发并行化多跳直接用户交互
子代理⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
移交⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
技能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
路由器⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
  • 分布式开发:不同团队能否独立维护各自的组件?
  • 并行化:多个代理能否并发执行?
  • 多跳:该模式是否支持串行调用多个子代理?
  • 直接用户交互:子代理能否直接与用户对话?
你可以混合使用多种模式!例如,子代理架构可以调用触发自定义工作流或路由器代理的工具。子代理甚至可以使用技能模式按需加载上下文。可能性是无穷无尽的!

可视化概览

主代理将子代理作为工具进行协调。所有路由都经过主代理。
子代理模式:主代理将子代理作为工具进行协调

性能对比

不同模式具有不同的性能特征。了解这些权衡有助于你根据延迟和成本要求选择合适的模式。 关键指标:
  • 模型调用次数:LLM 调用的次数。调用越多 = 延迟越高(尤其是串行时)且每次请求的 API 成本越高。
  • 处理的 Token 数:所有调用中上下文窗口的总使用量。Token 越多 = 处理成本越高,且可能触及上下文限制。

单次请求

用户: “买咖啡”
专业的咖啡代理/技能可以调用 buy_coffee 工具。
模式模型调用次数最佳选择
子代理4
移交3
技能3
路由器3
4 次模型调用:
子代理单次请求:买咖啡请求需 4 次模型调用
关键洞察: 移交、技能和路由器对单个任务最为高效(各需 3 次调用)。子代理多一次额外调用,因为结果需要回流到主代理——这一开销换来的是集中化控制。

重复请求

第 1 轮: “买咖啡” 第 2 轮: “再买一次咖啡”
用户在同一对话中重复相同的请求。
模式第 2 轮调用次数总计(两轮)最佳选择
子代理48
移交25
技能25
路由器36
再次 4 次调用 → 共 8 次
  • 子代理在设计上是无状态的——每次调用都遵循相同的流程
  • 主代理维护对话上下文,但子代理每次都从头开始
  • 这提供了强大的上下文隔离,但会重复完整的流程
关键洞察: 有状态模式(移交、技能)在重复请求时节省 40-50% 的调用次数。子代理的每次请求成本保持一致——这种无状态设计提供了强大的上下文隔离,但代价是重复的模型调用。

多领域

用户: “比较 Python、JavaScript 和 Rust 在 Web 开发中的应用”
每个语言代理/技能包含约 2000 个 Token 的文档。所有模式均可发起并行工具调用。
模式模型调用次数总 Token 数最佳选择
子代理5~9K
移交7+~14K+
技能3~15K
路由器5~9K
5 次调用,约 9K Token
子代理多领域:5 次调用并行执行
每个子代理在隔离环境中运行,仅访问与其相关的上下文。总计:9K Token
关键洞察: 对于多领域任务,具备并行执行能力的模式(子代理、路由器)最为高效。技能的调用次数更少,但因上下文累积而导致 Token 使用量较高。移交在此场景下效率低下——它必须串行执行,无法利用并行工具调用同时查询多个领域。

总结

以下是三种场景下各模式的对比:
模式单次请求重复请求多领域
子代理4 次调用8 次调用 (4+4)5 次调用,9K Token
移交3 次调用5 次调用 (3+2)7+ 次调用,14K+ Token
技能3 次调用5 次调用 (3+2)3 次调用,15K Token
路由器3 次调用6 次调用 (3+3)5 次调用,9K Token
选择模式:
优化目标子代理移交技能路由器
单次请求
重复请求
并行执行
大上下文领域
简单、专注的任务