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.3 | 1 | 1 | 未能修复 |
| Gemini 2.5 Flash | 1 | 1 | 未能修复 |
| 本地20B | 1 | 1 | 未能修复 |
全军覆没。看起来接受了反馈,实际上不知道该写什么。
示例+反馈一起给
| 模型 | R1错误 | R2错误 | 结果 |
|---|---|---|---|
| Grok 4.3 | 0 | — | 首次尝试即通过 |
| Gemini 2.5 Flash | 1 | 0 | 1轮反馈后修复 |
| Gemma4 4.5B(本地) | 错误 | 0 | 1轮反馈后修复 |
| Qwen3 8B(本地) | 错误 | 0 | 1轮反馈后修复 |
即使是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的自我判断,只留下确定性事实。
三个收敛条件
反馈必须是确定性事实。 不是"这看起来有点奇怪”,而是"line 41: field name mismatch, expected ‘user_id’, got ‘userId’"。没有谄媚余地的反馈。
上下文中必须有示例。 仅靠反馈是不够的。模型需要"代码应该长这样"的示例来确定方向。这不是智能问题,而是上下文问题。
通过验证后不可逆转。 棘轮的齿。一旦文件通过就锁定,进入下一个文件。不是代理宣布"我完成了”,而是验证器判定"这个文件通过了"。
为什么不需要前沿模型
在这个架构中,模型的角色不是创造性判断,而是指令执行。
SaaS后端的95%是CRUD+认证+授权+状态机。几乎不需要新算法。如果SSOT规范已经定义了"要构建什么",模型只需填空即可。
实测成本:
| 模型 | 环境 | 1个Login端点 | 200个端点估算 |
|---|---|---|---|
| Gemma4 4.5B | 本地(16GB VRAM) | 免费,~1秒 | 免费,~3分钟 |
| Gemini 2.5 Flash | API(免费套餐) | 免费,~10秒 | 免费,~30分钟 |
| Grok 4.3 | API($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: 初版