Почему промпты не убивают AI-слоп: пропущенный слой, который реально решает проблему

Перевод статьи с X об eval-циклах: почему лучшие промпты и большие модели не убирают слоп, и какой слой реально решает проблему качества.

ИИПрактика
🔁
Это перевод и адаптация статьи How To Fix AI Slop (Using Hermes) — я наткнулся на неё в X и посчитал важной. Тема eval-циклов и контроля качества вывода ИИ для меня сейчас одна из самых полезных, поэтому пересобрал материал на русском со своими комментариями и адаптацией под наш контекст. Конкретный фреймворк в оригинале — Hermes, но идея универсальная и работает на любом стеке. У меня, например, на Codex и Notion.

Так в чём, собственно, проблема

Картина знакомая. Вы переписываете промпт три, четыре, пять раз. Добавляете примеры, выкатываете персону, расписываете «не делай вот этого» на километр. Включаете память, складываете в контекстный файл всё про бренд и стиль. Берёте самую дорогую модель и платите за токены в пять раз больше.

Каждое из этих действий покупает вам несколько хороших генераций. А потом слоп возвращается.

Возвращается, потому что вы чините слой, который не был сломан.

Системная природа слопа

Хорошее сравнение из оригинала: фабрика, которая выпускает брак, — это не проблема рабочих. Это проблема контроля качества. Никто не проверяет деталь до того, как она уезжает с конвейера.

С ИИ ровно то же самое. Промпт — это гипотеза, вывод — это результат. И только eval-цикл закрывает петлю между ними.

Без этой петли вы гадаете до бесконечности. Подкрутили промпт, посмотрели на один результат, решили, что «стало лучше», поехали дальше. И никогда не узнали, что тот же самый промпт даёт мусор в 30% случаев — просто потому что смотрели всегда только на один вывод перед глазами.

Модель недетерминирована. Один и тот же промпт, запущенный дважды, даёт два разных ответа. Это значит, что даже идеально написанный промпт всё равно производит слоп на каком-то проценте запусков, и вы не знаете, на каких именно, пока кто-то живой не уткнётся в плохой результат.

Notion image

Где живёт слоп

Прячется он ровно в двух местах, и большинство смотрит только в одно из них.

Контент-выход. Твиты, статьи, посты, лендинги — всё, что вы публикуете под своим именем. Слоп тут выглядит как технически правильный, но пустой текст. Звучит как очередной безымянный ИИ-аккаунт в ленте. Каждая отдельная публикация вроде окей, а вместе они умирают на публике, и вы даже не объясните почему.

Продуктовый выход. Фичи, агенты, чат-боты, поддержка, экстракторы данных — всё, к чему прикасается ваш пользователь. Слоп тут это уверенно поданный неправильный ответ. Галлюцинация в цифре, поломанный JSON, неподходящий тон. Демо работало идеально, а через три деплоя качество молча просело. Не умирает на публике, просто тихо масштабируется: каждый пользователь получает чуть более плохой опыт, большинство ничего не говорит, просто уходит.

Болезнь одна, лекарство одно: вывод, который не измеряется по стандарту перед тем, как уехать к аудитории. Разница только в стоимости. Контент-слоп позорит вас громко, продуктовый кровоточит тихо.

Что такое eval-цикл, если по-русски

Это повторяемый тест, который автоматически оценивает каждый вывод ИИ по вашему стандарту. До публикации и после.

Логика простая:

  1. Сгенерировали вывод.
  2. Оценили его по заранее определённому бенчмарку.
  3. Поймали те запуски, что упали ниже порога.
  4. Починили.
  5. Перепрогнали и пропустили только то, что проходит порог.

Инженеры в коде это умели всегда, и называется это «тесты». Никто не катит в продакшн без них и не молится, чтобы заработало. Но ИИ-вывод вся индустрия сегодня шипает именно так: от модели прямо к пользователю на вайбе и надежде.

Причина демографическая. Те, кто строит сегодня на ИИ, пришли из контента, продаж, продукта, основания компаний, а не из инженерки. Поэтому «напиши тесты на свой вывод» просто не входило в их инструментарий. Evals читаются как инфраструктура для «настоящих» инженеров, и те, кому они нужнее всех, считают, что это не их история.

В реальности eval-цикл живёт в трёх местах одновременно:

  • До публикации. Прогон нового промпта или модели по сохранённому набору кейсов. Регресс-тестирование. Не даёт «починить одно и тихо сломать три других».
  • На лету. Оценка вывода прямо в момент генерации с условной логикой на отказ. Это гардрейл.
  • В продакшне. Непрерывная оценка случайной выборки реальных запусков. Видите просадку качества в день, когда она началась, а не через неделю, когда клиент возмутился.

Первое можно поднять даже в таблице. А все три постоянно, без того чтобы это превратилось во вторую работу, имеет смысл собирать внутри агента.

Главный сдвиг — момент, когда качество становится числом. Слоп перестаёт быть «ощущением, что что-то опять не то», и становится багом, который можно чинить. Вайб не отладить. Просадку с 0,82 до 0,61 можно.

Notion image

Бенчмарк: три части, без которых ничего не работает

