一、ReAct 模式
1. 全称
Reasoning + Acting(思考 + 行动),2022 年论文提出,当前应用最广泛。
2. 核心流程(循环闭环)
Thought(思考):分析任务,决定下一步动作。Action(行动):请求调用工具(模型只发请求,不直接执行)。Observation(观察):获取工具执行结果,回传给模型。重复 1–3,直到可输出 Final Answer,结束流程。特点:每一步都“边想边做”,根据当前观察实时调整下一步计划
3. 实现原理
靠复杂系统提示词约束模型输出格式,包含:职责描述、示例、可用工具、注意事项、环境信息。图片引用网络内容,侵权必删
二、PlanAndExecute 模式(先规划后执行)
1. 核心思想
先做全局计划 → 分步执行 → 动态调整计划 → 输出答案,适合复杂多步任务。特点:先有完整蓝图,再按图施工
2. 组成模块
Plan 模型:生成整体执行步骤。Reply 模型:根据执行结果更新/修正计划,可与 Plan 模型共用一个。执行 Agent:跑具体步骤(常用 ReAct 模式)。主程序:调度规划、执行、重规划全流程。
3. 运行流程
-
用户提任务 → 主程序 → Plan 模型生成步骤清单。
-
执行 Agent 跑第一步 → 返回结果。
-
Replan 模型基于结果更新计划(移除已完成步骤、细化参数)。
-
重复执行 + 重规划,直到无剩余步骤,Replan 模型返回最终答案。
两者比较
| 维度 | ReAct 模式 | PlanAndExecute 模式 |
|---|---|---|
| 工作方式 | 边思考边行动,推理与行动交错进行 | 先集中规划,再集中执行,两个阶段分离 |
| 规划时机 | 动态规划,每一步都重新评估 | 静态规划,一次性生成完整计划 |
| 灵活性 | 高灵活性,可实时根据反馈调整 | 较低灵活性,计划一旦确定不易改变 |
| 执行效率 | 可能较低,因为每一步都要推理 | 较高,因为规划好后可快速执行 |
| 处理复杂性 | 适合复杂、不确定的任务 | 适合步骤明确、可预测的任务 |
| 错误处理 | 可以在错误发生时即时修正 | 错误可能累积,需要重新规划 |
| 资源消耗 | 推理成本分散,但调用次数多 | 规划阶段集中消耗,执行阶段调用少 |
| 适用场景 | 开放式探索、实时交互、动态环境 | 批处理、工作流自动化、确定性强任务 |
React工作流
用户提问:帮我预订明天下午3点从北京到上海的机票
第1轮:思考 → 需要查询航班 → 行动:调用航班查询工具 → 观察:获取航班列表
第2轮:思考 → 筛选符合时间要求的航班 → 行动:调用筛选功能 → 观察:得到候选航班
第3轮:思考 → 需要用户确认 → 行动:询问用户选择 → 观察:用户选择航班
第4轮:思考 → 需要完成预订 → 行动:调用预订工具 → 观察:预订成功
PlanAndExecute
用户提问:帮我预订明天下午3点从北京到上海的机票
【规划阶段】
规划器生成计划:
调用航班查询工具,获取明天北京-上海所有航班
筛选出下午2-4点之间的航班
向用户展示候选航班并获取选择
调用预订工具完成预订
【执行阶段】
执行器依次执行上述4步,如果某步失败,可能触发重新规划
四、两者联系
尽管工作方式不同,但两者有深层的联系:
- 都基于大语言模型的推理能力
无论是ReAct的“边想边做”,还是PlanAndExecute的“先想后做”,都依赖LLM的规划、推理和决策能力
- 都可以互相转化
ReAct模式可以看作是微观层面的PlanAndExecute:每一步的思考可以理解为对下一步的“小规划”
PlanAndExecute模式可以看作是宏观层面的ReAct:规划阶段是“思考”,执行阶段是“行动”,如果执行中发现问题,可以重新启动规划阶段(相当于ReAct的“观察-思考”循环)
- 可以混合使用
实践中,许多系统会结合两者:先用PlanAndExecute生成高层计划,然后在每个子任务内部用ReAct模式灵活执行
例如:规划器制定任务大纲,每个步骤由ReAct Agent负责执行,遇到意外时可向规划器请求重新规划