最近,AI 社区中关于构建智能体 (Agent) 正确方式的争论,因 Cognition 公司的文章 "不要构建多智能体系统" (cognition.ai/blog/dont-b…) 和 Anthropic 公司的文章 "我们如何构建多智能体研究系统" (www.anthropic.com/engineering…) 而愈演愈烈。尽管两篇文章标题针锋相对,但其核心观点却惊人地一致。选择单智能体还是多智能体系统,并非意识形态之争,而在于为合适的任务选择合适的工具。
在深入探讨之前,我们先来下一个简单的定义。
什么是单智能体 (Single Agent)?
单智能体系统以 “单一进程” 的方式运作。你可以把它想象成一个高度专注的员工,从头到尾独立完成一项任务。它会维持一条连续的思维 (记忆) 和行动 (工具) 链条,以确保每一步都基于之前的所有信息。
图片来源: Cognition - 不要构建多智能体系统
主要特点:
- 顺序执行 (Sequential): 按部就班地执行操作。智能体必须完成步骤 A 才能进行步骤 B。
- 统一上下文 (Unified Context): 维持一个单一、连续的完整对话历史。每个新步骤都能访问之前所有的步骤、思考过程和工具输出。
- 状态维持 (Stateful): 早期的决策会直接且完整地影响后续的行动,无需通过信息传递。
优点:
- 上下文连续性: 步骤之间不会丢失任何信息。
- 简单性: 更易于调试、测试和维护。
- 透明度: 执行路径和决策逻辑清晰明了。
缺点:
- 顺序瓶颈: 对于那些可以并行处理的任务,单智能体系统会显得效率低下。
- 上下文窗口限制: 最终会超出 (有效的) 上下文窗口容量,导致出错和遗忘部分细节。
- 效率低下: 可能会在重复的上下文中浪费词元 (token) ,且受限于单一模型的能力和指令集。
什么是多智能体系统 (Multi-Agent System)?
多智能体系统就像一个团队。它通常包含一个 “主智能体” (lead agent) ,负责将大目标分解为小任务,再分配给多个可并行操作的 “工作智能体” (worker agent) 。
主要特点:
- 并行执行 (Parallel Execution): 多个智能体可以同时处理不同的子任务。
- 任务委托 (Delegation): 通常由一个 “主智能体” 来分解主目标、委派子任务,并整合各个工作智能体的结果。
- 分布式上下文 (Distributed Context): 每个智能体在自己独立的上下文中运作,这个上下文通常只是全部信息的一个子集。
优点:
- 并行处理: 可以同时探索多个解决方案路径,从而减少延迟。
- 专业化: 每个智能体都可以针对特定任务进行优化和指令调整。
- 处理广度: 能够解决复杂的、涉及多个方面的问题。
缺点:
- 上下文共享: 在不同智能体之间有效共享上下文非常困难。
- 协调复杂: 各个智能体可能会重复劳动或做出相互冲突的决策。
- 成本高昂: 可能消耗更多的词元 (token) 。 (Anthropic 的数据显示:词元消耗量是标准聊天交互的 15 倍)
*注意: *值得一提的是,还有其他类型的多智能体模式,例如,不设 “主智能体” 的 “蜂群” (swarm) 模式。在这种模式下,智能体以更接近点对点的方式协作解决问题。它兼具单智能体 (如统一上下文) 和多智能体 (如独立指令) 的特点,但同时也面临着其特有的挑战。
单智能体 vs. 多智能体系统对比
| 方面 | 单智能体系统 | 多智能体系统 |
|---|---|---|
| 上下文管理 | 连续,无信息丢失 | 需要复杂的共享机制 |
| 执行速度 | 顺序执行 | 并行执行 |
| 词元 (token) 使用量 | 聊天交互的 4 倍 | 聊天交互的 15 倍 |
| 可靠性 | 高,结果可预测 | 较低,可能出现意外的涌现行为 |
| 调试难度 | 相对直接 | 复杂,具有非确定性 |
| 最佳适用场景 | 顺序执行、依赖状态的任务 (“写入型” 任务) | 可并行处理、探索性的任务 (“读取型” 任务) |
| 协调需求 | 无需协调 | 成功的关键因素 |
| 应用案例 | 重构代码库,撰写详细报告。 | 研究广阔的市场趋势,例如找出标普500指数 (S&P 500) 公司的所有董事会成员。 |
| 核心优势 | 上下文的连续性与高可靠性 | 并行处理能力与可扩展性 |
| 主要挑战 | 上下文窗口限制与顺序执行的速度瓶颈 | 上下文碎片化与协调的复杂性 |
构建智能体的普适原则
尽管两者看似对立,但要构建可靠的智能体系统,都需要遵循一些共同的原则。
-
上下文工程是重中之重: 成功的关键在于构建一个能为可靠决策在正确的时间动态维护正确信息的系统。这远不止是提示工程那么简单。
-
“读取型” vs. “写入型”智能体: 真正的区别不在于单智能体还是多智能体,而在于你的任务主要是读取 (研究、分析、信息收集) 还是写入 (代码生成、内容创作、文件编辑) 。
- 读取任务 更容易并行化,因此更适合多智能体系统。
- 写入任务 并行化时会引发协调难题,因此更适合单智能体。
- 混合任务 在架构设计上应将读取和写入阶段分开。
-
可靠的智能体需要不同的工具栈: 构建可靠的智能体,仅有好的模型是远远不够的。它还需要强大的基础设施来实现持久化执行 (以应对故障) 、良好的可观测性 (以调试行为) ,以及科学的评估体系 (以衡量真正重要的指标) 。
-
经济可行性与模型迭代: 模型自身正以惊人的速度进步。不要为了解决今天的问题而过度设计,因为一个更简单的方案或许在明天就能轻松搞定。