🤖 ТЕСТИРУЕМ ИИ l ЧАСТЬ 1
Код никто не трогал, а бот сломалсяУ нас в СберЗдоровье есть чатбот, через который можно записаться к врачу или на анализы
И недавно с ним случилась история, которая отлично показывает, чем тестирование ИИ отличается от обычного
Пятница, вечер. Прилетает жалоба от пользователя: бот записал его на сдачу крови на 15:00 и ни слова не сказал, что сдавать её нужно натощак. Человек приехал после обеда, анализ не приняли, день потерян
Идём разбираться, а там полная тишина: за неделю ни одного мёржа, все автотесты зелёные, по логам никаких ошибок, код никто не трогал, а бот ведёт себя по-другому
Копали полдня и в итоге нашлиЗа пару дней до этого продакт поправил системный промпт, добавил туда всего одну фразу «отвечай короче, пользователи не любят длинные сообщения»
Бот понял это буквально и начал выкидывать из ответов всё лишнее, а заодно и памятки о подготовке к анализам
Для меня это стало главным уроком. В обычном приложении поведение меняется, только когда меняется код
В LLM-приложении бот может поехать, даже если в репозитории ноль коммитов, достаточно, чтобы:— кто-то поправил одну фразу в промпте
— провайдер тихо выкатил новую версию модели
— в базу знаний залили обновлённый прайс или список услуг
— поменяли temperature или другие параметры генерации
При этом обычные автотесты ничего не поймают, потому что проверяют код, а сломался не он
Что мы в итоге поменяли у себя:1️⃣ Промпт теперь живёт в git, как код, со своим ревью и версиями, а не правится на лету в админке
2️⃣ Собрали набор из 50 реальных диалогов: запись к врачу, перенос, отмена, анализы с подготовкой, вопросы не по теме
3️⃣ Прогоняем этот набор на каждое изменение промпта, модели или базы знаний, а не только на мёрж кода
4️⃣ Любая жалоба из прода превращается в новый кейс в наборе, и тот диалог про анализ натощак теперь лежит там первым
Проверяем ответ не на точное совпадение строки, как в assertEquals, а по смыслу: есть ли в ответе дата, адрес клиники и памятка о подготовке
Одна и та же модель может сформулировать одно и то же десятью способами, поэтому сравнивать текст один в один бессмысленно
Главная мысль тут такая: в ИИ-продуктах промпт, модель и база знаний это такой же код, и тестировать их изменения нужно так же серьёзно, как любой мёрж в мастер
А в следующей части расскажу, как мы по одной жалобе за 5 минут понимаем, где проблема, в поиске или в самой модели, там есть один очень простой приём
Следующая часть — https://t.me/threadqa_blog/194На 50 👨💻 выпускаю вторую часть