OpenAI Realtime API предоставляет два метода подключения:
WebRTC — аудио и видео взаимодействие в реальном времени для браузеров и мобильных клиентов.
WebSocket — для интеграции приложений между серверами.
Голосовой разговор в реальном времени
Аудио и видеоконференции
перевод в реальном времени
Транскрипция голоса
Живая генерация кода
Интеграция в реальном времени на стороне сервера
Двусторонняя потоковая передача звука
Смешанные текстовые и аудио разговоры
Поддержка вызова функций
Автоматическое обнаружение голоса (VAD)
Функция транскрипции аудио
Интеграция на стороне сервера WebSocket
Стандартный ключ API (используется только на стороне сервера)
Временный токен (используется клиентом)
Срок действия: 1 минута
Ограничение использования: одно соединение
Как получить: создано через серверный API.
POST https://88api.ai/v1/realtime/sessions
Content-Type : application/json
Authorization : Bearer $NEW_API_KEY
{
"model" : "gpt-4o-realtime-preview-2024-12-17" ,
"voice" : "verse"
}
Никогда не раскрывайте стандартные ключи API на стороне клиента.
Общайтесь по протоколу HTTPS/WSS.
Внедрить соответствующие средства контроля доступа.
Мониторинг необычной активности
URL-адрес: https://88api.ai/v1/realtime.
Параметр запроса: https://88api.ai/v1/realtime
Заголовок запроса:
-https://88api.ai/v1/realtime
-https://88api.ai/v1/realtime
URL-адрес: https://88api.ai/v1/realtime.
Параметр запроса: https://88api.ai/v1/realtime
Заголовок запроса:
-https://88api.ai/v1/realtime
-https://88api.ai/v1/realtime
sequenceDiagram
participant Client
participant Server
participant OpenAI
alt WebRTC соединять
Client->>Server: Запросить временный токен
Server->>OpenAI: Создать сеанс
OpenAI-->>Server: Вернуть временный токен
Server-->>Client: Вернуть временный токен
Client->>OpenAI: создавать WebRTC offer
OpenAI-->>Client: возвращаться answer
Note over Client,OpenAI: Учреждать WebRTC соединять
Client->>OpenAI: Создать канал данных
OpenAI-->>Client: Подтвердить канал передачи данных
else WebSocket соединять
Server->>OpenAI: Учреждать WebSocket соединять
OpenAI-->>Server: Подтвердите соединение
Note over Server,OpenAI: Начать живой разговор
end
Имя: oai-events
Цель: передача событий
Формат: JSON
Ввод: oai-events
Выход: событие oai-events.
Обычный текстовый разговор
Голосовой разговор
Смешанные разговоры
Создать сеанс
Обновление сеанса
Завершить сеанс
Конфигурация сеанса
текстовые события
аудио события
вызов функции
Обновления статуса
события ошибок
Формат ввода
-oai-events
-oai-events
-oai-events
Формат вывода
-oai-events
-oai-events
-oai-events
Тип голоса
-oai-events
-oai-events
-oai-events
температура
Максимальная длина вывода
Слова системных подсказок
Конфигурация инструмента
Порог
Продолжительность молчания
заполнение префикса
async function init () {
// Получить временный ключ с сервера - См. код сервера ниже.
const tokenResponse = await fetch ( '/session' );
const data = await tokenResponse. json ();
const EPHEMERAL_KEY = data.client_secret.value;
// Создать одноранговое соединение
const pc = new RTCPeerConnection ();
// Устанавливает удаленный звук, возвращаемый моделью воспроизведения.
const audioEl = document. createElement ( 'audio' );
audioEl.autoplay = true ;
pc. ontrack = ( e ) => (audioEl.srcObject = e.streams[ 0 ]);
// Добавить локальную звуковую дорожку для входа в микрофон браузера
const ms = await navigator.mediaDevices. getUserMedia ({
audio: true ,
});
pc. addTrack (ms. getTracks ()[ 0 ]);
// Настройте каналы данных для отправки и получения событий
const dc = pc. createDataChannel ( 'oai-events' );
dc. addEventListener ( 'message' , ( e ) => {
// Получайте события сервера в реальном времени здесь!
console. log (e);
});
// Использовать протокол описания сеанса(SDP)Начать сеанс
const offer = await pc. createOffer ();
await pc. setLocalDescription (offer);
const baseUrl = 'https://88api.ai/v1/realtime' ;
const model = 'gpt-4o-realtime-preview-2024-12-17' ;
const sdpResponse = await fetch ( `${ baseUrl }?model=${ model }` , {
method: 'POST' ,
body: offer.sdp,
headers: {
Authorization: `Bearer ${ EPHEMERAL_KEY }` ,
'Content-Type' : 'application/sdp' ,
},
});
const answer = {
type: 'answer' ,
sdp: await sdpResponse. text (),
};
await pc. setRemoteDescription (answer);
}
init ();
import express from 'express' ;
const app = express ();
// Создайте конечную точку для генерации временных токенов.
// Эта конечная точка используется вместе с приведенным выше клиентским кодом.
app. get ( '/session' , async ( req , res ) => {
const r = await fetch ( 'https://88api.ai/v1/realtime/sessions' , {
method: 'POST' ,
headers: {
Authorization: `Bearer ${ process . env . NEW_API_KEY }` ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
model: 'gpt-4o-realtime-preview-2024-12-17' ,
voice: 'verse' ,
}),
});
const data = await r. json ();
// будет изOpenAI REST APIполученныйJSONОтправить обратно клиенту
res. send (data);
});
app. listen ( 3000 );
// Создайте канал данных из однорангового соединения
const dc = pc. createDataChannel ( 'oai-events' );
// Слушайте события сервера на канале данных
// Данные о событии необходимо получить изJSONРазбор строк
dc. addEventListener ( 'message' , ( e ) => {
const realtimeEvent = JSON . parse (e.data);
console. log (realtimeEvent);
});
// Отправлять клиентские события:Сериализуйте действительные клиентские события для
// JSON,и отправляется по каналу данных
const responseCreate = {
type: 'response.create' ,
response: {
modalities: [ 'text' ],
instructions: 'Write a haiku about code' ,
},
};
dc. send ( JSON . stringify (responseCreate));
import WebSocket from 'ws' ;
const url =
'wss://88api.ai/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17' ;
const ws = new WebSocket (url, {
headers: {
Authorization: 'Bearer ' + process.env. NEW_API_KEY ,
'OpenAI-Beta' : 'realtime=v1' ,
},
});
ws. on ( 'open' , function open () {
console. log ( 'Connected to server.' );
});
ws. on ( 'message' , function incoming ( message ) {
console. log ( JSON . parse (message. toString ()));
});
# Необходимо установить библиотеку websocket-client:
# pip install websocket-client
import os
import json
import websocket
NEW_API_KEY = os.environ.get( "NEW_API_KEY" )
url = "wss://88api.ai/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17"
headers = [
"Authorization: Bearer " + NEW_API_KEY ,
"OpenAI-Beta: realtime=v1"
]
def on_open (ws):
print ( "Connected to server." )
def on_message (ws, message):
data = json.loads(message)
print ( "Received event:" , json.dumps(data, indent = 2 ))
ws = websocket.WebSocketApp(
url,
header = headers,
on_open = on_open,
on_message = on_message,
)
ws.run_forever()
/*
Уведомление:В клиентской среде, такой как браузер,Мы рекомендуем использоватьWebRTC。
Но вDenoиCloudflare WorkersВ среде браузера, такой как,
Вы также можете использовать стандартныйWebSocketинтерфейс。
*/
const ws = new WebSocket (
'wss://88api.ai/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17' ,
[
'realtime' ,
// Сертификация
'openai-insecure-api-key.' + NEW_API_KEY ,
// Необязательный
'openai-organization.' + OPENAI_ORG_ID ,
'openai-project.' + OPENAI_PROJECT_ID ,
// Betaпротокол,необходимый
'openai-beta.realtime-v1' ,
]
);
ws. on ( 'open' , function open () {
console. log ( 'Connected to server.' );
});
ws. on ( 'message' , function incoming ( message ) {
console. log (message.data);
});
// Получать события сервера
ws. on ( 'message' , function incoming ( message ) {
// Нужно начать сJSONАнализ данных сообщения
const serverEvent = JSON . parse (message.data);
console. log (serverEvent);
});
// Отправить событие,Создайте формат событий на стороне клиентаJSONструктура данных
const event = {
type: 'response.create' ,
response: {
modalities: [ 'audio' , 'text' ],
instructions: 'Give me a haiku about code.' ,
},
};
ws. send ( JSON . stringify (event));
# Отправлять клиентские события, сериализовать словарь в JSON
def on_open (ws):
print ( "Connected to server." )
event = {
"type" : "response.create" ,
"response" : {
"modalities" : [ "text" ],
"instructions" : "Please assist the user."
}
}
ws.send(json.dumps(event))
# Для получения сообщения требуется анализ полезных данных сообщения из JSON.
def on_message (ws, message):
data = json.loads(message)
print ( "Received event:" , json.dumps(data, indent = 2 ))
Ошибка подключения
Проблемы с сетью
Аутентификация не удалась
Ошибка конфигурации
Ошибки звука
Разрешения устройства
Формат не поддерживается
Проблемы с кодеком
Ошибка сеанса
Срок действия токена истекает
Тайм-аут сеанса
Ограничения параллелизма
Автоматическое переподключение
Восстановление сессии
Повторите попытку в случае ошибки.
Обработка понижения версии
Все события должны включать следующие заголовки запросов:
Заголовки запросов Тип Описание Примеры значений Авторизация Строка Токен аутентификации Носитель $NEW_API_KEY OpenAI-бета Строка версия API в реальном времени=v1
Обновите конфигурацию сеанса по умолчанию.
Параметры Тип Требуется Описание Пример/необязательные значения идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_123 тип строка нет тип события сеанс.обновление модальности Строковый массив Нет Типы модальностей, на которые может реагировать модель ["текст", "аудио"] инструкции Строка Нет Системные инструкции, заданные перед вызовом модели «Ваш предел знаний — 2023–2010 годы…» голос строка нет тип голоса модели сплав, эхо, мерцание входной_аудио_формат Строка Нет Входной аудиоформат pcm16, g711_ulaw, g711_alaw выходной_аудио_формат строка Нет Выходной аудиоформат pcm16, g711_ulaw, g711_alaw input_audio_transcription.model строка нет модель для транскрипции шепот-1 Turn_detection.type строка нет тип обнаружения речи сервер_вад Turn_detection.threshold номер нет Порог активации VAD (0,0-1,0) 0,8 Turn_detection.prefix_padding_ms Целое число Нет Продолжительность звука, включенная до начала речи 500 Turn_detection.silence_duration_ms целое число нет Продолжительность тишины для определения остановки речи 1000 инструменты массив нет список инструментов, доступных для модели [] инструмент_выбор Строка Нет Как модель выбирает инструмент авто/нет/обязательно температура номер нет модель температуры отбора проб 0,8 max_output_tokens Строка/целое число Нет Максимальное количество токенов в одном ответе "инф"/4096
Добавьте аудиоданные во входной аудиобуфер.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_456 тип строка нет тип события input_audio_buffer.append аудио Строка Нет Аудиоданные в кодировке Base64 Base64EncodedAudioData
Отправьте аудиоданные в буфер как сообщение пользователя.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_789 тип строка нет тип события input_audio_buffer.commit
Очищает все аудиоданные во входном аудиобуфере.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_012 тип строка нет тип события input_audio_buffer.clear
Добавляйте в беседу новые элементы беседы.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_345 тип строка нет тип события разговор.item.create предыдущий_item_id Строка Нет Новые элементы разговора будут вставлены после этого идентификатора ноль элемент.id Строка Нет Уникальный идентификатор элемента беседы сообщение_001 тип элемента Строка Нет Тип элемента диалогового окна сообщение/вызов_функции/вызов_функции элемент.статус Строка Нет Статус элемента диалога завершено/in_progress/незавершено элемент.роль Строка Нет Роль отправителя сообщения пользователь/помощник/система элемент.содержание Массив Нет Содержание сообщения [текст/аудио/расшифровка] item.call_id Строка Нет ID вызова функции вызов_001 имя_предмета Строка Нет Имя вызываемой функции имя_функции элемент.аргументы Строка Нет Параметры для вызова функции {"парам": "значение"} элемент.вывод Строка Нет Выходной результат вызова функции {"результат": "значение"}
Усекать аудиоконтент в сообщениях Ассистента.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_678 тип строка нет тип события разговор.элемент.truncate идентификатор_предмета строка нет Идентификатор элемента сообщения помощника, который нужно усечь сообщение_002 индекс_содержимого целое число нет индекс части содержимого для усечения 0 audio_end_ms целое число нет момент окончания обрезания звука 1500
Удаляет указанный элемент беседы из истории бесед.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_901 тип строка нет тип события разговор.элемент.удалить идентификатор_предмета Строка Нет ID элемента беседы, который нужно удалить сообщение_003
Генерация триггерного ответа.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_234 тип строка нет тип события ответ.создать ответ.модальности Строковый массив Нет Модальный тип ответа ["текст", "аудио"] ответ.инструкции Строка Нет Инструкция к модели «Пожалуйста, помогите пользователю». ответ.голос Строка Нет Тип голоса модели сплав/эхо/мерцание ответ.output_audio_format строка нет выходной аудиоформат ПКМ16 ответ.инструменты Массив Нет Список инструментов, доступных для модели ["тип", "имя", "описание"] ответ.tool_choice строка нет Метод инструмента выбора модели авто ответ.температура номер нет температура образца 0,7 response.max_output_tokens Целое число/строка Нет Максимальное количество выходных токенов 150/"инф"
Отменяет генерацию ответа в процессе.
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка нет идентификатор события, сгенерированный клиентом событие_567 тип строка нет тип события ответ.отмена
Событие возвращается при возникновении ошибки.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строковый массив Нет Уникальный идентификатор события сервера ["событие_890"] тип строка нет тип события ошибка ошибка.тип строка нет тип ошибки недопустимая_ошибка_запроса/ошибка_сервера ошибка.код строка нет код ошибки недопустимое_событие ошибка.сообщение Строка Нет Читабельное сообщение об ошибке «Поле «тип» отсутствует». ошибка.парам строка нет параметры, связанные с ошибками ноль error.event_id Строка Нет ID связанного события событие_567
Это событие возвращается, когда включена функция транскрипции входного аудио и транскрипция прошла успешно.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_2122 тип строка нет тип события разговор.item.input_audio_transcription.completed идентификатор_предмета Строка Нет ID элемента сообщения пользователя сообщение_003 индекс_содержимого Целое число Нет Индекс части контента, содержащей аудио 0 стенограмма строка нет расшифрованный текстовый контент "Привет, как дела?"
Это событие возвращается, когда настроена функция транслитерации входного аудио, но запрос транслитерации для пользовательских сообщений завершается неудачей.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_2324 тип строковый массив нет тип события ["conversation.item.input_audio_transcription.failed"] идентификатор_предмета Строка Нет ID элемента сообщения пользователя сообщение_003 индекс_содержимого Целое число Нет Индекс части контента, содержащей аудио 0 ошибка.тип строка нет тип ошибки транскрипция_ошибка ошибка.код строка нет код ошибки audio_unintelligible ошибка.сообщение Строка Нет Читабельное сообщение об ошибке «Аудио не удалось расшифровать». ошибка.парам строка нет параметры, связанные с ошибками ноль
Это событие возвращается, когда клиент обрезал предыдущий элемент аудиосообщения помощника.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_2526 тип строка нет тип события разговор.элемент.усеченный идентификатор_предмета Строка Нет Идентификатор усеченного элемента сообщения помощника сообщение_004 индекс_содержимого целое число нет индекс усеченной части контента 0 audio_end_ms Целое число Нет Момент времени, в котором звук обрезается (миллисекунды) 1500
Это событие возвращается, когда элемент в беседе удаляется.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_2728 тип строка нет тип события разговор.элемент.удален идентификатор_предмета Строка Нет Идентификатор удаленного элемента беседы сообщение_005
Это событие возвращается, когда данные в аудиобуфере фиксируются.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1121 тип строка нет тип события input_audio_buffer.commited предыдущий_item_id Строка Нет Новый элемент разговора будет вставлен после элемента разговора, соответствующего этому идентификатору сообщение_001 идентификатор_предмета Строка Нет Идентификатор создаваемого элемента сообщения пользователя сообщение_002
Это событие возвращается, когда клиент очищает входной аудиобуфер.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1314 тип строка нет тип события input_audio_buffer.cleared
В режиме обнаружения речи сервера это событие возвращается при обнаружении речевого ввода.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1516 тип строка нет тип события input_audio_buffer.speech_started audio_start_ms Целое число Нет Количество миллисекунд от начала сеанса до обнаружения речи 1000 идентификатор_предмета строка нет ID элемента сообщения пользователя, который будет создан при остановке речи сообщение_003
В режиме обнаружения речи сервера это событие возвращается при обнаружении прекращения речевого ввода.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1718 тип строка нет тип события input_audio_buffer.speech_stopped audio_start_ms целое число нет Количество миллисекунд от начала сеанса до обнаружения прекращения речи 2000 идентификатор_предмета Строка Нет Идентификатор создаваемого элемента сообщения пользователя сообщение_003
Это событие возвращается при создании нового ответа.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_2930 тип строка нет тип события ответ.создано ответ.id Строка Нет Уникальный идентификатор ответа resp_001 ответ.объект строка нет тип объекта реалтайм.ответ ответ.статус строка нет статус ответа в_прогрессе ответ.статус_детали Объект Нет Дополнительная информация о статусе ноль ответ.выход Строковый массив Нет Список элементов вывода, сгенерированных ответом ["[]"] ответ.использование Объект Нет Статистика использования ответа ноль
Это событие возвращается после завершения потоковой передачи ответа.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_3132 тип строка нет тип события ответ.сделано ответ.id Строка Нет Уникальный идентификатор ответа resp_001 ответ.объект строка нет тип объекта реалтайм.ответ ответ.статус Строка Нет Окончательный статус ответа завершено/отменено/не выполнено/не завершено ответ.статус_детали Объект Нет Дополнительная информация о статусе ноль ответ.выход Строковый массив Нет Список элементов вывода, сгенерированных ответом ["[...]"] ответ.usage.total_tokens Целое число Нет Общее количество токенов 50 ответ.usage.input_tokens Целое число Нет Количество входных токенов 20 ответ.использование.выходные_токены Целое число Нет Количество выходных жетонов 30
Это событие возвращается, когда во время генерации ответа создается новый элемент вывода.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_3334 тип строка нет тип события ответ.выходной_элемент.добавлен идентификатор_ответа Строка Нет Идентификатор ответа, которому принадлежит выходной элемент resp_001 выходной_индекс Строка Нет Индекс выходного элемента в ответе 0 элемент.id Строка Нет Уникальный идентификатор выходного элемента сообщение_007 элемент.объект строка нет тип объекта в реальном времени.предмет тип элемента строка нет тип выходного элемента сообщение/вызов_функции/вызов_функции элемент.статус Строка Нет Статус выходного элемента in_progress/завершено элемент.роль Строка Нет Роль, связанная с выходным элементом помощник элемент.содержание Массив Нет Вывод содержимого элемента ["тип", "текст", "аудио", "расшифровка"]
Это событие возвращается, когда элемент вывода завершает потоковую передачу.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор событий на стороне сервера событие_3536 тип строка нет тип события ответ.выходной_элемент.сделано идентификатор_ответа Строка Нет Идентификатор ответа, которому принадлежит выходной элемент resp_001 выходной_индекс Строка Нет Индекс выходного элемента в ответе 0 элемент.id Строка Нет Уникальный идентификатор выходного элемента сообщение_007 элемент.объект строка нет тип объекта в реальном времени.предмет тип элемента строка нет тип выходного элемента сообщение/вызов_функции/вызов_функции элемент.статус Строка Нет Окончательный статус выходного элемента завершено/незавершено элемент.роль Строка Нет Роль, связанная с выходным элементом помощник элемент.содержание Массив Нет Вывод содержимого элемента ["тип", "текст", "аудио", "расшифровка"]
Это событие возвращается, когда новая часть содержимого добавляется к элементу вспомогательного сообщения во время генерации ответа.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_3738 тип строка нет тип события ответ.content_part.добавлено идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет Добавьте идентификатор элемента сообщения части содержимого сообщение_007 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 тип детали строка нет тип контента текст/аудио часть.текст Строка Нет Текстовый контент «Привет» часть.аудио Строка Нет Аудиоданные в кодировке Base64 "base64_encoded_audio_data" часть.транскрипт Строка Нет Расшифровка текста аудиозаписи «Привет»
Это событие возвращается, когда содержимое элемента вспомогательного сообщения частично завершило потоковую передачу.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_3940 тип строка нет тип события ответ.content_part.done идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет Добавьте идентификатор элемента сообщения части содержимого сообщение_007 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 тип детали строка нет тип контента текст/аудио часть.текст Строка Нет Текстовый контент «Привет» часть.аудио Строка Нет Аудиоданные в кодировке Base64 "base64_encoded_audio_data" часть.транскрипт Строка Нет Расшифровка текста аудиозаписи «Привет»
Это событие возвращается при обновлении текстового значения части содержимого типа «текст».
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_4142 тип строка нет тип события ответ.текст.дельта идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_007 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 дельта строка нет текстовое добавочное обновление содержимого «Конечно, могу»
Это событие возвращается, когда потоковая передача текста для части контента типа «текст» завершена.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_4344 тип строка нет тип события ответ.текст.сделано идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_007 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 дельта строка нет окончательный полнотекстовый контент «Конечно, я могу с этим помочь».
Это событие возвращается при обновлении транскрипции вывода звука, созданной моделью.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_4546 тип строка нет тип события ответ.audio_transcript.delta идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_008 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 дельта строка нет постепенное обновление транскрибируемого текста «Привет, как я могу»
Это событие возвращается, когда транскрипция вывода звука, созданная моделью, завершает потоковую передачу.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_4748 тип строка нет тип события ответ.audio_transcript.done идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_008 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 стенограмма Строка Нет Окончательная полная расшифровка аудио «Здравствуйте, чем я могу вам помочь сегодня?»
Это событие возвращается при обновлении аудиоконтента, созданного моделью.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_4950 тип строка нет тип события ответ.аудио.дельта идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_008 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0 дельта Строка Нет Дельта аудиоданных в кодировке Base64 «Base64EncodedAudioDelta»
Это событие возвращается, когда генерация звука моделью завершена.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_5152 тип строка нет тип события ответ.аудио.сделано идентификатор_ответа строка нет идентификатор ответа resp_001 идентификатор_предмета Строка Нет ID элемента сообщения сообщение_008 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 индекс_содержимого Целое число Нет Индекс части содержимого в массиве содержимого элемента сообщения 0
Это событие возвращается при обновлении параметров вызова функции, созданных моделью.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_5354 тип строка нет тип события ответ.функция_call_arguments.delta идентификатор_ответа строка нет идентификатор ответа resp_002 идентификатор_предмета Строка Нет ID элемента сообщения ФК_001 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 идентификатор_вызова Строка Нет ID вызова функции вызов_001 дельта Строка Нет Приращение параметра вызова функции в формате JSON {"местоположение": "Сан"}
Это событие возвращается, когда параметры вызова функции, созданные моделью, завершили потоковую передачу.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_5556 тип строка нет тип события ответ.функция_call_arguments.done идентификатор_ответа строка нет идентификатор ответа resp_002 идентификатор_предмета Строка Нет ID элемента сообщения ФК_001 выходной_индекс целое число Нет Индекс выходного элемента в ответе 0 идентификатор_вызова Строка Нет ID вызова функции вызов_001 аргументы Строка Нет Окончательные параметры полного вызова функции (формат JSON) {"местоположение": "Сан-Франциско"}
####rate_limits.обновлено
Срабатывает после каждого события «response.done», чтобы указать обновленное ограничение скорости.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_5758 тип строка нет тип события rate_limits.обновлено предел_рейта Массив объектов Нет Список информации об ограничении скорости [{"name": "requests_per_min", "limit": 60, "remaining": 45, "reset_seconds": 35}]
Это событие возвращается при создании разговора.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_9101 тип строка нет тип события разговор.создан разговор объект нет объект ресурса разговора [{"name": "requests_per_min", "limit": 60, "remaining": 45, "reset_seconds": 35}]
Это событие возвращается при создании элемента диалога.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1920 тип строка нет тип события разговор.элемент.создан предыдущий_item_id Строка Нет ID предыдущего элемента беседы сообщение_002 предмет объект нет объект элемента диалога {"id": "msg_003", "object": "realtime.item", "type": "message", "status": "completed", "role": "user", "content": [{"type": "text", "text": "Hello"}]}
Это событие возвращается при создании сеанса.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_1234 тип строка нет тип события сеанс.создан сессия объект нет объект сеанса {"id": "sess_001", "object": "realtime.session", "model": "gpt-4", "modalities": ["text", "audio"]}
Это событие возвращается при обновлении сеанса.
Параметры Тип Требуется Описание Примеры значений идентификатор_события Строка Нет Уникальный идентификатор события на стороне сервера событие_5678 тип строка нет тип события сеанс.обновлено сессия объект нет обновленный объект сеанса {"id": "sess_001", "object": "realtime.session", "model": "gpt-4", "modalities": ["text", "audio"]}
Параметры Тип Требуется Описание Примеры значений имя строка да имя лимита запросов_пер_мин предел целое число да предельное значение 60 осталось целое число да осталось в наличии 45 сброс_секунд целое число да время сброса (секунды) 35
Параметры Тип Требуется Описание Примеры значений тип строка да тип функции функция имя строка да имя функции получить_погоду описание Строка Нет Описание функции Получить текущую погоду параметры объект да определение параметра функции {"id": "sess_001", "object": "realtime.session", "model": "gpt-4", "modalities": ["text", "audio"]}
Параметры Тип Описание Необязательные значения частота_выборки целое число частота дискретизации 8000, 16000, 24000, 44100, 48000 каналы целое число количество каналов 1 (моно), 2 (стерео) бит_на_выборку целое число количество бит выборки 16 (пкм16), 8 (г711) кодирование строка метод кодирования pcm16, g711_ulaw, g711_alaw
Параметры Тип Описание Значение по умолчанию Диапазон порог число с плавающей запятой Порог активации VAD 0,5 0,0-1,0 prefix_padding_ms целое число заполнение речевого префикса (миллисекунды) 500 0-5000 молчание_длительность_мс Целое число Продолжительность обнаружения тишины (миллисекунды) 1000 100-10000
Параметры Тип Описание Необязательные значения инструмент_выбор строка метод выбора инструмента авто, нет, требуется инструменты массив список доступных инструментов [{type, name, description, parameters}]
Параметры Тип Описание Диапазон/необязательные значения Значение по умолчанию температура число с плавающей запятой температура отбора проб 0,0-2,0 1.0 max_output_tokens целое число/строка максимальная длина вывода 1-4096/"инф" "инф" модальности строковый массив способы реагирования ["текст", "аудио"] ["текст"] голос строка тип голоса сплав, эхо, мерцание сплав
Параметры Тип Требуется Описание Примеры значений идентификатор_события строка да уникальный идентификатор события событие_123 тип строка да тип события сеанс.обновление временная метка целое число Нет временная метка, когда произошло событие (миллисекунды) 1677649363000
Параметры Тип Описание Необязательные значения статус строка статус сеанса активен, завершен, ошибка ошибка объект сообщение об ошибке {"type": "error_type", "message": "error message"}метаданные объект метаданные сеанса {"type": "error_type", "message": "error message"}
Параметры Тип Описание Необязательные значения статус строка статус элемента диалога завершено, в_прогрессе, неполное роль строка роль отправителя пользователь, помощник, система тип строка тип элемента диалогового окна сообщение, вызов_функции, вывод_вызова функции
Параметры Тип Описание Необязательные значения тип строка тип контента текст, аудио, расшифровка формат строка формат контента простой, уценка, HTML кодирование строка метод кодирования utf-8, base64
Параметры Тип Описание Необязательные значения статус строка статус ответа завершено, отменено, не выполнено, неполное статус_детали Объект Детали статуса {"reason": "user_cancelled"}использование объект статистика использования {"reason": "user_cancelled"}
Параметры Тип Описание Примеры значений включен Логическое значение Включить ли транслитерацию правда модель строка модель транслитерации шепот-1 язык строка язык транслитерации ен, ж, авто подсказать строка Расшифровка подсказки слова «Стенограмма разговора»
Параметры Тип Описание Необязательные значения размер_куска целое число Размер аудиоблока (в байтах) 1024, 2048, 4096 задержка строка режим задержки низкий, сбалансированный, высокий сжатие строка метод сжатия нет, опус, mp3
Параметры Тип Описание Значение по умолчанию лед_серверы массив Список серверов ICE [{"urls": "stun:stun.l.google.com:19302"}]аудио_ограничения Объект Аудио ограничения [{"urls": "stun:stun.l.google.com:19302"}]тайм-аут соединения целое число таймаут соединения (миллисекунды) 30000