Главная / Новости / Google показал, как сделать голосового агента с ADK и Gemini
Новости · Gemini и Google ИИ

Google показал, как сделать голосового агента с ADK и Gemini 3.8 Live

Руководство Google объясняет, как голосовому агенту отвечать во время работы инструмента, сообщать о ходе задачи и реагировать на вопросы.

5 мин чтения
Google показал, как сделать голосового агента с ADK и Gemini 3.8 Live
Коротко

Главное за минуту

  • Google описал создание голосового агента с ADK и Gemini 3.8 Live.
  • В тесте отчёта о продажах первые слова звучали через 14.4 секунды с блокирующим инструментом и через 1.2 с потоковым.
  • Агент может отвечать на другие вопросы, пока инструмент работает; перебивание само по себе задачу не отменяет.

Что произошло

Google Developers Blog опубликовал руководство по созданию голосового агента с ADK и Gemini 3.8 Live. В центре материала инструменты, которые позволяют агенту продолжать разговор, пока выполняется запрос. Для этого руководство описывает неблокирующий режим: работа функции не заставляет модель ждать её окончательного результата перед следующей репликой.

В тестовом сценарии подготовки отчёта о продажах переход от блокирующего инструмента к потоковому изменил время до первых слов агента: с 14.4 до 1.2 секунды. Это результат сценария из источника. Он относится именно к началу голосового ответа; переносить его на время готовности отчёта или на свой проект без проверки не следует.

Из источника Google Developers Blog: Руководство посвящено созданию голосового агента с ADK и Gemini 3.8 Live.
Источник: Google Developers Blog.

Почему агент замолкает и что предлагает руководство

При стандартном вызове инструмента в голосовой сессии Gemini Live API цикл исполнения ждёт, пока функция вернёт результат. До этого следующие реплики модели не генерируются. Поэтому пауза связана с порядком выполнения запроса: модель должна дождаться ответа инструмента, прежде чем продолжить говорить.

Инструкция в промпте вроде «сообщай пользователю, что работаешь над задачей» эту блокировку не снимает. Промпт здесь означает текстовое указание модели. Даже получив такое указание, модель остаётся в ожидании ответа функции. Если столкнёшься с этой паузой, проверь способ вызова инструмента, прежде чем переписывать формулировку просьбы.

Руководство предлагает определить функцию как AsyncGenerator, то есть асинхронный генератор, который может отдавать результаты частями. ADK автоматически помечает такой инструмент как NON_BLOCKING, неблокирующий, и сразу отправляет модели подтверждение статуса. Это подтверждение позволяет не ждать окончательного результата функции для продолжения общения.

Как выбирать между сообщениями о прогрессе и коротким подтверждением

Каждый yield, передача очередного результата из генератора, отправляет частичный ответ функции. Модель пересказывает поступающие обновления пользователю. При этом озвучивание может отставать от работы инструмента на несколько секунд. Не воспринимай голосовое сообщение как точную отметку того, что инструмент делает именно в момент произнесения фразы.

Если постоянные сообщения о ходе задачи не нужны, источник описывает другой вариант: асинхронный генератор с единственным yield при завершении. Он позволяет сразу подтвердить запрос голосом, а затем передать итог без постоянного озвучивания прогресса. Выбирай этот подход для проверки сценария, в котором достаточно подтверждения и результата.

Для стандартных корутин, асинхронных функций вида async def... -> dict, руководство предлагает обёртку FunctionTool и настройку response_scheduling. Если работаешь с разработчиком, передай ему названия этих механизмов для сверки с руководством. Подходящую настройку и требования к версии ADK проверь на официальной странице перед повторением примера.

Что меняется для работы

Если ты предприниматель и заказываешь голосового помощника для запросов отчётов, добавь в приёмку отдельную проверку: отвечает ли агент до готовности результата. В примере источника измеряется именно время до первых слов. Попроси отдельно показать начало разговора и выдачу готового отчёта, чтобы не смешивать эти события при оценке демонстрации.

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

Если ты дизайнер, предусмотри вместе с разработчиком отдельные действия для перебивания речи и остановки задачи. По руководству, когда пользователь перебивает агента, работающие инструменты продолжают выполняться и передавать результаты. Для остановки инструмента модель должна вызвать stop_streaming. Проверь, понятно ли пользователю, что именно произошло после его команды.

Если ты фрилансер, который собирает такого агента для заказчика, включи в демонстрацию посторонний вопрос во время выполнения запроса. Источник описывает возможность ответить на него, не отменяя и не прерывая фоновую задачу. Это конкретное поведение, которое можно проверить вместе с заказчиком до согласования сценария разговора.

Что проверить перед использованием

Повторные просьбы пользователя требуют отдельного внимания. По данным источника, модель иногда может попытаться снова вызвать потоковый инструмент, если её неоднократно подталкивать запросами. При проверке повтори просьбу во время работы функции и посмотри, не происходит ли повторный вызов. Возможность продолжать диалог сама по себе не исключает такого поведения.

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

Что пока неизвестно

Поведение агента в твоём проекте самостоятельно не проверялось. Результат 14.4 и 1.2 секунды описывает тестовый сценарий отчёта о продажах из источника. Используй его как повод проверить задержку ответа у себя, без обещания повторить указанное время на другой задаче.

Также самостоятельно не проверялись остановка инструмента через stop_streaming и попытки повторного вызова при настойчивых запросах. Эти пункты стоит включить в проверку реализации вместе с обычным успешным выполнением задачи: оба поведения прямо описаны в руководстве и затрагивают управление уже запущенной работой.

Главное из статьи: Google показал, как сделать голосового агента с ADK и Gemini 3.8 Live
Главное из статьи.

Частые вопросы

Можно просто попросить агента не молчать?

Такое указание не снимает блокировку стандартного вызова. Пока модель ждёт результат функции, просьба сообщать о ходе работы не позволяет ей продолжить ответ. Проверь механизм выполнения инструмента.

Обязательно озвучивать каждый этап работы?

Нет. Руководство описывает асинхронный генератор с единственным yield при завершении: запрос можно сразу подтвердить голосом, без постоянных сообщений о прогрессе.

Что будет, если задать другой вопрос?

Агент может ответить на посторонний вопрос, пока исходный запрос выполняется. По описанию источника, фоновая задача при этом не отменяется и не прерывается.

Перебивание останавливает запущенный инструмент?

Нет. Работающий инструмент продолжает выполнение и передаёт результаты. Чтобы остановить его, модель должна вызвать stop_streaming; само перебивание речи этого не делает.

Источники и проверка

Подготовлено с помощью ИИ по первоисточникам и проверено автоматически: факты, числа и цитаты сверены с источниками. Человек статью перед выходом не читал. Если нашёл ошибку, напиши через контакты.