Realtime-сессия на Python: события и перебивание

Реализуйте обработку подготовленного потока событий голосовой сессии. Нужно собрать текст, вызовы инструментов и факт перебивания активного ответа. Внешнее соединение и API-ключ не требуются: правила событий, аргумент функции и формат результата приведены в условии.

Напишите решение и проверьте его на странице.

Продолжить практику: программа курса «Voice AI Agents PRO».

Обработчик событий realtime-сессии

Задание

Реализуйте функцию process_session(events), которая проходит по потоку событий realtime-сессии и собирает её результат. Аргумент events — список словарей; у каждого события есть поле type. Обрабатывать нужно пять типов:

  • response.created — начался ответ модели;
  • response.done — ответ завершён;
  • response.output_text.delta — фрагмент текста ответа в поле delta;
  • response.function_call_arguments.done — модель запросила инструмент, его имя в поле name;
  • input_audio_buffer.speech_started — клиент начал говорить.

Функция должна вернуть словарь с тремя ключами:

  • transcript — строка: все фрагменты delta из событий response.output_text.delta, склеенные подряд в порядке поступления;
  • tool_calls — список имён инструментов из событий response.function_call_arguments.done, в порядке поступления;
  • interrupted — True, если хотя бы одно событие input_audio_buffer.speech_started пришло во время активного ответа (после response.created и до его response.done), иначе False.

Событие input_audio_buffer.speech_started вне активного ответа — это обычное начало реплики клиента, а не перебивание, и на interrupted оно не влияет.

Примечание

Модули json и sys уже импортированы. Список событий уже разобран и передаётся в функцию аргументом — читать ввод и вызывать функцию вручную не нужно, вывод формируется автоматически тремя строками: транскрипт, имена инструментов через запятую (или -, если их нет) и yes/no для перебивания.

РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи