本页目录
L08 — 多智能体协作
本课目标:理解为什么需要多个 Agent,怎么让它们分工协作。前 7 课都是单个 Agent 干所有事,这课让多个 Agent 各司其职、协同完成复杂任务。
这是 Agent 进阶的重要话题——也是面试常问的"你怎么设计一个多 Agent 系统"。
1. 单 Agent 的局限
一个 Agent 干所有事,听起来简单,但任务复杂时会出现问题:
| 问题 | 表现 | 例子 |
|---|---|---|
| 角色混杂 | 一个 Agent 既要规划、又要执行、又要检查,prompt 巨复杂 | "你同时是项目经理、程序员、测试员" → 哪个都做不好 |
| 上下文污染 | 不同职责的信息混在一个对话里,互相干扰 | 执行时的工具结果污染了规划思路 |
| 不可控 | 单 Agent 黑盒,难以针对性优化某个环节 | 规划错了还是执行错了?分不清 |
| 无法并行 | 一个 Agent 只能串行做事 | 想同时查 3 个资料?得排队 |
🎯 核心认知:多 Agent 的本质是关注点分离(和软件工程的模块化思想一致)——每个 Agent 只管自己擅长的事,通过协作完成整体任务。
2. 常见的多 Agent 架构
架构 1:主从(Orchestrator-Worker)
一个"主 Agent"负责分配任务,多个"从 Agent"执行具体工作。
主 Agent(调度)
┌───┬───┬───┐
从A 从B 从C 从D
(查资料)(写代码)(测试)(文档)
主 Agent 决定"这个任务该派给谁",从 Agent 各干各的。适合任务能清晰拆分的场景。
架构 2:流水线(Pipeline)
任务按顺序流过多个专职 Agent,每个加一层处理。
规划者 → 执行者 → 审查者
(拆任务)(做任务)(查质量)
像工厂流水线——每个工位负责一道工序。适合有明确步骤的场景。本课实现这个。
架构 3:对等辩论(Debate)
多个 Agent 对同一问题各抒己见,辩论后得出更好的结论。
Agent A(正方)↔ Agent B(反方)→ 裁判 Agent(综合)
适合需要多角度思考的问题(如决策、评估)。
3. Agent 间怎么通信?
多 Agent 协作的关键问题:它们怎么传递信息?
| 方式 | 做法 | 特点 |
|---|---|---|
| 共享状态 | 所有 Agent 读写同一个数据结构(如 dict) | 简单直接,但耦合 |
| 消息传递 | Agent 之间显式发消息(A 的输出 = B 的输入) | 解耦,灵活 |
| 共享黑板 | 一个公共"黑板",Agent 往上面写,其他人读 | 适合复杂协作 |
本课用最简单的消息传递:每个 Agent 的输出作为下一个 Agent 的输入(流水线式)。
💡 在我们的实现里,"Agent 间通信"其实就是:把上一个 Agent 的回答,作为下一个 Agent 的 prompt 的一部分。因为每个 Agent 本质是一次 LLM 调用,它们的"通信"就是文本传递。
4. 角色设计:规划者 / 执行者 / 审查者
本课实现的 3-Agent 流水线:
规划者(Planner)
- 职责:拿到任务,分解成清晰的步骤清单
- 特点:不执行,只想"该做什么、按什么顺序"
- 类比:项目经理
执行者(Executor)
- 职责:按计划逐步执行,调用工具
- 特点:专注"把每一步做好",不操心全局
- 类比:程序员
审查者(Reviewer)
- 职责:检查执行者的结果,指出问题或确认通过
- 特点:挑毛病、把关质量
- 类比:测试员/质检员
用户任务
│
▼
[规划者] → 输出步骤清单
│
▼
[执行者] → 按清单执行,输出结果
│
▼
[审查者] → 检查结果,输出"通过"或"问题:xxx"
│
▼ (如果审查发现问题,可以回传给执行者重做)
最终结果
每个 Agent 有自己的 system prompt(角色定义),互不干扰。这就是"关注点分离"。
5. 协作的代价(不是越多 Agent 越好)
多 Agent 不是银弹,它有成本:
| 代价 | 说明 |
|---|---|
| API 成本翻倍 | 3 个 Agent = 3 倍 LLM 调用 |
| 延迟增加 | 串行流水线,每多一个 Agent 多一轮延迟 |
| 调试复杂 | 出错了要定位是哪个 Agent 的锅 |
| 过度工程 | 简单任务用多 Agent 是杀鸡用牛刀 |
🎯 经验法则:先用单 Agent,当单 Agent 明显搞不定(角色混杂、质量不够)时再考虑多 Agent。不要为了多 Agent 而多 Agent。
6. 本课代码会做什么
code.py 实现一个 3-Agent 流水线(规划者 + 执行者 + 审查者):
① 三个 Agent 各有角色
每个 Agent 是一个带专属 system prompt 的 LLM 调用,职责清晰分离。
② 协作完成一个任务
给一个复杂任务,看三个 Agent 怎么接力: - 规划者拆解任务 - 执行者按计划执行(调用工具) - 审查者检查质量,可能打回重做
③ 打印每个 Agent 的工作过程
你会清晰看到每个 Agent 的角色、输入、输出——理解它们怎么协作。
7. 跑起来
python agent-lessons/08_multi_agent/code.py
终端会打印三个 Agent 的接力过程。重点看:每个 Agent 各司其职,比一个 Agent 全包更清晰、更可控。
下一课 L09 — 毕业项目 是 Agent 课程的收官:综合所有技术做一个能进简历的项目。