Prompt 模式●●○5 分钟 · +40 XP
自我批评循环(Self-Critique Loop):让模型检查自己的输出
另起一轮独立的检查,比在同一次回答中要求“仔细一点”能发现更多错误。
原理
在自我批评循环(先批评后修订,Critique-then-Revise)中,你让模型先在一个单独的步骤中评估自己给出的方案——然后才进行修改。这与在一次提示中要求“仔细解决这个任务”不同,它分成有意识的几个步骤:先生成,再检查,然后改进。
为什么分开进行效果更好
如果你在同一次请求中既要方案又要求仔细检查,模型往往会在生成方案的同一条思路里评估自己的输出——某个特定思维方向导致的错误通常就发现不了。而另起一轮、以全新的视角审视已完成的输出,反而更容易发现生成过程中本身看不见的错误。
一个实践示例
用全新上下文进行审查:你在一个新的请求中只提供最终代码(不包含之前的思考过程),并明确要求查找错误。由于不记得自己之前的“论证过程”,模型审查代码时会更中立。
局限:自我确认
自我批评循环并不能保证结果没有错误。如果对任务本身存在根本性的误解,模型往往会在自己的检查中重复同样的误解。要获得真正独立的判断,需要借助第二个模型或人工作为审查方。
示例
步骤1(新请求):“写一个校验日期格式为DD.MM.YYYY的函数。” 步骤2(另起一个全新请求,只输入最终代码作为输入):“这是一个日期校验函数。请查找其中的错误和边缘情况,不需要知道它是如何或为什么这样写的。” 步骤3:“根据这些反馈修改这个函数。”
🛠️ 练习——自己动手试试
为一个小型编程任务搭建一个两阶段的自我批评循环。
- 让模型写一个小函数(例如日期校验)。
- 开启一个全新的独立请求,只输入最终代码、不包含之前的对话记录,并要求“找出这段代码中的错误和边缘情况”。
- 让模型根据反馈写出修改后的版本。
- 比较最初版本和修改后的版本。
✅ 自查清单
- ☐ 全新的检查轮次是否发现了最初编写时没有注意到的问题?
- ☐ 如果在同一轮回答中只说“仔细一点”,是否也能得到同样的结果?
小测验
为什么另起一轮独立检查,往往比在同一次回答中要求“仔细一点”能发现更多错误?
来源
- Anthropic:构建高效智能体(Building Effective Agents) ↗ www.anthropic.com
- arXiv论文:Reflexion——基于语言强化学习的语言智能体 ↗ arxiv.org
- arXiv论文:Self-Refine——基于自我反馈的迭代优化 ↗ arxiv.org