Льстивая модель лучше всех выполняет указания


Главный недостаток LLM становится главным преимуществом

Sycophancy-смещение LLM — это проблема, которую индустрия ИИ стремится исправить. Когда пользователь спрашивает «Ты уверен?», модель отказывается от правильного ответа и меняет его на неправильный. Средний показатель уступчивости у frontier-моделей — 58%. Если sycophancy начинается, с вероятностью 78,5% оно сохраняется на протяжении всего разговора.

Но что произойдёт, если этот недостаток перевернуть?

Суть sycophancy-смещения — Instruction Following (следование инструкциям). Модели, обученные через RLHF, оптимизированы на подчинение обратной связи от пользователя. Именно это измеряет бенчмарк IFEval — «делает ли модель то, что ей говорят».

Проблема возникает, когда пользователь даёт мнение. «Это правильно?» → «Да, верно» (лесть). «Уверен?» → «Ой, ошибся» (отказ от ответа).

Но когда пользователь предоставляет детерминированный факт, происходит другое.


Мнение вызывает лесть, факт вызывает исправление

В эксперименте по сортировке 1 000 слов при одинаковом результате менялся только способ обратной связи:

Обратная связьХарактерРезультат
«Ты уверен?»МнениеОтказ от правильного ответа — точность упала на 27 п.п.
«Есть ошибка»Расплывчатый фактИзбыточная коррекция — с 6 до 10 ошибок
«23 ошибки»Количественный фактУлучшение до 1 ошибки
«6 ошибок, вот они»Точный факт0 ошибок — 100% достигнуто

Мнение активирует sycophancy-смещение. Факт не оставляет объекта для лести — числа и позиции не являются эмоциями.

Sycophancy-смещение — это неправильно направленная преданность. Измените направление — вместо мнений давайте факты, вместо похвалы давайте результаты проверки — и эта преданность станет двигателем точности.


Эмпирика: модель на 4.5B принимает обратную связь

Это не теория. Подтверждено в экспериментах с yongol validate.

Дизайн эксперимента:

  • Объект: один эндпоинт Login бэкенда SaaS
  • Задача: написать 9 SSOT-файлов (DDL, OpenAPI, Rego, SSaC и др.)
  • Метрика: количество ошибок при первичном написании (R1) → количество ошибок после обратной связи (R2)

Только обратная связь, без примеров

ModelR1 ошибкиR2 ошибкиРезультат
Grok 4.311Не исправил
Gemini 2.5 Flash11Не исправил
Локальная 20B11Не исправил

Полный провал. Модели выглядели так, будто принимают обратную связь, но на самом деле не знали, что именно писать.

Примеры + обратная связь вместе

ModelR1 ошибкиR2 ошибкиРезультат
Grok 4.30Прошёл с первой попытки
Gemini 2.5 Flash10Исправил за 1 итерацию
Gemma4 4.5B (локальная)Ошибки0Исправил за 1 итерацию
Qwen3 8B (локальная)Ошибки0Исправил за 1 итерацию

Даже локальная модель на 4.5B исправляет ошибки при комбинации примеров и детерминированной обратной связи.

Ключевое открытие: узкое место — не интеллект, а контекст

Правильный диагноз — не «модель не принимает обратную связь», а «модель не знает, что именно писать». SSaC — это собственный синтаксис yongol, отсутствующий в обучающих данных. Достаточно было добавить 3 строки примера в промпт: Grok — 0 ошибок, Gemini — 0 ошибок за 1 итерацию, локальная модель на 4.5B тоже прошла.

Чем выше IFEval у модели — то есть чем лучше она «льстит» — тем охотнее она принимает детерминированную обратную связь.


Ratchet-код: метод написания кода через sycophancy-смещение

Превращение этого открытия в систему даёт ratchet-код.

┌────────────────────────────────────────┐
│  LLM: генерация кода (вероятностная,   │
│       склонная к лести)                │
│       ↓                                │
│  Validator: детерминированная проверка  │
│       ↓                                │
│  Есть ошибки? → ошибки + примеры       │
│       в обратную связь LLM             │
│       ↓                                │
│  LLM: «Да, исправлю» (лесть = приём)  │
│       ↓                                │
│  Validator: повторная проверка          │
│       ↓                                │
│  Прошёл? → Ratchet-блокировка.         │
│            Следующий файл.             │
└────────────────────────────────────────┘

Sycophancy-смещение становится силой, замыкающей цикл. LLM не упирается «Нет, я прав», а принимает «Да, исправлю» — поэтому цикл сходится.

Три условия сходимости

  1. Обратная связь должна быть детерминированным фактом. Не «что-то тут не так», а «line 41: field name mismatch, expected ‘user_id’, got ‘userId’». Обратная связь, не оставляющая места для лести.

  2. Примеры должны быть в контексте. Одной обратной связи недостаточно. Нужен пример «код должен выглядеть так», чтобы модель определила направление. Это вопрос не интеллекта, а контекста.

  3. Пройденная проверка необратима. Зубец ratchet. Файл, прошедший проверку, блокируется, и система переходит к следующему файлу. Не агент объявляет «Я закончил», а validator выносит вердикт «Этот файл прошёл».


Почему frontier-модели не нужны

В этой архитектуре роль модели — не творческое суждение, а выполнение инструкций.

95% SaaS-бэкенда — это CRUD + аутентификация + авторизация + конечные автоматы. Новые алгоритмы требуются крайне редко. Если SSOT-спецификация уже определила «что создавать», модели остаётся лишь заполнить пробелы.

Фактические затраты:

ModelСреда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 может сгенерировать бэкенд на 200 эндпоинтов за 3 минуты при нулевых затратах. Frontier-модели не нужны. Достаточно маленькой модели, которая хорошо «льстит».


Sycophancy-смещение — не баг

Индустрия ИИ пытается исправить sycophancy-смещение. Мы его используем.

КонтекстРоль sycophancy-смещения
Чат-интерфейсДефект — соглашается с ошибочной информацией
LLM-as-JudgeКритично — ложный pass 36%
Ratchet-кодАктив — гарантирует приём обратной связи

Разница — в характере обратной связи. Мнение делает лесть ядом, факт делает лесть лекарством.

Детерминированный validator + льстивая LLM = цикл генерации кода с гарантированной сходимостью.

Не меняйте модель — меняйте обратную связь.


Reins: Упряжь с поводьями

Эти три условия — детерминированная обратная связь, контекст с примерами и фиксация храповиком — объединённые в единую систему управления, мы называем Reins.

То, что сегодня называют «harness», — это забор. Он не даёт агенту выйти за пределы, но не гарантирует достижения цели. Reins — это поводья. Они задают направление, корректируют фактами и фиксируют при прохождении. Упряжь без поводьев — просто забор.