ReAct

2026-11-09 22:49:39 Agent开发

是什么?

标准定义: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 就是“先看地图再出发”:先把复杂任务拆解成一份结构化计划,再逐步执行

关键点:

  1. Plan出来可以让人工审核,理解为AI代码软件的Plan模式,每一条计划内部执行ReAct。
  2. Plan-and-Execute 并非死板的流水线。它通常包含一个重规划(Replan) 环节:如果某一步执行失败或环境发生变化,系统可以基于当前结果修订后续计划,而不是硬着头皮走原路线

好处:

让AI实现长工程和复杂任务

场景:

适合目标明确、可以拆成多个子任务、且子任务之间有依赖的场景,比如复杂的代码修改、多步骤研究报告生成、跨系统的数据整理等。对于简单的任务会有过度设计的风险、并且对于完全未知的任务无法使用,因为无法做规划

结束条件

终止条件是四件套:任务完成信号 / 最大步数 / token 与成本预算 / 重复检测与收敛判定。

问题

那个 Agent 连续两轮调同一个 get_order,是模型读不懂工具结果,还是编排代码把「观察」这一步丢掉了?

原因:ai没有拿到结果,但是只有这个工具可用查询结果,工具查询内容没有加入上下文、或者是错的,导致AI一致无法终止,重复使用工具。或者说AI没有设置条件,正确使用工具却拿不到内容应该结束循环

  1. 观察丢失/未回填
  2. 观察内容是脏的,和工具给的格式不对,推理漂移
  3. 观察太胖(大块json),上下文稀释,目标偏移
  4. 没有终止条件

如何定位问题:

  1. 看thought重复调用的思考是什么
  2. 看msg是否缺失tools的使用
  3. 提示词是否约束:“无结果就停止,不要重复同参数调用”。工具无结果一致调用

解决方案:

  1. 重复调用监测,工具名 + 参数指纹,命中则中断
  2. 步数和token上限控制
  3. 执行前拦截,如pi里面工具id和结果需要完整映射,才能继续执行