Appearance
95. 什么是 Plan-and-Execute 模式?它和 ReAct 有什么区别?
难度 P0 必背 · 岗位 应用 · 频率 ★★★ · 预计阅读 11 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:什么是 Plan-and-Execute?和 ReAct 有什么区别?
🙋♂️我:Plan-and-Execute 是先制定完整计划再执行,ReAct 是边思考边行动。前者适合复杂规划,后者更灵活。
👔面试官:什么时候用 Plan-and-Execute?计划失败时怎么处理?
🙋♂️我:复杂多步任务用 Plan-and-Execute。计划失败可以重规划或回退。
👔面试官:ReWOO 是什么?怎么减少 LLM 调用次数?
好,这道题要对比两种规划执行模式。
TL;DR 速记
- 是什么:Plan-and-Execute 是先由 Planner 制定完整计划,再由 Executor 按步骤执行。
- 关键点:它比 ReAct 更省 LLM 调用、适合步骤明确的任务,但灵活性更弱,失败时需要重规划或回退。
- 怎么答:对比 ReAct 的边想边做,再补一句 ReWOO 通过计划占位和并行工具调用进一步减少 LLM 调用。
图解
图 1:ReAct vs P&E
💡 简要回答
Plan-and-Execute:先制定完整的执行计划,再按计划逐步执行,减少重复推理开销。
vs ReAct:
| 特性 | ReAct | Plan-and-Execute |
|---|---|---|
| 规划时机 | 边执行边规划 | 先完整规划再执行 |
| LLM 调用 | 每步都调用 | 规划一次,执行多步 |
| 灵活性 | 高(根据反馈调整) | 低(计划固定) |
| 适用场景 | 需要适应性的任务 | 明确步骤的任务 |
| 效率 | 较低 | 较高(减少 LLM 调用) |
典型架构:
输入 → Planner(制定计划)→ Executor(执行各步骤)→ 整合结果 → 输出
↓ ↓
生成步骤列表 调用工具/LLM📝 详细解析
两种模式的对比
ReAct 的问题:
任务:"查找 2024 年 AI 领域最重要的 3 篇论文,总结它们的核心贡献"
ReAct 流程:
Thought 1: 需要搜索 2024 年 AI 论文
Action 1: 搜索
Observation 1: 得到论文列表
Thought 2: 需要筛选重要的 3 篇
Action 2: 筛选
Observation 2: 确定 3 篇
Thought 3: 需要读第一篇
Action 3: 获取论文 1 详情
Observation 3: 论文 1 内容
Thought 4: 需要总结第一篇
Action 4: 总结
...
问题:
- 每步都需要 LLM 生成 Thought
- 多次 LLM 调用,成本高
- 多次工具调用,延迟大
- 但对于这类任务,步骤是确定的Plan-and-Execute 的优势:
相同任务:
Plan 阶段(1 次 LLM 调用):
制定计划:
1. 搜索 "2024 年 AI 重要论文"
2. 从结果中筛选排名最高的 3 篇
3. 获取这 3 篇的详细信息
4. 分别总结每篇的核心贡献
5. 整合输出最终答案
Execute 阶段(按序执行,无 LLM 介入决策):
Step 1: 调用搜索工具
Step 2: 筛选逻辑(代码或规则)
Step 3: 批量获取论文详情
Step 4: 调用总结工具(或 LLM 批量总结)
Step 5: 整合输出
优势:
- 规划只需 1 次 LLM 调用
- 执行阶段可以批量优化
- 总体效率更高Plan-and-Execute 的详细流程
完整流程:
1. 计划制定(Planning)
Input: 用户任务
↓
Planner LLM 生成结构化的计划
↓
Plan: [
{"step": 1, "action": "search", "input": "..."},
{"step": 2, "action": "filter", "criteria": "..."},
{"step": 3, "action": "summarize", "target": "..."}
]
2. 计划执行(Execution)
For each step in plan:
- 执行 action
- 获取结果
- 如果失败,进入重规划
3. 结果整合(Integration)
- 汇总各步骤结果
- 生成最终答案
4. 错误处理(可选 Re-planning)
- 如果某步失败
- 分析原因
- 重新制定剩余计划ReWOO(Reasoning WithOut Observation)
核心思想:进一步减少 LLM 调用,将计划和执行完全分离。
标准 Plan-and-Execute:
Plan → Execute → 如果失败 → Re-plan(需要 LLM)
ReWOO:
Plan(LLM 一次生成完整计划,包含占位符)
↓
执行所有工具调用(并行)
↓
LLM 最终整合(填充占位符)
示例:
Plan:
"根据搜索结果 {EVIDENCE_1},
结合数据 {EVIDENCE_2},
得出结论..."
执行:
- 同时发起所有搜索
- 填充 EVIDENCE_1, EVIDENCE_2
最终:
- 1 次 LLM 调用整合所有证据
优势:
- LLM 调用从 N 次减少到 2 次(Plan + Integrate)
- 工具调用可以并行
- 效率最大化计划失败的处理
失败类型:
1. 工具调用失败:
- API 错误、超时
- 返回结果不符合预期
2. 计划本身错误:
- 步骤逻辑有误
- 依赖关系错误
- 遗漏关键步骤
3. 执行结果不理想:
- 中间结果质量差
- 需要调整策略处理策略:
策略 1:重规划(Re-planning)
- 分析失败原因
- 基于当前状态重新制定计划
- 继续执行新计划
策略 2:回退(Rollback)
- 回退到之前的状态
- 修改计划后重试
- 需要维护状态历史
策略 3:降级(Degradation)
- 如果完整计划失败
- 切换到简单方案
- 或转人工处理
策略 4:混合模式:
- 粗粒度 Plan-and-Execute
- 细粒度 ReAct
- 高层用计划,具体步骤用 ReAct 灵活处理选择建议
用 Plan-and-Execute 如果:
- 任务步骤明确可预测
- 需要优化成本和延迟
- 批量执行任务
用 ReAct 如果:
- 任务需要大量适应性
- 环境反馈影响下一步
- 探索性任务
混合使用:
上层:Plan-and-Execute
- 制定粗粒度计划
下层:ReAct
- 具体步骤执行时灵活调整
示例:
Plan:
1. 调研市场 → 用 ReAct 执行(搜索多个来源)
2. 分析竞品 → 用 ReAct 执行(分析多个维度)
3. 生成报告 → 整合输出常见踩坑与反例
- 踩坑 1:只说“效率更高” · 错误说法:Plan-and-Execute 一定优于 ReAct。· 正确做法:说明它省调用但灵活性弱,适合步骤明确、反馈不频繁的任务。
- 踩坑 2:忽略失败处理 · 错误说法:计划定好后按步骤执行就行。· 正确做法:要有重规划、回退、降级或局部切换 ReAct 的机制。
- 踩坑 3:不知道 ReWOO · 错误说法:减少调用只能靠减少步骤。· 正确做法:提到 ReWOO 先生成带占位符计划,工具并行执行,最后一次整合。
- 踩坑 4:计划粒度过细 · 错误说法:把每个小动作都交给 Planner。· 正确做法:Planner 负责粗粒度步骤,Executor 或工具链处理可批量化细节。
面试官可能继续追问
- 追问 1:什么时候选 Plan-and-Execute? 答题要点:任务步骤可预测、可批量执行、需要控制成本和延迟时优先选。
- 追问 2:什么时候选 ReAct? 答题要点:任务依赖实时反馈、探索性强、下一步取决于观察结果时更适合 ReAct。
- 追问 3:计划失败怎么办? 答题要点:识别失败类型,基于当前状态重规划;必要时回滚状态、降级策略或转人工。
- 追问 4:ReWOO 为什么能减少调用? 答题要点:Planner 一次生成完整计划和证据占位,工具调用可并行,最后再由 LLM 汇总证据。
🎯 面试总结
这道题容易踩的雷:
只说效率高:不知道适用场景和灵活性 trade-off。
不知道 ReWOO:不知道可以进一步减少 LLM 调用。
不了解失败处理:不知道重规划和回退机制。
答题要点:
- 对比 ReAct 和 Plan-and-Execute 的核心区别
- 说明 Plan-and-Execute 的效率优势
- 提适用场景(明确步骤的任务)
- 解释 ReWOO 的思想
- 提一句失败处理策略
来源参考:Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models, ReWOO: Decoupling Reasoning from Observations