ReAct 循环与退出条件
最小 ReAct 循环四十行就能写,真正的考点是退出条件:模型给出最终答案、步数上限、成本预算熔断、无进展检测、外部中断 —— 五类一个都不能少。死循环有三种形态,对策是检测重复动作、降级到 workflow 或交人。
也叫:ReAct · 循环控制 · 退出条件 · 死循环 · 预算熔断 · Agent 循环
再学多 Agent 编排模式护栏与可靠性Agent 框架选型Agent 评测:看轨迹而不只看结果Agent trace 与可观测性ReAct、Plan-and-Execute 与 Reflection
五类退出条件,一个都不能少出自 T3-3
| # | 退出条件 | 触发方 | 不写会怎样 |
|---|---|---|---|
| 1 | 模型给出最终答案(无 tool_calls) | 模型 | —(正常出口) |
| 2 | 步数上限 max_steps |
代码 | 无限循环 |
| 3 | 成本/token 预算上限 | 代码 | 步数没超但账单爆炸(单步可吃掉巨量上下文) |
| 4 | 无进展检测(重复动作/无新信息) | 代码 | 开篇那种 16 轮空转 |
| 5 | 致命错误(依赖不可用、权限拒绝) | 代码 | 明知无望还继续烧钱 |
面试白板题里,第 2 条几乎人人会写,第 3、4 条是分水岭。 第 5 条要能区分"可恢复错误"和"致命错误":参数格式错了应该把错误信息还给模型让它自己修(这是 ReAct 的自愈能力),下游服务 503 应该直接终止或退避重试,而不是让模型反复撞墙。
以上节选自T3-3 手写最小 ReAct 循环——退出条件才是真正的考点,读全文能看到前后语境。