多智能体协作
一句话定义:多个分工不同的 Agent 协作完成复杂任务,由编排者协调流程。
1. 定义
Multi-Agent 系统由多个角色不同的 Agent(规划者、研究员、编码者、评审者…)协作,通过消息传递/共享状态协同,由 Orchestrator 编排。
2. 编排模式
| 模式 | 结构 | 适合 |
|---|---|---|
| Hub-and-Spoke | 中心分发汇总 | 任务可独立分解 |
| Pipeline | 流水线串行 | 线性流程(研究→写作→评审) |
| Hierarchical | 分层委派 | 大任务逐级分解 |
| Debate/Voting | 多 Agent 辩论投票 | 需深思的判断 |
3. 角色设计
- 每个 Agent 有明确职责与系统提示。
- 角色边界清晰,避免"抢活"或"互相推诿"。
- 常见角色:Planner、Researcher、Writer、Critic、Tester、Validator。
4. 协作机制
- 消息传递:Agent 间通过消息通信。
- 共享黑板:共享状态/上下文,各 Agent 读写。
- 任务队列:编排者分发任务,Agent 领取执行。
- 人在环上:关键节点由人审批或参与某角色。
5. 优势
- 处理单 Agent 难胜任的复杂任务。
- 每个 Agent 专精一面,质量更高。
- 独立子任务可并行。
- 评审/辩论 Agent 提升可靠性。
6. 劣势
- 成本与延迟数倍于单 Agent。
- 协调复杂,易死锁/活锁。
- 调试困难。
- 简单任务上过度工程。
7. 何时用 Tools,何时用多 Agent
这是设计前最该想清楚的一步。多数需求用「单 Agent + 多 Tools」就够了,不必上多 Agent。
7.1 本质区别:谁在做决策
| 维度 | Tools(能力函数) | 多 Agent(多个大脑) |
|---|---|---|
| 定位 | 被调用的函数 | 独立的推理体 |
| 决策权 | 始终在同一个大脑 | 每个 Agent 各自决策 |
| 系统提示 | 共用一套 | 每个 Agent 独立 |
| 上下文 | 共享同一窗口 | 各自隔离 |
| 记忆 | 共享 | 可各自独立 |
| 类比 | 一个全能工程师 + 工具箱 | 一个团队,各人专长不同 |
一句话:Tools 解决「能做什么」,多 Agent 解决「推理在哪发生、上下文怎么隔离」。 类比软件设计:Tools 按领域分组 ≈ 命名空间(代码组织层面);多 Agent ≈ 多个独立进程/微服务实例(运行时隔离层面)。
7.2 优先用「单 Agent + Tools」(满足以下 → 别拆)
- 单一连贯目标,一条主线能走完。
- 能力差异只是「调不同 API / 函数」,靠 function calling 路由即可。
- 上下文可以共享、彼此不冲突。
- 不需要并行、不需要独立记忆、不需要不同人格。
7.3 该升级为「多 Agent」(满足任一 → 值得拆)
- 子任务需要截然不同的系统提示 / 人格 / 专业语境(数学专家 vs 写作专家,提示词无法共用)。
- 需要上下文隔离(长链路规划别污染编码上下文,防 context 污染 / 膨胀)。
- 需要并行独立执行多个子任务。
- 需要各自独立的长期记忆。
- 需要黑盒委托 + 各自护栏(主管不必看工人全部中间推理,各自加安全校验)。
- 需要分角色的人在环审核。
7.4 决策口诀
先用单 Agent + Tools 把活干完;当某子任务的系统提示越写越长、上下文互相打架、或它需要独立的人格 / 记忆 / 并行时,再把那一块抽成独立 Agent。
8. 注意事项
- 先单 Agent,不够再上多 Agent。
- 明确终止条件防无限辩论。
- 设总预算上限。
- 共享状态需防污染、防膨胀。
- 可观测:记录 Agent 间消息便于复盘。
9. 代表框架
- AutoGen(微软)、CrewAI、MetaGPT、LangGraph 多 Agent。
10. 学习要点
- 多 Agent 是单 Agent 的规模化协作扩展。
- 成本量级远高于单 Agent,慎用。
- 角色分工 + 编排模式是设计核心。
- 先问「要不要独立的大脑和上下文」——不要,就用 Tools;要,才上多 Agent。
11. 参考资料
- "MetaGPT: Meta Programming for Multi-Agent Collaborative Framework"
- "Improving Factuality and Reasoning through Multiagent Debate"
- AutoGen / CrewAI 文档
评论
评论加载中…