Бенчмарк собирается из трёх компонентов. Они одинаковые и для контента, и для продукта.

Тестовые кейсы — реальные входы плюс эталон вывода (ground truth). Для контента это ваши лучшие 20–50 материалов. Те посты, что ушли в закладки, статьи, под которыми не стыдно поставить имя. Вы не выдумываете стандарт, вы вытаскиваете тот, что у вас уже получался в лучшие дни. Для продукта берите реальные входы из логов, не три happy-path-примера, которые тестировали на запуске. Сложные случаи живут именно в логах.

Метрики — способ превратить вывод в число от 0 до 1. Для контента это рубрика. И тут важен нюанс. Размытая рубрика («это хорошо и вовлекающе?») даёт размытую оценку. Конкретная («есть ли в тексте хотя бы один копипастабельный шаблон или плейбук?») даёт оценку, которой можно доверять. Я для своих текстов меряю по четырём критериям: даёт ли материал конкретное действие, может ли его повторить любой из аудитории, есть ли структура и пошаговость, есть ли в нём что-то новое для читателя. Мета-критерий: положит ли читатель это в закладки, чтобы вернуться и применить.

Порог — линия, ниже которой ничего не уходит. 0,7 это разумная отправная точка. Всё, что ниже, переписывается или убивается. Без исключений. Порог работает только тогда, когда вы не пропускаете 0,6 потому что «ну он вам нравится». Смысл порога в том, чтобы убрать ночное эго из решения.

Шесть шагов: собираем цикл у себя

В оригинале статьи всё привязано к Hermes. У меня другой стек: Codex, Notion, скиллы и крон-задачи на моих серверах. Логика та же, инструменты подбирайте под себя.

Шаг 1. Поднимите агента там, где он может вас перебить. Не на отдельной вкладке, а с возможностью писать вам в Telegram, Slack или почту. Гейт работает только тогда, когда может остановить вас перед публикацией.

Шаг 2. Загрузите эталон в память агента. Те самые 20–50 лучших материалов, плюс стандарты, правила бренда, антипаттерны. По этой базе агент сверяется каждый раз. Это не одноразовый промпт, а долговременная память.

Шаг 3. Превратите рубрику в скилл-судью. Вы один раз описываете рубрику и просите агента сделать из неё повторяемый скилл: принимает вывод, возвращает оценку 0–1 по каждому критерию плюс одну строку обоснования. Это LLM-as-a-judge. Модель с чёткой рубрикой оказывается более стабильным критиком, чем вы сами, потому что у неё нет эго и нет любимого предложения, за которое цепляется самооценка.

Шаг 4. Соберите набор тестов в отдельный скилл, а не в табличку. Кейсы плюс метрики живут вместе как переиспользуемый блок, который агент сам обновляет. Метрики подбираются под задачу: exact match для классификации, регулярки для извлечения, JSON-валидатор для структурного вывода, семантическое сходство плюс судья для открытых задач.

Шаг 5. Поставьте гейт на публикацию с регресс-тестом и подтверждением. Любое изменение — новый промпт, другая модель, поправленный пайплайн — триггерит прогон всех кейсов. Агент считает дельту по сравнению с baseline и пишет вам в мессенджер: «оценка упала с 0,81 до 0,74, два кейса регрессировали, подтверждаете?». Дальше — только по кнопке «ок».

Шаг 6. Поставьте крон на продакшн и замкните цикл. Регулярная задача берёт случайную выборку реальных запусков, прогоняет через того же судью, и если линия просела — пишет вам в день просадки, а не через неделю. И ещё одна важная мелочь. Когда вы помечаете плохой вывод дислайком, агент дописывает этот случай в набор тестов. Один сломавшийся запуск становится постоянной проверкой. База кейсов укрепляется сама, без вашего ежедневного участия.

Notion image

Что меняется на практике

Когда система работает, картина выглядит просто:

  • Контент-материал ниже 0,7 по вашей рубрике никогда не уходит в публикацию.
  • Изменение в продукте, которое роняет любую метрику ниже baseline, блокирует деплой до вашего подтверждения.
  • Линия качества в продакшне держится ровной или растёт. В тот день, когда она просела, агент пишет вам, а не клиент через неделю.

И ещё одно, самое важное в долгую. Каждый зафиксированный фейл становится новой проверкой. Качество не просто стабилизируется, оно повышается само, пока вы спите.

Что нужно услышать, даже если не хочется

Ваш ИИ-вывод нестабилен не потому, что вы плохо промптите. И не потому, что модель ещё не дотягивает.

Он нестабилен потому, что у вас работает только половина системы. Есть генерация, нет проверки качества. И вы всё это время винили ту половину, которая как раз работает.

Чинится это целым отсутствующим слоем. Определите, что для вас «хорошо». Превратите это в число. Прогоняйте каждый вывод через стандарт. Поставьте гейт на всё, что не дотягивает. И замкните петлю, чтобы порог рос сам.

Промпт никогда не был системой. Eval-цикл — вот это и есть система. А агент — то место, где она удобнее всего живёт.


По теме

Если вы строите серьёзный пайплайн на ИИ и понимаете, что без слоя проверки качества дальше расти больно — пишите в Telegram @pimenov