Agent三大范式详解:ReAct、Plan-and-Execute、Reflection
目录
一、什么是Agent范式
Agent范式,本质上是:
🤖 大模型如何“思考 + 行动”的策略设计
不同范式,决定了:
二、ReAct范式
2.1 核心思想
👉 Reason(推理) + Act(行动)循环执行
模型边思考边调用工具:
1
| Thought → Action → Observation → Thought → ...
|
2.2 架构图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ┌─────────────┐ │ User Query │ └──────┬──────┘ ↓ ┌─────────────┐ │ Thought │ 🧠 └──────┬──────┘ ↓ ┌─────────────┐ │ Action │ 🔧(调用工具) └──────┬──────┘ ↓ ┌─────────────┐ │ Observation │ 👀 └──────┬──────┘ ↓ 循环...
|
2.3 代码实现(简化版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class ReActAgent:
def __init__(self, llm, tools): self.llm = llm self.tools = tools
def run(self, query): context = query while True: thought = self.llm.generate(f"Thought: {context}") if "Final Answer" in thought: return thought action = self.llm.generate(f"Action: {thought}") result = self.tools.call(action) context += f"\nObservation: {result}"
|
2.4 面试要点
- 本质:动态决策系统
- 核心能力:工具调用
- 缺点:不稳定、成本高
三、Plan-and-Execute范式
3.1 核心思想
👉 先规划 → 再执行
3.2 架构图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ┌─────────────┐ │ User Query │ └──────┬──────┘ ↓ ┌─────────────┐ │ Planner │ 🧠(生成计划) └──────┬──────┘ ↓ ┌─────────────┐ │ Executor │ ⚙️(逐步执行) └──────┬──────┘ ↓ ┌─────────────┐ │ Final Answer │ └─────────────┘
|
3.3 代码实现(简化版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class PlanExecuteAgent:
def __init__(self, llm, tools): self.llm = llm self.tools = tools
def run(self, query): plan = self.llm.generate(f"Create a step-by-step plan: {query}") steps = plan.split("\n") results = []
for step in steps: result = self.tools.call(step) results.append(result)
return self.llm.generate(f"Summarize: {results}")
|
3.4 面试要点
- 本质:任务分解系统
- 优点:稳定、可控
- 缺点:计划错误会影响全局
四、Reflection范式
4.1 核心思想
👉 生成 → 评估 → 修正
4.2 架构图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ┌─────────────┐ │ Initial Answer│ └──────┬──────┘ ↓ ┌─────────────┐ │ Reflection │ 🔍(自我评估) └──────┬──────┘ ↓ ┌─────────────┐ │ Improvement │ 🔧(优化) └──────┬──────┘ ↓ ┌─────────────┐ │ Final Answer │ └─────────────┘
|
4.3 代码实现(简化版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class ReflectionAgent:
def __init__(self, llm): self.llm = llm
def run(self, query): answer = self.llm.generate(query)
critique = self.llm.generate( f"Critique the following answer:\n{answer}" )
improved = self.llm.generate( f"Improve answer based on critique:\n{critique}" )
return improved
|
4.4 面试要点
- 本质:自我纠错系统
- 优点:质量高
- 缺点:成本高、延迟大
五、三种范式对比(面试重点)
| 维度 |
ReAct |
Plan-Execute |
Reflection |
| 思考方式 |
边想边做 |
先规划 |
事后反思 |
| 灵活性 |
⭐⭐⭐⭐ |
⭐⭐ |
⭐⭐⭐ |
| 稳定性 |
⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 成本 |
高 |
中 |
很高 |
| 是否可纠错 |
❌ |
❌ |
✅ |
六、工业级Agent架构(进阶)
现实系统通常不会单独使用某一种范式,而是组合:
1
| Plan → ReAct → Reflection
|
执行流程:
- Planner:拆解任务
- ReAct:执行复杂步骤(调用工具)
- Reflection:优化结果
实际例子(面试加分)
1 2 3 4 5
| 比如一个AI写论文Agent:
* Plan:生成论文大纲 * ReAct:查资料 + 写内容 * Reflection:润色 + 校对
|
七、总结
1 2 3
| ReAct:边想边做(灵活,但不稳定),偏“执行策略” Plan-Execute:先想后做(稳定,但不灵活),偏“任务拆解” Reflection:做完再想(质量高,但成本高),偏“结果优化”
|
🎯 标准面试回答(精简有逻辑版)
Agent开发主要有三种常见范式:ReAct、Plan-and-Execute 和 Reflection。
第一,ReAct范式,核心是“推理+行动”交替进行,模型在执行过程中边思考边调用工具,适合处理动态、多步骤任务,但缺点是成本高、稳定性较差。
第二,Plan-and-Execute范式,是先生成完整计划再逐步执行,优点是结构清晰、可控性强,但如果计划出错会影响整体效果,灵活性较低。
第三,Reflection范式,是在生成结果后进行自我评估和优化,相当于引入了一个“自我纠错”机制,能够显著提升结果质量,但代价是推理成本更高。
实际工业中,通常会将三者结合使用,比如先用Plan拆解任务,用ReAct执行复杂步骤,最后用Reflection优化结果,从而在效率、稳定性和质量之间取得平衡。