Одна голосовая модель или связка с task-агентом: сравнение архитектур без магии
Голосовой агент кажется одной системой: человек говорит, слышит ответ и ожидает действие. Внутри это можно построить двумя способами. Первый объединяет понимание и речь в одном speech-to-speech контуре. Второй оставляет быструю модель отвечать за диалог, а отдельному task-агенту передаёт поиск, расчёт и действия. Выбор влияет не только на задержку, но и на способность доказать, что именно было выполнено.

Иллюстрация редакции: две архитектуры показаны как разные потоки, а не как интерфейс существующего продукта.
Монолит: меньше переходов, меньше границ
Единая модель получает аудио и сразу формирует аудиоответ. Она лучше сохраняет интонацию, паузы и перебивания, поскольку не ждёт отдельную расшифровку и генерацию. Такой путь удобен для разговора, тренажёра и справочного помощника. Чем меньше промежуточных компонентов, тем проще добиться естественного темпа.
Проблема появляется при действии. Если тот же контур выбирает инструмент, меняет запись и сообщает об успехе, разговорное состояние смешивается с операционным. Пользователь перебил фразу — была ли команда отменена? Модель сказала «сейчас сделаю» — это обещание или уже вызов? Без явной машины состояний ответы трудно проверять.
Разделённая связка: голос остаётся отзывчивым
Во второй архитектуре голосовой слой поддерживает диалог, подтверждает услышанное и отправляет структурированную задачу отдельному агенту. Task-агент работает асинхронно, имеет собственные права и возвращает состояния queued, running, completed, failed. Голосовая модель может сообщить о задержке и продолжить разговор, не выдумывая результат.
Цена — дополнительная сложность. Нужны очередь, идентификатор задачи, согласование контекста и защита от повторного запуска. Если голосовой слой отправил два почти одинаковых запроса после перебивания, система обязана понять, это исправление или две команды. Практика ограничения шагов разобрана в отдельном гайде.
Задержка: измеряйте весь путь
У монолита обычно ниже время до первой слышимой реакции. Но пользователь оценивает не только первый звук. Важны распознавание конца реплики, обращение к данным, синтез и подтверждение действия. Разделённая система может немедленно сказать «проверяю» и завершить задачу позже; это честнее долгой тишины, хотя полный результат придёт не быстрее.
Измеряйте медиану и худшие пять процентов отдельно для короткого ответа и действия. Добавьте перебивание, плохую сеть и имя с нестандартным произношением. Заявленный TTFT отдельной модели не описывает звонок целиком — тот же принцип мы разбирали в карточке Mercury Voice.
Контроль и безопасность
Разделение создаёт естественную границу прав: голосовая модель не получает прямой доступ к CRM, а task-агент видит только разрешённый набор полей и команд. Перед записью можно повторить человеку сумму, адрес или дату и получить подтверждение. Журнал связывает аудиофрагмент, распознанный текст, структуру команды и ответ системы.
Монолит тоже можно ограничить, но политика должна находиться ниже модели. Нельзя считать произнесённое «подтверждаю» достаточным, если система не связала его с конкретной ожидающей командой и сроком. Для платежа, удаления или раскрытия данных нужен отдельный экран или второй фактор.
Ошибка completed не равна успеху
Task-агент способен завершить выполнение команды, которая не решила задачу. Например, форма отправлена, но сервер вернул сообщение о дубликате; файл сохранён, но в другую папку. Поэтому техническое completed отделяют от бизнес-состояния verified. Проверку желательно выполнять независимым чтением, а не спрашивать того же агента, всё ли получилось.
В монолитной схеме это различие чаще скрыто естественной речью. Агент уверенно говорит «готово» на основании отсутствия исключения. Тестируйте ложные успехи и сохраняйте доказательства, как предлагается в обзоре Microsoft FSQ.
Стоимость и поддержка
Монолит проще запустить, но сложнее точечно менять. Разделённая система позволяет взять дешёвую быструю модель для разговора и более сильную — только для редких задач. Одновременно возрастает число сервисов, журналов и отказов. Экономию считают на завершённой проверенной задаче, включая повторные вызовы и операторов.
Если проект обслуживает только справочные вопросы без действий, начинать с очереди task-агентов не нужно. Если ассистент бронирует, изменяет или отправляет, разделение почти всегда облегчает аудит.
Итоговый выбор
Для естественного диалога, обучения и простых ответов монолитный speech-to-speech контур даёт быстрый старт. Для действий с последствиями лучше разделить разговор и исполнение: появятся явные состояния, ограниченные права и возможность продолжить диалог во время работы. Гибридный вариант часто практичнее — мгновенные безопасные ответы остаются в голосовом слое, а всё, что требует внешнего инструмента, уходит в контролируемую очередь.
FAQ
Разделённая система всегда медленнее?
Полное действие может занять больше времени, но первая реакция остаётся быстрой, а тяжёлая работа выполняется асинхронно.
Нужно ли хранить исходное аудио?
Не всегда. Можно хранить ограниченный фрагмент, расшифровку и структуру команды согласно политике данных и согласию пользователя.
Как обрабатывать перебивание?
Голосовой слой отменяет только ещё не подтверждённый черновик. Уже отправленная задача получает отдельную команду отмены и собственный статус.
Какая архитектура дешевле?
Зависит от потока. Считайте стоимость проверенной задачи, а не тариф одной модели или время до первого токена.