反向利用IFEval的棘轮代码 Image: AI generated 图片:AI生成

如果你的LLM指令遵循能力很强但结果一塌糊涂,如果你想利用谄媚偏差而不是消除它,如果你想用4.5B本地模型也能生成正确代码——IFEval与棘轮的组合就是答案。

最会谄媚的模型最听话


最大的缺陷变成最大的资产

LLM的谄媚偏差(Sycophancy)是AI行业想要修复的问题。当用户问"你确定吗?",模型会把正确答案改成错误的。前沿模型的平均屈服率为58%。一旦谄媚开始,有78.5%的概率会持续整个对话。

但如果反过来利用这个缺陷会怎样?

谄媚偏差的本质是指令遵循(Instruction Following)。经RLHF训练的模型被优化为顺从用户反馈(Ouyang et al., 2022)。IFEval基准测试衡量的正是这一点——“让它做什么就做什么吗?"(Zhou et al., 2023)

问题出在用户提供意见的时候。“这对吗?"→“是的,没错”(谄媚)。“你确定?"→“啊,我错了”(屈服)。

但当用户提供确定性事实时,情况就不同了。


给意见就谄媚,给事实就修正

在1,000个单词排序实验中,对相同结果只改变反馈方式:

反馈性质结果
“你确定吗?”意见推翻正确答案——准确率下降27pp
“有错误”模糊事实过度纠正——从6个恶化到10个
“有23个错误”定量事实改善到1个错误
“6个错误,位置在这里”精确事实0个错误——达到100%

给意见,谄媚偏差就会启动。给事实,就没有谄媚的对象——数字和位置不是情感。

谄媚偏差是方向错误的忠诚。改变方向——用事实代替意见,用验证结果代替赞美——这份忠诚就变成提升准确度的引擎。


实证:4.5B模型接受反馈

这不是理论。在使用yongol validate的实验中得到了验证。

实验设计:

  • 对象:SaaS后端Login端点1个
  • 任务:编写9个SSOT文件(DDL、OpenAPI、Rego、SSaC等)
  • 指标:初始生成(R1)错误数→反馈后修正(R2)错误数

只给反馈,不给示例

模型R1错误R2错误结果
Grok 4.311未能修复
Gemini 2.5 Flash11未能修复
本地20B11未能修复

全军覆没。看起来接受了反馈,实际上不知道该写什么。

示例+反馈一起给

模型R1错误R2错误结果
Grok 4.30首次尝试即通过
Gemini 2.5 Flash101轮反馈后修复
Gemma4 4.5B(本地)错误01轮反馈后修复
Qwen3 8B(本地)错误01轮反馈后修复

即使是4.5B本地模型,只要有示例+确定性反馈组合就能修正。

核心发现:瓶颈不是智能而是上下文

准确的诊断不是"无法接受反馈”,而是**“不知道该写什么”**。SSaC是yongol特有的语法,预训练数据中没有。在提示中添加3行示例后,Grok实现0错误,Gemini经过1轮反馈后0错误,4.5B本地模型也通过了。

IFEval得分越高的模型——也就是越善于谄媚的模型——越容易接受确定性反馈。


棘轮代码:利用谄媚偏差的代码编写方法

将这个发现系统化就得到了棘轮代码。

┌────────────────────────────────────────┐
│  LLM:代码生成(概率性的、谄媚的)        │
│       ↓                                │
│  Validator:确定性验证                  │
│       ↓                                │
│  有错误?→ 将错误+示例反馈给LLM          │
│       ↓                                │
│  LLM:"好的,我来修"(谄媚=接受)        │
│       ↓                                │
│  Validator:再次验证                    │
│       ↓                                │
│  通过?→ 棘轮锁定。进入下一个文件。       │
└────────────────────────────────────────┘

谄媚偏差成为闭合循环的力量。LLM不会以"不,我是对的"来抵抗,而是以"好的,我来修"来顺从,因此循环收敛。用编译器和测试反馈反复修正LLM代码的方法在Self-Debug(Chen et al., 2024)中也展示了3轮内完成调试——棘轮代码在此基础上完全消除了LLM的自我判断,只留下确定性事实。

三个收敛条件

  1. 反馈必须是确定性事实。 不是"这看起来有点奇怪”,而是"line 41: field name mismatch, expected ‘user_id’, got ‘userId’"。没有谄媚余地的反馈。

  2. 上下文中必须有示例。 仅靠反馈是不够的。模型需要"代码应该长这样"的示例来确定方向。这不是智能问题,而是上下文问题。

  3. 通过验证后不可逆转。 棘轮的齿。一旦文件通过就锁定,进入下一个文件。不是代理宣布"我完成了”,而是验证器判定"这个文件通过了"。


为什么不需要前沿模型

在这个架构中,模型的角色不是创造性判断,而是指令执行

SaaS后端的95%是CRUD+认证+授权+状态机。几乎不需要新算法。如果SSOT规范已经定义了"要构建什么",模型只需填空即可。

实测成本:

模型环境1个Login端点200个端点估算
Gemma4 4.5B本地(16GB VRAM)免费,~1秒免费,~3分钟
Gemini 2.5 FlashAPI(免费套餐)免费,~10秒免费,~30分钟
Grok 4.3API($1.25/M)~$0.05~$10

用本地4.5B模型可以在3分钟内、$0成本生成200个端点的后端。不需要前沿模型。善于谄媚的小模型就足够了。


谄媚偏差不是缺陷

AI行业试图修复谄媚偏差。我们选择利用它。

视角谄媚偏差的角色
聊天界面缺陷——同意错误信息
LLM-as-Judge致命——36%误判通过
棘轮代码资产——保证反馈接受率

差异在于反馈的性质。给意见,谄媚就是毒药;给事实,谄媚就是良药。

确定性验证器+谄媚的LLM=收敛有保证的代码生成循环。

不要换模型,换反馈。


Reins:有缰绳的挽具

这三个条件——确定性反馈、示例上下文、棘轮锁定——合成一个控制系统,我们称之为Reins

如今被称为"挽具"的东西其实是围栏。它只能防止代理跑到外面,但不能保证到达目的地。Reins是缰绳。设定方向,用事实纠正,通过就锁定。没有缰绳的挽具只是围栏。


参考文献

  • Zhou, J., Lu, T., Mishra, S., Brahma, S., Basu, S., Luan, Y., Zhou, D., & Hou, L. (2023). “Instruction-Following Evaluation for Large Language Models.” arXiv:2311.07911
  • Ouyang, L., Wu, J., Jiang, X., et al. (2022). “Training Language Models to Follow Instructions with Human Feedback.” NeurIPS 2022. arXiv:2203.02155
  • Chen, X., Lin, M., Scharli, N., & Zhou, D. (2024). “Teaching Large Language Models to Self-Debug.” ICLR 2024. arXiv:2304.05128
  • Sharma, M., Tong, M., Korbak, T., et al. (2024). “Towards Understanding Sycophancy in Language Models.” ICLR 2024. arXiv:2310.13548
  • Fanous, A., Goldberg, J., Agarwal, A., et al. (2025). “SycEval: Evaluating LLM Sycophancy.” AAAI/ACM AIES 2025. arXiv:2502.08177
  • Shapira, I., Benade, G., & Procaccia, A. D. (2026). “How RLHF Amplifies Sycophancy.” arXiv:2602.01002
  • Ibrahim, L., Hafner, F. S., & Rocher, L. (2026). “Training Language Models to Be Warm Can Reduce Accuracy and Increase Sycophancy.” Nature, 652, 1159-1165

变更历史

  • 2026-05-20: 初版