ReAct
是什么?
标准定义:ReAct 是一种让语言模型交替生成推理轨迹(Reasoning traces)和任务特定行动(Actions) 的范式,使推理帮助行动做规划,行动帮助推理获取外部事实
关键词拆解:交替是核心。不是先想完再做,也不是边做边瞎想,而是“想一步→做一步→看结果→再想下一步”。推理轨迹是模型输出的自然语言思考,不改变外部环境,只更新模型自己的上下文。行动是调用外部工具(搜索、API、计算器等),会从环境拿回真实反馈。
如何运作?
核心是一个循环:Thought → Action → Observation → Thought → … → Final Answer。
- Thought(思考):模型分析当前状态,决定下一步该干什么。比如“我需要先查交流电的发明者是谁”。
- Action(行动):调用一个具体工具。比如
Search[交流电发明者]。 - Observation(观察):工具返回真实结果。比如“交流电由尼古拉·特斯拉推广”。
- 拿到观察后,模型进入下一轮 Thought,基于新信息决定下一步
对比 Plan-and-Execute
Plan-and-Execute 是一种与 ReAct 互补的 Agent 架构范式。如果说 ReAct 是“走一步看一步”,那 Plan-and-Execute 就是“先看地图再出发”:先把复杂任务拆解成一份结构化计划,再逐步执行
关键点:
- Plan出来可以让人工审核,理解为AI代码软件的Plan模式,每一条计划内部执行ReAct。
- Plan-and-Execute 并非死板的流水线。它通常包含一个重规划(Replan) 环节:如果某一步执行失败或环境发生变化,系统可以基于当前结果修订后续计划,而不是硬着头皮走原路线
好处:
让AI实现长工程和复杂任务
场景:
适合目标明确、可以拆成多个子任务、且子任务之间有依赖的场景,比如复杂的代码修改、多步骤研究报告生成、跨系统的数据整理等。对于简单的任务会有过度设计的风险、并且对于完全未知的任务无法使用,因为无法做规划
结束条件
终止条件是四件套:任务完成信号 / 最大步数 / token 与成本预算 / 重复检测与收敛判定。
问题
那个 Agent 连续两轮调同一个 get_order,是模型读不懂工具结果,还是编排代码把「观察」这一步丢掉了?
原因:ai没有拿到结果,但是只有这个工具可用查询结果,工具查询内容没有加入上下文、或者是错的,导致AI一致无法终止,重复使用工具。或者说AI没有设置条件,正确使用工具却拿不到内容应该结束循环
- 观察丢失/未回填
- 观察内容是脏的,和工具给的格式不对,推理漂移
- 观察太胖(大块json),上下文稀释,目标偏移
- 没有终止条件
如何定位问题:
- 看thought重复调用的思考是什么
- 看msg是否缺失tools的使用
- 提示词是否约束:“无结果就停止,不要重复同参数调用”。工具无结果一致调用
解决方案:
- 重复调用监测,工具名 + 参数指纹,命中则中断
- 步数和token上限控制
- 执行前拦截,如pi里面工具id和结果需要完整映射,才能继续执行