生产环境的 ReAct:经得起跑题的推理循环
ReAct 是一个干净的想法:思考、行动、观察、循环。在生产环境里,循环本身才是最容易崩的部分。模型在前几步推理得还算合理,然后要么过度解释,要么对工具调用反复纠结,要么自说自话地认定任务已经完成。教科书里的流程图从不展示这些。
循环跑题的地方
最常见的失败不是错误的工具调用——而是冗余的工具调用。模型重新执行了一个已经成功过的动作,因为它在对话历史里丢失了状态。步数往上爬,延迟跟着爬,用户看到的是一个慢响应,背后实际是一连串相同的查询。第二常见的失败是过早终止:模型在拿到部分结果后就宣布成功,因为它把”我有答案了”和”我有正确答案”模式匹配成了同一件事。
让它留在轨道上的补丁
一段总结历史动作的简短便签——不是完整历史,只是结果——比任何 Prompt 重写更能切掉冗余调用。一个独立的”我们做完了吗?”检查,由同一个模型在不同 Prompt 下运行,远比让循环自己评判更能抓住过早终止。给循环加上限。永远要给循环加上限。
ReAct 在生产环境里能用。但你最终上线的 Prompt,几乎从来不是论文里那一版。