Agent 设计模式
设计模式是介于"裸循环"与"完整框架"之间的复用层:每种模式解决一类结构性问题。先掌握 workflow 层的组合模式,再进入 Agent 层的反思与协作模式——很多"多 Agent 需求"其实是 workflow 组合没做对。
Workflow 层:确定性的组合
流程可预先确定时,不需要 Agent。常用组合模式:
提示链(Prompt Chaining)
任务拆成固定串行的 LLM 节点,每个节点专注一件事,中间可加校验门(不通过就早退或重试)。
提取要点 ──校验──→ 按要点写作 ──校验──→ 润色输出
适用:任务可清晰分解、质量可通过中间校验兜住。分步调用通常比一次大调用更准也更便宜。
路由(Routing)
入口先分类,再分发到不同分支处理。分类可用小模型或规则。
请求 ──→ 分类器 ─┬── 技术类 ──→ 走技术模板
├── 投诉类 ──→ 走安抚 + 工单
└── 闲聊类 ──→ 轻量直答
适用:输入异质、各分支最优策略差异大。价值同时体现在效果与成本(简单分支不必用重配置)。
并行化(Parallelization)
多个 LLM 调用同时执行:分段(各处理一部分后拼接,如多文档摘要)或多投票(同一问题多次采样,投票取优,提升可靠性)。
文档集 ──┬── LLM 摘要 A ──┐
├── LLM 摘要 B ──┼──→ 合并
└── LLM 摘要 C ──┘
适用:可切分可独立处理、或需要以延迟换可靠性。
编排者-工人(Orchestrator-Workers)
由一个 LLM 动态决定"拆成哪些子任务、派给谁",工人完成后由编排者合成。注意:只有拆分决策交给 LLM,子任务的执行结构仍是确定的,所以它仍偏 workflow 一侧。
适用:子任务形态无法预先穷举,但总体流程收敛(拆分 → 执行 → 合并)。
评估者-优化者(Evaluator-Optimizer)
一个 LLM 生成,另一个 LLM 评估并给出修改意见,循环至达标。
生成器 ──→ 评估器(打分 + 修改意见)──┬─ 不达标 ──→ 回生成器
└─ 达标 ──→ 输出
适用:有明确的可迭代质量标准(如翻译的信达雅、代码过测试)。
Agent 层:动态决策的模式
ReAct:推理与行动交替
最基本的 Agent 模式:每轮先显式推理(Thought)再行动(Action)再观察(Observation)。推理过程外置到文本中,使决策可追溯、可调试。
Thought: 用户问的是制度原文,需要先检索知识库
Action: search_knowledge_base("教师 考勤 制度")
Observation: 找到 3 条相关条款……
Thought: 条款不完整,缺少请假部分,再查一次
Action: search_knowledge_base("教师 请假 流程")
Observation: ……
Thought: 信息已足够,开始组织答案
反思(Reflection)
在行动之外插入自我批评环节:生成初稿 → 自评(对照目标找缺陷)→ 修订。可以每轮反思,也可以在任务完成后整体反思。
适用:质量优先且容得下额外轮次。注意反思依赖模型自我评估能力,弱模型的自评可能流于表面。
计划-执行(Plan-and-Execute)
先产出完整计划,再逐步执行;执行中遇到计划外情况,触发重规划(replan)。
目标 ──→ 规划器(生成步骤清单)──→ 逐步执行 ──┬─ 顺利 ──→ 下一步
└─ 受挫 ──→ 重规划
适用:长任务。计划给了执行一个"全局视角",避免 ReAct 式走一步看一步的短视。
多 Agent 协作
把任务交给多个角色化的 Agent,典型结构:
| 结构 | 形态 | 适用 |
|---|---|---|
| 监督者模式 | 一个协调者分解并分派,汇总结果 | 复杂任务的分工 |
| 辩论模式 | 多 Agent 对同一问题持不同立场互驳 | 开放性判断、减少单一偏见 |
| 流水线模式 | 按专业接力(研究员 → 写手 → 审校) | 阶段能力差异明显 |
多 Agent 的真实收益来自上下文隔离:每个 Agent 只看自己负责的上下文,避免单一上下文被多目标稀释;同时每个角色可以有独立的最优模型配置(便宜的干粗活,贵的做决策)。代价是通信成本与协调失败模式,先证明单 Agent 上下文管理已是瓶颈,再上多 Agent。
模式选择速查
流程能预先写死吗?
├── 能 ──→ 需要中间校验/分类/并行吗?
│ ├── 串行可解 ──→ 提示链
│ ├── 输入异质 ──→ 路由
│ ├── 可并行/需投票 ──→ 并行化
│ └── 需动态拆分 ──→ 编排者-工人
└── 不能 ──→ 需要自我修正吗?
├── 需要边走边纠 ──→ ReAct + 反思
├── 任务长且怕跑偏 ──→ 计划-执行
└── 上下文/角色确实需要隔离 ──→ 多 Agent
模式之间是组合关系:一个生产系统往往"外层路由、中层 workflow、内层局部 Agent"。模式的落地工具(工具协议、记忆、状态管理)继续见后续文章。