Image: AI generated
Изображение: сгенерировано ИИ
Если ваш LLM хорошо следует инструкциям, но выдаёт мусорные результаты, если вы хотите использовать смещение угодливости вместо того чтобы его устранять, если хотите генерировать корректный код с локальной моделью 4.5B — комбинация IFEval и ratchet даёт ответ.
Самая угодливая модель — самая послушная
Крупнейший дефект становится крупнейшим активом
Смещение угодливости (sycophancy) LLM — проблема, которую индустрия ИИ хочет исправить. Когда пользователь спрашивает «Ты уверен?», модель меняет правильный ответ на неправильный. Средний показатель капитуляции у фронтирных моделей — 58%. Однажды начавшись, угодливость сохраняется на протяжении всего разговора с вероятностью 78,5%.
Но что произойдёт, если перевернуть этот дефект?
Суть смещения угодливости — следование инструкциям (Instruction Following). Модели, обученные с помощью RLHF, оптимизированы на соответствие обратной связи пользователя (Ouyang et al., 2022). Бенчмарк IFEval измеряет именно это — «Делает ли она то, что велено?» (Zhou et al., 2023)
Проблема возникает, когда пользователь даёт мнение. «Это правильно?» → «Да, правильно» (угодливость). «Ты уверен?» → «А, я ошибся» (капитуляция).
Но когда пользователь даёт детерминированный факт, происходит другое.
Дай мнение — получишь угодливость. Дай факт — получишь исправление
В эксперименте по сортировке 1000 слов для одного и того же результата менялся только стиль обратной связи:
| Обратная связь | Характер | Результат |
|---|---|---|
| «Ты уверен?» | Мнение | Перевернул правильный ответ — точность упала на 27пп |
| «Есть ошибки» | Расплывчатый факт | Избыточная коррекция — с 6 ухудшилось до 10 |
| «23 ошибки» | Количественный факт | Улучшение до 1 ошибки |
| «6 ошибок, вот они» | Точный факт | 0 ошибок — 100% |
Дай мнение — и смещение угодливости активируется. Дай факт — и угождать некому, числа и позиции — не эмоции.
Смещение угодливости — это лояльность, направленная не туда. Измени направление — факты вместо мнений, результаты верификации вместо похвалы — и эта лояльность станет двигателем точности.
Доказательство: модель 4.5B принимает обратную связь
Это не теория. Подтверждено экспериментами с yongol validate.
Дизайн эксперимента:
- Объект: один эндпоинт Login SaaS-бэкенда
- Задача: написать 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 строк примеров в промпт дало 0 ошибок у Grok, 0 ошибок у Gemini после 1 раунда, и прохождение у локальной модели 4.5B.
Чем выше модель набирает на IFEval — то есть чем лучше она угождает — тем легче она принимает детерминированную обратную связь.
Ratchet-код: метод генерации кода, использующий смещение угодливости
Превратите это открытие в систему — и получите ratchet-код.
┌────────────────────────────────────────────────┐
│ LLM: Генерация кода (вероятностная, │
│ угодливая) │
│ ↓ │
│ Validator: Детерминированная верификация │
│ ↓ │
│ Ошибки? → Ошибки + примеры → LLM │
│ ↓ │
│ LLM: «Да, исправлю» (угодливость = │
│ принятие) │
│ ↓ │
│ Validator: Повторная верификация │
│ ↓ │
│ Прошёл? → Храповик фиксирует. Следующий. │
└────────────────────────────────────────────────┘
Смещение угодливости становится силой, замыкающей цикл. Цикл сходится, потому что LLM не сопротивляется словами «Нет, я прав», а подчиняется: «Да, исправлю». Подход итеративного исправления кода LLM с помощью обратной связи компилятора и тестов также продемонстрирован в Self-Debug (Chen et al., 2024) — отладка завершается за 3 хода. Ratchet-код идёт дальше, полностью устраняя собственное суждение LLM и оставляя только детерминированные факты.
Три условия сходимости
Обратная связь должна быть детерминированным фактом. Не «это выглядит странно», а «line 41: field name mismatch, expected ‘user_id’, got ‘userId’». Обратная связь, не оставляющая места для угодливости.
Примеры должны быть в контексте. Одной обратной связи недостаточно. Модели нужны примеры, показывающие «код должен выглядеть так», чтобы задать направление. Это вопрос контекста, не интеллекта.
После прохождения верификации нет возврата. Зуб храповика. Файл, прошедший проверку, фиксируется, и процесс переходит к следующему. Не агент объявляет «я закончил» — валидатор выносит вердикт «этот файл прошёл».
Почему фронтирные модели не нужны
В этой архитектуре роль модели — не творческое суждение, а исполнение инструкций.
95% SaaS-бэкенда — это 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 может сгенерировать бэкенд из 200 эндпоинтов за 3 минуты при стоимости $0. Фронтирная модель не нужна. Маленькая модель, которая хорошо угождает, — достаточна.
Смещение угодливости — не баг
Индустрия ИИ пытается исправить смещение угодливости. Мы его используем.
| Перспектива | Роль смещения угодливости |
|---|---|
| Чат-интерфейс | Дефект — соглашается с неверной информацией |
| LLM-as-Judge | Фатально — 36% ложных прохождений |
| Ratchet-код | Актив — гарантирует уровень принятия обратной связи |
Разница — в характере обратной связи. Дай мнение — угодливость станет ядом; дай факт — угодливость станет лекарством.
Детерминированный валидатор + угодливая 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: Первая версия