多 Agent 编排模式

1.1 Supervisor 模式(最常用)

架构:一个"主管" Agent 接收任务,根据意图分发给专业子 Agent,子 Agent 完成后结果回传主管,主管决定是否继续分发或输出最终结果。

┌──────────────┐
│ Supervisor │ ← LLM 决策:下一步交给谁?
└──────┬───────┘

┌──────────┼──────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 搜索Agent│ │ 分析Agent││ 写作Agent│
└─────────┘ └─────────┘ └─────────┘
│ │ │
└──────────┼──────────┘

返回 Supervisor

核心实现要点

  • Supervisor 本身是一个 LLM 调用,输出结构化的路由决策
  • 子 Agent 各自拥有独立的工具集,互不干扰
  • 子 Agent 完成后需要"清洗"输出(去掉冗余的工具调用日志),只返回精炼结果
  • Supervisor 可以迭代:如果结果不够,继续分发新任务

适用场景:客服系统、研究助手、内容生成管道

官方实现langchain-ai/langgraph-supervisor-py


1.2 Hierarchical 模式(层级嵌套)

架构:多层 Supervisor 嵌套,形成类似企业组织架构的层级结构。每一层只关心自己的下属,不需要了解全局。

┌──────────┐
│ 总监 Agent │
└─────┬────┘
┌────────┴────────┐
┌─────▼─────┐ ┌─────▼─────┐
│ 研究主管 │ │ 执行主管 │
└─────┬─────┘ └─────┬─────┘
┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼
搜索Agent 分析Agent 编码Agent 测试Agent

核心实现要点

  • 用 LangGraph 的 Subgraph 实现:每个"主管+下属"是一个独立的子图
  • 父图只看到子图的输入/输出接口,内部实现对父图透明
  • 每一层可以独立开发、测试、部署

适用场景:大型复杂项目、企业级多部门协作、需要权限隔离的场景


1.3 Swarm 模式(平等协作 / Handoff)

架构:Agent 之间没有层级关系,通过 handoff(移交)传递控制权。类似客服转接——"这个问题我处理不了,转给技术部门"。

┌─────────┐ handoff ┌─────────┐ handoff ┌─────────┐
│ 前台Agent│ ─────────▶ │ 技术Agent│ ─────────▶ │ 财务Agent│
└─────────┘ └─────────┘ └─────────┘
▲ │
└──────────────── handoff ─────────────────────┘

核心实现要点

  • 每个 Agent 自己决定是否需要 handoff 以及交给谁
  • 使用 Command(goto="target_agent") 实现转移
  • 对话历史随 handoff 传递,接手的 Agent 能看到完整上下文

适用场景:客服系统(部门转接)、流水线处理、对话式导航


1.4 Map-Reduce 模式(并行分发)

架构:将一个大任务拆分为多个独立子任务,并行执行后汇总结果。

┌──────────┐
│ 分发器 │ ← 拆分任务
└─────┬────┘
┌────┼────┐
▼ ▼ ▼
子任务 子任务 子任务 ← 并行执行
└────┼────┘

┌──────────┐
│ 汇总器 │ ← 合并结果
└──────────┘

核心实现要点

  • LangGraph 的 Send() API 支持动态并行:运行时决定生成多少个并行分支
  • 汇总器等待所有分支完成后才执行
  • 每个分支独立 checkpoint,单个失败不影响其他分支

适用场景:批量文档处理、多源信息采集、并行研究多个子主题


1.5 模式选择决策树

你的任务需要多个 Agent 吗?
├── 否 → 单 Agent + 多工具就够了
└── 是 → Agent 之间有层级关系吗?
├── 有明确的"老板" → Supervisor 模式
│ └── 需要多层管理? → Hierarchical 模式
├── 平等协作,按专长转接 → Swarm 模式
└── 同一任务可并行拆分 → Map-Reduce 模式

posted @ 2026-05-18 11:53  江鸟Dev  阅读(26)  评论(0)    收藏  举报