gpt-live-1 для обработки речи, а сложные вопросы по-прежнему обрабатываются текущей выбранной моделью чата.
Подключение
Используйте API Token платформы для подключения кwss://realtime.acedata.cloud/v1/live/sessions. Учетные данные Studio или сервиса чата используют wss://realtime.acedata.cloud/aichat2/live. Сервер выполняет аутентификацию через Authorization: Bearer <token>; браузер передает учетные данные через подпротокол WebSocket, чтобы не записывать их в URL:
session.started непрерывно отправляйте session.input_audio.append, где audio — это Base64 необработанного аудио PCM с частотой 24 кГц, моно, 16-битного little-endian, без заголовка WAV-файла. Отправляйте аудио с фактической скоростью дискретизации, фрагменты тишины также должны оставаться непрерывными.
Воспроизводите session.output_audio.delta.delta по порядку. Субтитры пользователя и ассистента поступают соответственно из session.input_transcript.delta и session.output_transcript.delta, сохраняйте для каждого фрагмента delta, start_ms, end_ms; субтитры обеих сторон могут увеличиваться одновременно. У Live нет события завершения каждого отдельного голосового ответа, следует обновлять состояние «отвечает» на основе локальной очереди воспроизведения.
Фоновые задачи
В настоящее время поддерживается режим делегированияclient. После получения session.delegation.created приложение вызывает собственный бэкенд на основе голосовых субтитров и сохраненного контекста и возвращает результат через session.thinking.append или session.commentary.append, передавая соответствующий delegation_id и чисто текстовый content объемом до 500 токенов. Результат должен поступать из завершенной фоновой операции; прерывание речи не означает, что фоновая задача отменена.
Делегирование управляемых Responses, хранение записей, session.update, восстановление сессии или автоматическое переподключение пока не поддерживаются. Модель фиксирована как gpt-live-1, аудио фиксировано как PCM16 24 кГц, голос выбирается при начале вызова. Старый Realtime API по-прежнему можно использовать.
Тарификация и завершение вызова
Голос тарифицируется по длительности активной сессии: 0.01 Credits/секунду, то есть 0.6 Credits/минуту, без округления до полных минут. Время, когда говорит пользователь, говорит ассистент, присутствует тишина, обе стороны молчат и ожидают фоновые задачи, — все это тарифицируется. Вызовы фоновой модели или инструментов тарифицируются отдельно в соответствии с соответствующим API. Цена Credits в долларах зависит от пакета пополнения, ориентируйтесь на текущую цену в консоли.session.usage.updated.usage.seconds — это накопленное использование. Например, если сначала получено 12 секунд, а затем 15 секунд, итог составляет 15 секунд. Платформа списывает только добавленную длительность, не суммируя снимки повторно.
При завершении отправьте session.close, продолжайте получать данные, пока не будет получено session.closed, затем закройте соединение и освободите микрофон. Принудительное отключение может привести к тому, что итоговое использование не будет подтверждено, интерфейс должен явно сообщить об этом. При недостаточном балансе, сбое тарификации или достижении лимита сессии соединение завершится. По умолчанию один вызов длится не более 30 минут.
Ошибки параметров возвращаются через событие error; error.client_event_id соответствует неудачной команде. При сбое запуска следует остановить запись и показать ошибку, не переключая автоматически модель и не повторяя попытку, создающую новые расходы.
