ReAct、CoT、Plan-and-Execute
大模型 Agent 本质是LLM + 循环推理 + 工具调用 / 环境交互,解决纯 LLM 静态推理短板:计算错误、知识过时、多步骤任务遗忘、复杂规划失效。
三类框架核心差异集中在思考、行动、规划三者的时序与解耦方式:
- CoT:仅内部思维推理,无显式行动 / 工具
- ReAct:思维 + 行动交替循环,边想边做
- Plan-and-Execute:先整体规划,再分步执行,规划与执行完全分离
模型执行方式
CoT
只做内部推理,没有工具调用和环境交互
强制LLM把复杂问题拆解为连续、递进的自然语言中间推理步骤,代替直接输出
ReAct
将内部思考和外部行动耦合为一个循环单元:
Thought:根据已有信息分析当下要做什么;
Action:调用工具执行;
Observation:输出循环单元的执行结果
将observation塞回上下文进行下一次循环,直到输出结果被判断到有最终结果。
每轮循环增量迭代,通过上一轮的输出结果调整下一步的工作方向。
Plan-and-Execute
强解耦为两个阶段:
全局前置规划(Plan):将输入的完整任务交由LLM拆解为执行计划;
执行阶段(Execute):遍历每一个子任务,并根据子任务需求调用工具执行,子任务内部采用循环模式。
模型可以看到整体的执行规划,避免任务跑偏。
三种模式并不是严格分离的,例如:
Plan-and-Execute + ReAct(最通用):Planner 生成全局任务清单,每个子任务内部使用 ReAct 循环调用工具;兼顾全局规划与灵活工具交互,数据分析、自动化办公 Agent 均采用该架构。
CoT 嵌入 ReAct/Plan 执行内部:在每一步工具调用前,用 CoT 思维链辅助精细逻辑推演,降低模型幻觉;例如计算步骤中先用 CoT 拆解算式,再调用计算器。
任务场景对比
纯推理
CoT只适合纯推理场景,不具备调用工具和与外部交互的能力,完成推理仅依赖已有知识,如数学逻辑推理题、文本写作类等基于已有规则的问题。
对于需要实时数据或者时效性高的场景不适用。
线性短流程工作
ReAct可以通过调用工具扩展自己在推理时的知识面,从而达到实时性的效果。适用于通用资讯问答、企业知识库问答等。
Eg:杭州未来一周的天气变化
Thought:调用工具查询杭州天气;
Action:search【date-date+7】的天气数据
Observation:返回7天内的天气数据;
Thought:分析天气变化;
Action:LLM;
Observation:返回天气变化分析;
Finish。
长流程工作
Q:查询杭州、宁波未来一周天气预报,对比两地平均气温,给出出行建议。
Plan:查询杭州一周天气——查询宁波一周天气——分析天气状态和气温——给出适合对应气温的穿衣推荐以及装备推荐;
Execute:逐步执行计划,内部 ReAct。
ReAct任务跑偏
以Plan-and-Execute示例的场景来看,如果没有plan直接执行:
第 1 轮
Thought:查询杭州未来一周的天气;
Action:search ("杭州未来一周天气");
Observation:杭州未来 7 天 24~32℃,多晴,周三局部阵雨,紫外线强。
第 2 轮(主线任务断裂起点)
正常目标:下一步查宁波一周天气。
但模型仅基于本轮观测局部思考,被 “紫外线、阵雨” 干扰跑偏:
Thought:杭州周三有阵雨,需要查杭州 7 月降雨历史数据判断雨量大小;
Action:search ("杭州历年 7 月每周降雨量统计");
Observation:杭州 7 月单周平均降雨 28mm,短时阵雨持续 2 小时左右。
第 3 轮(彻底偏离原始需求)
Thought:既然查到降雨均值,对比宁波往年 7 月周降雨量;
Action:search ("宁波历年 7 月每周降雨量");
Observation:宁波 7 月单周平均降雨 42mm,近海阵雨频次更高。
第 4 轮(陷入旁支循环,完全遗忘 “未来一周气温对比” 核心目标)
Thought:两地历史降雨量差距 14mm,计算差值;
Action:Calculator (42-28);
Observation:14。
第 5 轮(直接终止,输出完全无关答案)
Thought:现有降雨数据充足,可以结束任务;
Final Answer:杭州 7 月单周平均降雨 28mm,宁波 42mm,宁波周降雨量比杭州多 14 毫米。
更多推荐



所有评论(0)