Agent 设计模式全解析
1. 概述
本文深入解析 LLM Agent 的核心设计模式,涵盖 ReAct、Plan and Solve、REWOO、LLMCompiler、Reflection 系列及 Storm 等主流架构。通过图解与代码逻辑梳理,帮助开发者理解如何将人类思维模式转化为结构化 Prompt,从而构建高效的智能体应用。
2. ReAct 模式
ReAct (Reasoning + Acting) 是 LLM Agent 的开创性模式,发表于 2022 年 10 月。其核心在于让 LLM 学会使用工具,将推理(Reasoning)与行动(Acting)交替进行。
2.1 ReAct 原理
在没有 ReAct 之前,Reasoning 和 Act 往往是分割的。ReAct 引入了 Observation 环节,形成 Thought -> Action -> Observation 的循环结构。这相当于让 Agent 维持短期记忆,每次执行行动后都有'碎碎念'来评估是否达到目的。

2.2 ReAct 实现逻辑
本质上,所有 Agent 设计模式都是将人类的思维、管理模式以结构化 Prompt 的方式告诉大模型来进行规划,并调用工具执行,且不断迭代。
核心步骤:
- 生成提示词:合并预设的 ReAct 模板(Question->Thought->Action->Observation)与用户问题。
- 调用大模型:生成 Thought 和 Action。通过 Stop Token 控制模型在生成 Observation 前停止输出。
- 调用外部工具:利用 Function Calling 将自然语言 Action 转换为 API 接口调用。
- 生成 Observation:API 返回结果后,将其转换为自然语言作为 Observation。
- 迭代或完成:将 Observation 输入给大模型,重复步骤 2-4,直至 Action 为 Finish。
代码示例 (LangChain 风格):
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
def search(query):
return "搜索结果:..."
tools = [
Tool(
name="Search",
func=search,
description="用于搜索信息"
)
]
agent = initialize_agent(
tools,
OpenAI(),
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
response = agent.run("张译和吴京差几岁?")
print(response)
3. Plan and Solve 模式
该模式适合复杂任务,如'西红柿炒鸡蛋'。它先制定计划,再执行,过程中允许计划变更。
架构组成:
- Planner:负责生成多步计划。
- Replanner:根据任务完成情况重新规划。
- Executor:接受查询和步骤,调用工具完成任务。

4. Reason without Observation (REWOO)
REWOO 去掉了显式的 Observation 步骤,将其隐式嵌入到下一步的执行单元中。适用于审批流等环环相扣的场景。
架构组成:
- Planner:生成相互依赖的链式计划。
- Worker:循环遍历任务,分配输出变量。
- Solver:整合输出为最终答案。

5. LLMCompiler
通过并行 Function Calling 提高效率。例如同时搜索多个独立信息源,最后合并结果。
特点:
- Planner 生成 DAG (有向无环图)。
- Jointer 负责合并结果。

6. Basic Reflection
类比学生写作业,老师批改建议,学生修改。包含 Generator 和 Reflector 两个组件。

7. Reflexion
Basic Reflection 的升级版,引入强化学习思路。通过外部数据评估回答准确性,强制反思缺失或多余内容。
流程:
- Responder 进行批判式思考。
- Revisor 基于批判意见修改初始回答。

8. Language Agent Tree Search (LATS)
融合 Tree Search、ReAct、Plan & Solve 及 Reflection。通过树搜索方式获取 Reward,找到最佳路径。
公式: LATS = Tree Search + ReAct + Plan & Solve + Reflection + RL

9. Self-Discover
让大模型在更小粒度上对 Task 本身进行反思,而非仅反思任务是否需要补充。
组件:
- Selector:选择反省方式。
- Adaptor:执行反省。
- Implementor:重新推理。

10. Storm
从零生成维基百科级别的文章。先搜索生成大纲,再生成内容。
流程: Topic -> 大纲生成器 -> 内容生成器。

11. 总结与选型建议
Agent 中没有最好的设计模式,只有最适合的设计模式。选型需考虑以下因素:
| 模式 | 适用场景 | 复杂度 | 效率 |
|---|
| ReAct | 通用工具调用 | 低 | 中 |
| Plan & Solve | 多步骤复杂任务 | 中 | 中 |
| REWOO | 强依赖顺序的任务 | 中 | 高 |
| LLMCompiler | 并行查询任务 | 高 | 高 |
| Reflection | 需要高质量输出的任务 | 高 | 低 |
开发者应根据具体业务需求,结合 Prompt 模板定制与 Function Calling 的外部工具定义,选择合适的架构落地 AI 应用。