可靠性已更新 2026-06-21 · 版本 1.0

反思

反思让模型批判自己的输出,然后以该批判作为反馈进行修改。这是一种轻量级的、单模型的方法,用于在推理、编码和写作任务中发现错误并提高质量,代价是需要额外的调用。

证据: 行业观察置信度: 来源: 行业观察来源: 论文

定义

反思是一种模式,其中模型根据明确的标准审查和批判自己的输出,然后对其进行修改,以额外的推理换取更高的质量。

问题

模型往往会产生有缺陷的初步答案,如果提示它们审查自己的工作,它们本可以改进这些答案,但单次生成让它们没有机会这样做。

适用场景

当自我审查步骤能够显著改善输出,且您希望使用一种比双模型评估器循环更简单的替代方案时,可以使用反思——这在推理和编码任务中很常见。

解决方案

在生成答案后,提示同一个模型根据目标(以及任何工具反馈,如测试结果或错误)对其进行批判,然后根据该批判生成修改后的答案。重复此过程,限制迭代次数。

当反思基于真实信号(执行错误、测试输出、检索到的事实)而非纯粹的自我评估时,效果最好,因为纯粹的自我评估可能会过度自信。

组件

初始生成自我批判步骤依据信号(错误/测试/事实)修改迭代预算

优势

  • 使用单个模型即可提高质量——无需第二个系统。
  • 当基于工具或测试反馈时非常有效。
  • 易于添加到现有的调用中。

风险

  • 自我批判可能会过度自信,或者遗漏自身的错误。
  • 额外的调用会增加延迟和成本。
  • 如果没有依据,收益会很有限。

不适用场景

  • 当您有客观的外部检查时——使用评估器-优化器。
  • 当单次运行已达到标准时。
  • 当延迟预算非常紧张时。

技术

LangGraphAgent frameworksLLM-as-judge

示例

  • 一个编码智能体读取测试失败信息并修复自己的补丁。
  • 一个推理任务,模型在回答前重新检查其步骤。
  • 模型在定稿前审查草稿是否存在漏洞。

生产实践证据

上下文
输出质量比延迟或成本更重要的任务(如起草、代码生成、分析),且在审查时可以检测到错误。
场景
在生成第一个答案后,模型(或单独的批判器)根据具体标准对其进行评估,并生成修改后的版本;该循环限制在一次或两次运行内。
技术
一个“先批判后修改”的提示词链,对于高风险工作,最好有外部信号(测试、工具、单独的评估器)的支持。
负载
每次反思运行至少会使调用次数翻倍,因此它被选择性地应用于那些值得付出此开销的输出。
结果
观察到的模式:在模型确实能够检测到自身错误的情况下,反思可以提升质量,但它可能会对正确的答案进行过度修改,并且至少会使成本翻倍。在信任它之前,先根据评估集衡量质量提升,并在高风险情况下优先选择外部信号。

KPI

反思带来的质量提升
衡量有反思步骤与没有反思步骤时输出质量的改进;如果无法衡量,则该步骤不值得其成本。
自我纠正率
模型在审查中捕获并修复的真实错误的比例——这与表面上的修改不同。
增加的延迟与成本
反思至少会使调用次数翻倍;跟踪该开销与它所换取的质量之间的关系。
过度修改率
反思因自我怀疑而降低原本优秀的答案质量的频率。

已观测到的失效模式

  • 自我评估盲区:模型通常无法发现自己的错误,因此反思会遗漏这些错误。
  • 过度修改:模型将正确的答案“修复”成更差的答案。
  • 成本和延迟翻倍(或更多),而质量提升微乎其微或根本没有。
  • 盲目自信:模型在输出并不正确时,却断言其现在是正确的。

经验教训

  • 衡量提升幅度;只有在反思能明显提高质量的情况下,它才值得使用。
  • 在高风险情况下,优先选择外部信号(测试、工具、单独的评估器),而非纯粹的自我批判。
  • 将反思限制在一次或两次运行内——收益递减很快,且成本会成倍增加。
  • 为反思步骤提供具体的标准,而不是模糊的“改进这个”。

常见问题

反思还是评估器-优化器?
反思使用一个模型进行自我批判(更简单);评估器-优化器使用单独的评估器(更敏锐、偏见更少)。根据自我评估对您的任务有多可靠来做出选择。
反思总是有效吗?
当基于测试结果或错误等真实反馈时,它的帮助最大。纯粹的自我评估可能会过度自信,且收效甚微。
需要多少轮反思?
保持次数受限——通常是一到两轮。收益递减和成本上升使得长循环很少值得。

参考文献