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

Первая проблема: агент сообщил клиенту, что переводит его на администратора, хотя такого сотрудника не существовало. При анализе логов выяснилось: модель зациклилась на вызове инструмента goto(stage=confirm) — она девять раз подряд пыталась перейти на стадию подтверждения, игнорируя enum в JSON-схеме. После исчерпания лимита вызовов (MAX_TOOL_ROUNDS=10) система интерпретировала это как команду transfer, и агент «перевёл» звонок в никуда. Исправление: в инструмент goto добавлена стадия no_transfer с null-обработчиком, а в саму архитектуру — явное различие между передачей вызова и ошибкой модели.

Вторая проблема: агент путал звонящих. В какой-то момент он начал принимать всех за одного и того же человека — использовал предыдущий контекст для каждого нового звонка. Причина оказалась в том, что идентификация звонящего строилась только на номере телефона, а номер мог повторяться при тестировании. Решение: введён speaker embedding на основе аудио-фрагмента первых секунд разговора. Если вектор голоса не совпадал с сохранённым для данного номера, открывался новый сеанс.

Проблемы устранялись доработкой кода: добавлением стадии no_transfer, внедрением speaker embedding для идентификации звонящих и разделением пайплайнов синтеза.

Третья проблема: клонированный голос не работал. Система должна была синтезировать голос администратора, но вместо этого выдавала стандартный синтезатор. Оказалось, что клонирование голоса — дорогая операция, и его не включали в базовый пайплайн. Исправили разделением синтеза на два потока: дешёвый синтез для стандартных фраз и клонирование только для персонализированных ответов. В итоге агент стал выдавать «клонированный» голос только при явном запросе.

Архитектура решения строится на едином stateless-движке aira-core, который через HTTP принимает запросы от всех каналов. Голосовой тракт обрабатывается в отдельном контейнере, а мозг не знает, барбершоп это или стоматология — вертикаль настраивается через конфиг. Для звонков используется Yandex SpeechKit (STT/TTS) и YandexGPT, данные остаются в РФ. После исправлений агент стабильно работает без вмешательства человека, хотя остаётся вопрос масштабирования на тысячи бизнесов с разными сценариями.

Текстовые каналы, по словам разработчиков, — решённая задача: чат прощает паузы и переспросы. Голос же требует идеальной синхронизации: задержка в секунду воспринимается как молчание, а каждая ошибка становится фатальной. Опыт AIRA показывает, что для надёжности голосового ИИ необходима не только точная модель, но и грамотная архитектура, разделяющая обработку аудио и логику диалога.