一句话结论
智能体反思模式(Reflection)的正确形态是「评估器-优化器循环」——生成、用外部信号评估、带着反馈重写;没有外部信号的自省式自我纠错在推理任务上反而会降准确率,必须用循环上限和适用边界管住。
ReAct 解决「边想边做」,Planning 解决「先谋后动」,Reflection 解决的是另一个问题:产出怎么变好。 Anthropic 在《 Building Effective Agents 》里把它命名为评估器-优化器(Evaluator-Optimizer)模式:一个 LLM 调用生成结果,另一个调用提供评估和反馈,循环往复直到达标。本篇讲清这个模式的正确接线、常见的错误形态和工程上的止损规则。
基本循环:三次调用
1. 生成器:"回答这个问题:……"
2. 评估器:"这是上面的答案,指出它哪里有问题,至少列三点。"
3. 修订器:"这是原答案和评估意见,给出更好的版本。"
可以只跑一轮,也可以循环到评估器说「没问题」为止——但必须设硬上限,防止预算失控。生产系统里大多数场景一轮修订就到收益拐点,第二轮的边际改善急剧下降。
为什么「第二遍看」真的有效
LLM 逐 token 生成,草稿一旦滑向弱方向,模型会沿着一贯(但错误)的轨迹继续写。评估提示给了模型一个全新起点:它把草稿当输入读而不是当输出写,跳出「已写出的内容」的引力。加上评估提示的框定效应(「挑剔一点」「至少找出三个问题」),模型的响应分布从「确认」偏向「批评」——LLM 识别错误的能力普遍强于第一次就避免错误的能力,这正是整个模式成立的基础。
同模型还是双模型
| 接线方式 | 适用 | 风险 |
|---|---|---|
| 同一模型、不同提示(默认) | 写作润色、代码风格、大多数生产场景 | 最低成本,最简单 |
| 弱模型当评估器 | 迭代次数多的场景省钱 | 可能漏掉生成器同样的错误 |
| 强模型当评估器 | 形式证明、安全审查、合规检查 | 评估标准真的比生成更难时才值得 |
起步永远是同模型双提示;只有当评测数据显示瓶颈在「评估质量」而非「草稿质量」时,才升级评估器。
关键分野:有没有外部信号
这是整篇最重要的一段。反思模式有两副面孔:
- 评估器-优化器(推荐):评估信号来自外部现实——单元测试的通过/失败、 schema 校验报错、代码执行的退出码、检索文档的相关性判分。 Anthropic 对该模式适用条件的表述是:当反馈能被清晰表达、且反馈确实能改进结果时使用。
- 无外部信号的自省(危险):让同一个模型仅凭自身「再检查一遍」。 ICLR 2024 的研究发现,这种内在自我纠错在推理任务上有时会让准确率不升反降——模型误读约束后重读同样的上下文,倾向于复现并捍卫同样的误读。研究还发现早期自省实验的收益部分来自「用先知标签决定何时停止纠正」,生产系统拿不到这个信号。
两个经典实证
Reflexion(Shinn 等,arXiv:2303.11366):智能体失败后写一段语言化的反思存入情节记忆,下一次尝试带着这份反思。在 HumanEval 上 pass@1 从基线的 80% 提到 91%。它的本质是把「权重更新」换成「语言记忆更新」,是反思与记忆结合的原型——记忆系统的更完整架构我们在智能体记忆实现那篇里拆过。
SCoRe(Google):用多轮强化学习训练「内化」的自我纠错,MATH 提升 15.6%、 HumanEval 提升 9.1%——说明自省能力可以训练进模型,但对应用开发者而言,生产智能体仍然需要外挂的终止规则:成功条件、最大迭代数、预算上限,三者缺一不可。
工程落地清单
- 定义外部判据:测试集、 schema 校验、执行退出码或判分模型,优先级从硬到软。
- 生成 → 评估 → 修订三段分开调用,执行与反思不要塞进同一次调用(注意力分散两边都变差)。
- 设硬性止损:最多 2 轮修订、按 token 预算熔断、评估器给出「通过」即停。
- 记录每轮的判据结果,修订前后对比留档——这也是智能体可观测性里评估闭环的数据来源。
- 自省式润色单独标记为低风险步骤,禁止它否决外部判据的结论。
反思模式与 ReAct 、 Planning 常常组合出现:ReAct(实战拆解见此)管单步内的工具调用,Planning(规划模式实战)管任务分解,Reflection 管产出质量收敛。三者各自的范围想清楚了,智能体才不会「转圈但不进步」。









评论 (0)