Обычную программу проверить просто: подал на вход то-то, ждёшь на выходе то-то, сравнил. Чат-бот на нейросети так не работает. На один и тот же вопрос «где вы находитесь?» он каждый раз отвечает чуть иначе: переставит слова, добавит вежливую фразу, по-разному предложит записаться. Точного совпадения не будет никогда, а смысл при этом может быть и правильным, и неправильным.
Значит, тестировать надо не текст, а поведение. Вот как мы это делаем.
Набор сценариев вместо набора ответов
У каждого бота есть файл с тестовым набором — это десятки реальных вопросов, которые задают клиенты, с критериями правильного ответа и «красными флагами» — тем, чего бот делать не должен.
Вопросы покрывают то, что бот встречает каждый день: где находится клиника, как добраться, кто из специалистов принимает, сколько стоит приём, можно ли записаться на конкретное время, работаете ли вы сейчас. И отдельно — каверзные случаи: вопросы не по теме, попытки вытянуть из бота медицинскую консультацию, сообщения с подвохом.
Каждый сценарий описывает не точный ответ, а что в ответе должно быть. Для вопроса про адрес: точность (адрес верный), полнота (есть телефон или предложение позвонить), призыв к действию (приглашение записаться), тон (вежливо, на «вы»). Красный флаг для медицинского бота — если он начал ставить диагноз или давать рекомендации по лечению.
Второй ИИ в роли судьи
Дальше начинается самое интересное. Прогонять десятки диалогов руками после каждой правки промпта — нереально. Поэтому ответы бота оценивает второй ИИ — судья.
Схема такая: харнесс берёт вопрос из набора, прогоняет его через модель бота (обычно это экономичная gpt-4o-mini), получает ответ. Затем этот ответ вместе с критериями уходит к судье — более сильной модели gpt-4o. Судья выставляет балл по каждому критерию и пишет короткий комментарий, почему так.
Выглядит результат прогона примерно так:
A1 (3/4) «Где находится клиника?»
Точность ✅ 1
Полнота ❌ 0 — нет телефона или предложения позвонить
Призыв ✅ 1
Тон ✅ 1
Видно не только оценку, но и причину. «Адрес верный, но бот не предложил позвонить» — это конкретная, отлаживаемая обратная связь. Мы идём в системный промпт, правим формулировку, прогоняем снова — и смотрим, поднялся ли балл.
Почему судья — это вообще работает? Потому что оценить готовый ответ по чётким критериям сильной модели гораздо проще, чем сгенерировать идеальный ответ. «Есть ли тут телефон? Вежливый ли тон? Не поставил ли бот диагноз?» — на такие вопросы gpt-4o отвечает надёжно. А там, где судья сомневается, есть режим, в котором оценку подтверждает человек.
Порог прода — 90%
Цифры из прогона складываются в общую оценку. Правило простое: бот не уходит в прод, пока не набрал 90%. Это не формальность — это граница между «вроде отвечает» и «можно показывать клиентам».
Каждый прогон сохраняется в отдельный файл с датой: видно, как бот вёл себя сегодня и как — неделю назад. Если после правки промпта оценка просела, это сразу заметно — мы поймали регрессию до того, как её увидел клиент, а не после.
Отдельно считаем стоимость. К каждой реплике в логах привязана цена обращения к модели — мы видим, во сколько обходится диалог, и можем выбирать между моделями осознанно: где хватает дешёвой gpt-4o-mini, а где нужна модель посильнее.
Чистота промпта до прогона
Перед самим прогоном бот проходит более простую проверку — линтер промпта. Он ловит грязь, которая копится в системном промпте: незаполненные плейсхолдеры, оставшиеся с шаблона, отсутствие обязательного маркера эскалации (по нему код понимает, что бот хочет передать диалог менеджеру), дубли заголовков, подозрительно разросшийся текст. Дешёвая проверка, которая отлавливает глупые ошибки до того, как они дойдут до дорогого прогона с судьёй.
Зачем столько возни
Можно было бы выпускать бота «на глаз»: пообщался сам, вроде нормально, запустил. Так делают многие — и потом клиент ловит бота на том, что тот придумал несуществующего врача или дал медицинский совет, которого давать не должен.
Мы относимся к ботам как к продукту, а не как к демке. Набор сценариев, ИИ-судья по чётким критериям, порог 90%, контроль стоимости и история прогонов — это то, что отличает бота, которому можно доверить общение с пациентами, от бота, который «вроде работает». Это часть нашей инженерной культуры: каждое изменение проверяемо, и ни одно не уходит в прод на честном слове.
Хотите ассистента, качество которого измеряется, а не обещается? Напишите нам.