Синтетика лжет, а живой звонок - нет
Правила голосового бота были отличные, тесты зеленые, я свои реплики слушал и думал, что норм. Запустил первый реальный звонок - и 2 из 10 попыток рухнули. На втором «Алло» абонент бросил трубку, на «Хорошо» бот ложно понял интерес, вопрос клиента замкнул диалог. Все происходило правильно по логике, но звучало по-другому на телефонной линии.
Тесты проходили на чистой записи из микрофона студии. Живой звонок приносил шум, эхо, паузы, которых в синтетике не было. Модель читала пустое место как клиентский ответ, реагировала не туда. Turn-detection по confidence работал вхолостую - система ASR отдавала уверенность 1.0 для всего подряд.
Проблема не в коде и не в моделях. Проблема в том, что я объявил готовность, минуя живой путь. Тесты pytest - это хорошо, но они видят только то, что мы туда положили. Реальность шире.
Фикс был двойной: во-первых, добавил хуки в рабочий процесс - перед закрытием задачи обязательно формат «Проверено на живом пути» или «НЕ проверено». Честная отчетность. Во-вторых, собрал регресс-набор из этих двух провальных звонков, теперь они в живых тестах.
Это не про идеальный результат. Это про то, что синтетический путь и живой путь - разные вещи, и говорить надо правду, а не скрывать за зелеными тестами.
#голосовойбот #agentic #voximplant #llm #работаспродом #инженерия #честность #тестирование