生产环境的 ReAct:经得起跑题的推理循环

ReAct 是一个干净的想法:思考、行动、观察、循环。在生产环境里,循环本身才是最容易崩的部分。模型在前几步推理得还算合理,然后要么过度解释,要么对工具调用反复纠结,要么自说自话地认定任务已经完成。教科书里的流程图从不展示这些。

循环跑题的地方

最常见的失败不是错误的工具调用——而是冗余的工具调用。模型重新执行了一个已经成功过的动作,因为它在对话历史里丢失了状态。步数往上爬,延迟跟着爬,用户看到的是一个慢响应,背后实际是一连串相同的查询。第二常见的失败是过早终止:模型在拿到部分结果后就宣布成功,因为它把”我有答案了”和”我有正确答案”模式匹配成了同一件事。

让它留在轨道上的补丁

一段总结历史动作的简短便签——不是完整历史,只是结果——比任何 Prompt 重写更能切掉冗余调用。一个独立的”我们做完了吗?”检查,由同一个模型在不同 Prompt 下运行,远比让循环自己评判更能抓住过早终止。给循环加上限。永远要给循环加上限。

ReAct 在生产环境里能用。但你最终上线的 Prompt,几乎从来不是论文里那一版。

相关文章

多自主才算太自主

Agent 的自主性是一根滑杆,不是一个开关,正确档位由任务决定的多过由技术决定的。把滑杆推到"完全自主"的本能是真的,因为那样 demo 看起来很神奇。代价后来在客服队列里出现,那时一个 Agent ...

Agent Harness:为什么你的模型不是问题所在

LangChain 在 TerminalBench 2.0 上从 30 名开外飙到了第 5 名。他们没有换模型。同一个 LLM。同样的参数。唯一改变的是包裹在模型外面的那层软件——Harness。 ...

Agent 记忆:情景、语义,以及该留下什么

你建的第一个 Agent 没有当前对话之外的任何记忆,这能撑大约一周。然后用户回来,期望连续性,你开始往上贴记忆:一张数据库表、一个向量库、把过去会话的摘要塞进 system prompt。三个月后, ...

Multi-Agent 系统:协调才是真正的难点

Multi-Agent 架构很有诱惑力,因为它映射到人类组织工作的方式:专家、协调者、交接协议。第一次把复杂任务在"研究员"Agent 和"作者"Agent 之间拆分时,结果确实更好。第三次的时候,你 ...

Planner-Executor 拆分:什么时候该拆,什么时候该合

第一天,让单个模型同时做规划和执行,看起来很优雅。三个月后,trace 日志会讲一个不同的故事:Prompt 里负责规划的那部分在工具调用上下文中开始漂移,负责执行的那部分开始幻觉出从未被规划过的步骤 ...