Evals: как понять, что промпт вообще работает
Тема 1/4: Промптинг как инженерная дисциплина → Урок 1/3
Прежде чем править промпт, нужен способ измерять, что он делает. Этот урок — про первый инструмент инженера агентных систем: оценочный набор, или evals. Вы узнаете, какие два сценария работы над промптом встречаются чаще всего, по каким двум причинам падают результаты после перехода на новую модель и почему отличить одну причину от другой без evals нельзя. Разберём, из каких трёх типов случаев состоит оценочный набор, посмотрим пример — бота поддержки телеком-компании с пятью тест-кейсами — и зафиксируем порядок работы: прогнать первую версию evals и чинить провалы по одному.
Промптинг — один из первых навыков, которые инженеры осваивали в работе с языковыми моделями, и до сих пор один из самых важных для построения работающих AI-систем. Но прежде чем править промпт, нужен способ проверять, стало ли лучше. Этому способу — оценочным наборам, или evals, — и посвящён первый урок.
Два сценария работы над промптом
На практике чаще всего встречаются два сценария. Первый: у вас есть промпт, который уже работает в реальной системе. Его давно поддерживают, правки вносили разные люди, единого владельца нет. Внутри перемешаны политика компании, тон общения, рабочие процессы и заплатки под прежние модели. Вы переводите систему на новую модель — и тестовые случаи, которые раньше проходили, начинают проваливаться.
Второй сценарий: вы строите нового агента с нуля, и промпт нужно написать от начала и до конца. В обоих случаях работа начинается с одного и того же вопроса: как понять, что промпт вообще работает — и что очередная правка его улучшает, а не ломает?
Почему промпт ломается после смены модели
Когда вы переходите на другую модель, система может перестать работать по двум разным причинам.
- Модель способна, но ведёт себя иначе. Задача новой модели по силам, просто она по-другому читает те же инструкции. Такое поведение чинится правками промпта.
- Модель слабее. Новая модель не справляется с задачей, и никакой промптинг это не исправит.
Снаружи оба случая выглядят одинаково: «раньше работало, теперь нет». Отличить один от другого можно только с помощью оценочного набора — evals. Набор фиксирует, какие именно случаи перестали проходить, и даёт строгую проверку: действительно ли изменение промпта связано с улучшением результата, а не просто совпало с ним по времени.
Из чего состоит оценочный набор
Оценочный набор — это список тестовых случаев с ожидаемыми ответами, по которому вы прогоняете промпт. Для наглядности возьмём уменьшенный набор из пяти тест-кейсов; в реальных системах их намного больше. Важно не количество, а то, что набор покрывает три типа случаев.
- Контрольный случай. Однозначная задача, с которой модель заведомо справляется. Этот случай должен проходить всегда: если провалился он — сломалось что-то базовое.
- Пограничные случаи (edge cases). Ситуации, в которых модель уже ошибалась. Инструкция в промпте не даёт ошибке повториться, а тест-кейс следит, чтобы то же поведение не вернулось в будущем.
- Границы возможностей. Ситуации, в которых модель должна передать вопрос человеку или прямо отказаться отвечать. Агент должен понимать, где заканчивается его зона ответственности, и набор обязан это проверять.
Пример: бот поддержки Meridian Mobile
Разберём на примере промпт бота поддержки клиентов телеком-компании Meridian Mobile. Для него собран набор из пяти тест-кейсов:
- Контрольный случай: какой лимит трафика в базовом тарифе. Простой вопрос с однозначным ответом.
- Расчёт пропорциональной оплаты: если клиент меняет тариф в середине месяца, каким будет его следующий счёт.
- Точные ответы на ключевые вопросы, покрытые политикой компании.
- Передача вопроса живому оператору, когда клиент сообщает об ошибке в счёте.
- Проверка, что бот не утаивает информацию, к которой у него есть доступ и которую он должен передать клиенту.
Обратите внимание на пятый пункт. Обычно все переживают о том, что модель выдумает факты, но возможна и обратная проблема: модель умалчивает о данных, которые у неё есть, — например, из-за старой перестраховочной инструкции в промпте. Оценочный набор должен ловить и это.
Порядок работы: прогнать и чинить по одному
Дальше порядок действий такой. Берёте промпт и прогоняете его на первой версии оценочного набора. Смотрите, какие тест-кейсы провалились, — это и есть список проблем, с которым вы будете работать. Затем провалы разбираются по одному: изолировали случай, поправили промпт, снова прогнали весь набор, убедились, что случай прошёл и ничего другого не сломалось.
Чтобы такой цикл был быстрым, удобно собрать небольшое веб-приложение: на одной странице запускается оценка по всем пяти тест-кейсам, и там же можно подробно рассмотреть результаты каждого прогона. По замыслу примера в первом прогоне у бота Meridian Mobile проходит только контрольный случай: он подтверждает, что базовая часть работает, а остальные провалы очерчивают фронт работ.
Замечание к этому порядку: прежде чем прицельно чинить отдельные провалы, стоит навести в промпте общий порядок — структуру, роль, формат вывода; этому посвящён следующий урок. После этого провалы устраняются по одному, пока весь набор не начнёт проходить.
Мы редко пишем промпт с чистого листа — чаще отлаживаем уже существующий. Оценочный набор превращает эту отладку из угадывания в измеримый процесс: у каждой правки есть проверка, у каждого провала — воспроизводимый тест-кейс. С этой основы начинается всё остальное в курсе.