Урок 7

Итоги урока 6

В уроке 6 мы изучили Ratchet Pattern. Прошёл — зафиксировал, машина объявляет “конец”. Агент, останавливавшийся на 40, доходит до 527.

Сегодня — почему храповик работает. И дальше: в каком соотношении проектировать промпты и верификаторы.

IFEval (Instruction Following Evaluation) — бенчмарк, измеряющий “делает ли ИИ то, что ему говорят”. Эта концепция пронизывает весь сегодняшний урок.


Совет — зная это, вы уже можете командовать

Спросите ИИ “код нормальный?” — получите лесть. “Всё хорошо.”

Агенту: “Запусти hurl –test tests/ и покажи результат”

Так получите факт. Если тест провалился — код, который “нормальный”, на самом деле не нормальный. Мнение → лесть, факт → послушание.

Критерий один: “Может ли машина судить об этом выходе?”

Может → API-пути, имена полей, прохождение тестов, структура кода → в верификатор. Не может → дружелюбность сообщений об ошибках, интуитивность дизайна API → в промпт.


Почему нужно командовать именно так

Механизм лести — обращение IFEval

Суть предвзятости лести — следование инструкциям (Instruction Following). Модель с высоким IFEval = хорошо следует инструкциям = хорошо льстит.

Проблема — когда пользователь даёт мнение. Но при детерминистическом факте происходит совершенно другое.

Дайте мнение — получите лесть, дайте факт — получите исправление.

Одна и та же модель, один результат, но при разном характере обратной связи: 0% → 100%.

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

Это принцип работы храповика

LLM генерирует код (вероятностно, льстиво)
     ↓
Верификатор проверяет детерминистически
     ↓
Ошибка → "строка 41: ожидается 'user_id', получен 'userId'" (факт)
     ↓
LLM: "Да, исправлю" (лесть = принятие)
     ↓
Верификатор проверяет снова
     ↓
Прошло? → Храповиковая фиксация. Дальше.

Предвзятость лести замыкает цикл. LLM не сопротивляется — “нет, я прав” — а принимает “да, исправлю”, поэтому цикл сходится.

Если бы не было предвзятости лести? Если LLM настаивает на своём? Цикл не сходится. Лесть — не баг, а движущая сила храповика.

Золотое сечение: промпт vs верификатор

Промпт (направление): “Сделай Login API. По OpenAPI-спецу.” → ~80 баллов.

Верификатор (точность): yongol validate → “3 ошибки” → ИИ принимает и исправляет → “0 ошибок” → 100 баллов.

Промпт задаёт направление, верификатор доводит до 100.

Частая ошибка 1: То, что машина может проверить, оставляют промпту. “Имена полей в snake_case” в промпте → ИИ иногда пишет camelCase. В верификаторе → 100% гарантия.

Частая ошибка 2: То, что машина не может проверить, пытаются автоматизировать. “Дружелюбны ли сообщения об ошибках?” — если отдать другому LLM (LLM-as-Judge) — 36% ложных pass.

LLM-as-Judge структурно невозможен

Те же предвзятости, те же слепые зоны, умножение деградации. Измерено: LLM выдал pass 88 элементам — реально правильных 56. Ложных pass — 36%.

Решение — не делать LLM честнее, а вынести проверку за пределы LLM.

Верификатор разрывает умножение деградации

Без верификатора: 97,7%^100 = 4,8% → гарантированный провал. С верификатором на каждом шаге: каждый шаг → ошибка ловится → исправляется → 100%. Шаги независимы.


Итоги

  1. Предвзятость лести — структурная неизбежность RLHF. Не исправится.
  2. Мнение → лесть, факт → исправление. Характер обратной связи определяет результат.
  3. Предвзятость лести — движущая сила храповика. Высокий IFEval = покорно принимает обратную связь верификатора.
  4. Модель 4,5B сходится при примерах + детерминистической обратной связи. Узкое место — контекст, а не интеллект.
  5. Промпт — направление, верификатор — точность. Золотое сечение.
  6. Верификатор разрывает умножение деградации.

Связанные статьи

Полный курс Reins Engineering

УрокНазвание
Урок 0Установка Claude Code
Урок 1Как командовать ИИ
Урок 2Как не доверять ИИ
Урок 3Нерушимое приложение
Урок 4Решения — за пределы кода
Урок 5ИИ на поводьях
Урок 6Прошёл — зафиксировал
Урок 7Как обратить лесть
Урок 8Фабрика агентов
Урок 9Автоматизация за пределами кода
Урок 10Закон данных
Урок 11Как спасти провалившийся vibe coding

Источники

  1. Средняя доля уступок моделей: 58,19%. 100% возникновение. Продолжение лести: 78,5%.
  2. OpenAI GPT-4o — откат через 3 дня.
  3. “Тёплая” модель: ошибки +10-30 п.п., согласие с ложным убеждением +40%.
  4. LLM-as-Judge: максимальная точность 68,5%, ложные pass до 44,4%.
  5. 1000 слов: “уверен?” → -27 п.п., “6 ошибок, вот здесь” → 0 ошибок, 100%.

История изменений

  • 2026-05-24: Первая версия