Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Api live voice предоставляет двунаправленную связь для приложений с поддержкой голоса с помощью подключений WebSocket в режиме реального времени. Этот API поддерживает расширенные функции, включая распознавание речи, синтез текста в речь, потоковую передачу аватаров, данные анимации и комплексные возможности обработки звука.
В API используются события, отформатированные в формате JSON, отправленные через подключения WebSocket для управления беседами, аудиопотоками, взаимодействием аватара и ответами в режиме реального времени. События классифицируются на события клиента (отправляемые с клиента на сервер) и события сервера (отправляемые с сервера на клиент).
Ключевые функции
- Обработка звука в режиме реального времени: поддержка нескольких звуковых форматов, включая PCM16 с различными тарифами выборки и кодеками G.711
- Дополнительные параметры голосовой связи: голос OpenAI, пользовательские голоса Azure, стандартные голоса Azure и личные голоса Azure
- Интеграция аватара: потоковая передача аватаров на основе WebRTC с видео, анимацией и смешиваниями
- Интеллектуальное обнаружение поворотов: несколько вариантов VAD, включая семантику VAD Azure и обнаружение на стороне сервера
- Улучшение звука: встроенное снижение шума и отмена эхо
- Вызов функций: интеграция инструментов для расширенных возможностей беседы
- Гибкое управление сеансами: настраиваемые модальности, инструкции и параметры ответа
События клиента
Динамический API голосовой связи поддерживает следующие события клиента, которые можно отправлять с клиента на сервер:
| Event | Description |
|---|---|
| session.update | Обновление конфигурации сеанса, включая голосовую связь, модальности, обнаружение поворота и другие параметры |
| session.аватар.connect | Установка подключения аватара путем предоставления клиентского SDP для согласования WebRTC |
| input_audio_buffer.append | Добавление звуковых байтов в входной звуковой буфер |
| input_audio_buffer.commit | Фиксация входного звукового буфера для обработки |
| input_audio_buffer.clear | Очистка входного звукового буфера |
| conversation.item.create | Добавление нового элемента в контекст беседы |
| conversation.item.retrieve | Получение определенного элемента из беседы |
| conversation.item.truncate | Усечение звукового сообщения помощника |
| conversation.item.delete | Удаление элемента из беседы |
| response.create | Указание серверу создать ответ с помощью вывода модели |
| response.cancel | Отмена ответа на ход выполнения |
| mcp_approval_response | Отправка утверждения или отклонения для вызова средства MCP, требующего утверждения |
session.update
Обновите конфигурацию сеанса. Это событие можно отправлять в любое время для изменения параметров, таких как голос, модальности, обнаружение поворотов, средства и другие параметры сеанса. Обратите внимание, что после инициализации сеанса с определенной моделью его нельзя изменить на другую модель.
Структура событий
{
"type": "session.update",
"session": {
"modalities": ["text", "audio"],
"voice": {
"type": "openai",
"name": "alloy"
},
"instructions": "You are a helpful assistant. Be concise and friendly.",
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
"input_audio_sampling_rate": 24000,
"turn_detection": {
"type": "azure_semantic_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 500
},
"temperature": 0.8,
"max_response_output_tokens": "inf"
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "session.update". |
| сеанс | RealtimeRequestSession | Объект конфигурации сеанса с полями для обновления |
Пример с пользовательским голосом Azure
{
"type": "session.update",
"session": {
"voice": {
"type": "azure-custom",
"name": "my-custom-voice",
"endpoint_id": "12345678-1234-1234-1234-123456789012",
"temperature": 0.7,
"style": "cheerful"
},
"input_audio_noise_reduction": {
"type": "azure_deep_noise_suppression"
},
"avatar": {
"character": "lisa",
"customized": false,
"video": {
"resolution": {
"width": 1920,
"height": 1080
},
"bitrate": 2000000
}
}
}
}
session.аватар.connect
Установите подключение аватара, предоставив клиенту предложение SDP (протокол описания сеанса) для согласования мультимедиа WebRTC. Это событие необходимо при использовании функций аватара.
Структура событий
{
"type": "session.avatar.connect",
"client_sdp": "<client_sdp>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "session.avatar.connect". |
| client_sdp | струна | Предложение SDP клиента для создания подключений WebRTC |
input_audio_buffer.append
Добавьте звуковые байты в входной звуковой буфер.
Структура событий
{
"type": "input_audio_buffer.append",
"audio": "UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA="
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "input_audio_buffer.append". |
| audio | струна | Звуковые данные в кодировке Base64 |
input_audio_buffer.commit
Зафиксируйте входной звуковой буфер для обработки.
Структура событий
{
"type": "input_audio_buffer.commit"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "input_audio_buffer.commit". |
input_audio_buffer.clear
Снимите входной звуковой буфер.
Структура событий
{
"type": "input_audio_buffer.clear"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "input_audio_buffer.clear". |
conversation.item.create
Добавьте новый элемент в контекст беседы. Это может включать сообщения, вызовы функций и ответы на вызовы функций. Элементы можно вставить по определенным позициям в журнале бесед.
Структура событий
{
"type": "conversation.item.create",
"previous_item_id": "item_ABC123",
"item": {
"id": "item_DEF456",
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": "Hello, how are you?"
}
]
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.create". |
| previous_item_id | струна | Необязательно. Идентификатор элемента, после которого необходимо вставить этот элемент. Если он не указан, добавляется в конец |
| item | RealtimeConversationRequestItem | Элемент, добавляемый в беседу |
Пример с аудиоконтентом
{
"type": "conversation.item.create",
"item": {
"type": "message",
"role": "user",
"content": [
{
"type": "input_audio",
"audio": "UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=",
"transcript": "Hello there"
}
]
}
}
Пример вызова функции
{
"type": "conversation.item.create",
"item": {
"type": "function_call",
"name": "get_weather",
"call_id": "call_123",
"arguments": "{\"location\": \"San Francisco\", \"unit\": \"celsius\"}"
}
}
Пример вызова MCP
{
"type": "conversation.item.create",
"item": {
"type": "mcp_call",
"approval_request_id": null,
"arguments": "",
"server_label": "deepwiki",
"name": "ask_question",
"output": null,
"error": null
}
}
conversation.item.retrieve
Извлеките определенный элемент из журнала бесед. Это полезно для проверки обработанного звука после отмены шума и VAD.
Структура событий
{
"type": "conversation.item.retrieve",
"item_id": "item_ABC123"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.retrieve". |
| item_id | струна | Идентификатор извлекаемого элемента |
conversation.item.truncate
Усечение звукового содержимого сообщения помощника. Это полезно для остановки воспроизведения в определенной точке и синхронизации понимания сервера с состоянием клиента.
Структура событий
{
"type": "conversation.item.truncate",
"item_id": "item_ABC123",
"content_index": 0,
"audio_end_ms": 5000
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.truncate". |
| item_id | струна | Идентификатор элемента сообщения помощника для усечения |
| content_index | целое число | Индекс части содержимого для усечения |
| audio_end_ms | целое число | Длительность усечения звука в миллисекундах |
conversation.item.delete
Удалите элемент из журнала бесед.
Структура событий
{
"type": "conversation.item.delete",
"item_id": "item_ABC123"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.delete". |
| item_id | струна | Идентификатор элемента для удаления |
response.create
Указать серверу создать ответ с помощью вывода модели. Это событие может указать конфигурацию, зависящую от ответа, которая переопределяет значения сеанса по умолчанию.
Структура событий
{
"type": "response.create",
"response": {
"modalities": ["text", "audio"],
"instructions": "Be extra helpful and detailed.",
"voice": {
"type": "openai",
"name": "alloy"
},
"output_audio_format": "pcm16",
"temperature": 0.7,
"max_response_output_tokens": 1000
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.create". |
| response | RealtimeResponseOptions | Необязательная конфигурация ответа, переопределивающая значения сеанса по умолчанию |
Пример с выбором инструмента
{
"type": "response.create",
"response": {
"modalities": ["text"],
"tools": [
{
"type": "function",
"name": "get_current_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
],
"tool_choice": "get_current_time",
"temperature": 0.3
}
}
Пример с анимацией
{
"type": "response.create",
"response": {
"modalities": ["audio", "animation"],
"animation": {
"model_name": "default",
"outputs": ["blendshapes", "viseme_id"]
},
"voice": {
"type": "azure-custom",
"name": "my-expressive-voice",
"endpoint_id": "12345678-1234-1234-1234-123456789012",
"style": "excited"
}
}
}
response.cancel
Отмена ответа на ход выполнения. Это немедленно останавливает создание ответов и связанные звуковые выходные данные.
Структура событий
{
"type": "response.cancel"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.cancel". |
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.retrieve. |
| item_id | струна | Идентификатор извлекаемого элемента. |
| event_id | струна | Идентификатор события. |
RealtimeClientEventConversationItemTruncate
Событие клиента conversation.item.truncate используется для усечения звука предыдущего помощника. Сервер создает звук быстрее, чем в режиме реального времени, поэтому это событие полезно, когда пользователь прерывает усечение звука, отправленного клиенту, но еще не воспроизводится. Понимание звука сервера с воспроизведением клиента синхронизируется.
Усечение звука удаляет расшифровку текста на стороне сервера, чтобы убедиться, что в контексте нет текста, о том, что пользователь не знает.
Если событие клиента успешно выполнено, сервер отвечает на conversation.item.truncated событие.
Структура событий
{
"type": "conversation.item.truncate",
"item_id": "<item_id>",
"content_index": 0,
"audio_end_ms": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.truncate. |
| item_id | струна | Идентификатор элемента сообщения помощника для усечения. Только элементы сообщения помощника могут быть усечены. |
| content_index | целое число | Индекс части содержимого для усечения. Задайте для этого свойства значение "0". |
| audio_end_ms | целое число | Инклюзивное время, до которого усечен звук в миллисекундах. Если audio_end_ms больше фактической продолжительности звука, сервер отвечает ошибкой. |
RealtimeClientEventInputAudioBufferAppend
Событие клиента input_audio_buffer.append используется для добавления звуковых байтов в входной звуковой буфер. Буфер звука — это временное хранилище, в который можно записать и позже зафиксировать.
В режиме обнаружения действий голосовой связи сервера буфер звука используется для обнаружения речи, а сервер решает, когда зафиксировать. При отключении VAD сервера клиент может выбрать, сколько звука должно размещаться в каждом событии не более 15 МиБ. Например, потоковая передача небольших блоков от клиента может позволить VAD быть более адаптивным.
В отличие от большинства других событий клиента, сервер не отправляет ответ подтверждения на событие клиента input_audio_buffer.append .
Структура событий
{
"type": "input_audio_buffer.append",
"audio": "<audio>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.append. |
| audio | струна | Аудиобайты в кодировке Base64. Это значение должно быть в формате, указанном input_audio_format полем в конфигурации сеанса. |
RealtimeClientEventInputAudioBufferClear
Событие клиента input_audio_buffer.clear используется для очистки звуковых байтов в буфере.
Сервер отвечает на input_audio_buffer.cleared событие.
Структура событий
{
"type": "input_audio_buffer.clear"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.clear. |
RealtimeClientEventInputAudioBufferCommit
Событие клиента input_audio_buffer.commit используется для фиксации входного звукового буфера пользователя, который создает новый элемент сообщения пользователя в беседе. Звук транскрибируется, если input_audio_transcription настроен для сеанса.
Если в режиме VAD сервера клиент не должен отправлять это событие, сервер автоматически фиксирует буфер звука. Без vaD сервера клиент должен зафиксировать звуковой буфер, чтобы создать элемент сообщения пользователя. Это событие клиента приводит к ошибке, если входной звуковой буфер пуст.
Фиксация входного звукового буфера не создает ответ от модели.
Сервер отвечает на input_audio_buffer.committed событие.
Структура событий
{
"type": "input_audio_buffer.commit"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.commit. |
RealtimeClientEventResponseCancel
Событие клиента response.cancel используется для отмены ответа на ход выполнения.
Сервер будет отвечать на response.done событие с состоянием response.status=cancelled.
Структура событий
{
"type": "response.cancel"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.cancel. |
RealtimeClientEventResponseCreate
Событие клиента response.create используется для указания серверу создать ответ с помощью вывода модели. Если сеанс настроен в режиме VAD сервера, сервер автоматически создает ответы.
Ответ включает по крайней мере один item, и может иметь два, в этом случае второй — вызов функции. Эти элементы добавляются в журнал бесед.
Сервер реагирует на response.created событие, одно или несколько событий элемента и содержимого (например conversation.item.created , и response.content_part.added), и, наконец response.done , событие, указывающее, что ответ завершен.
Структура событий
{
"type": "response.create"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.create. |
| response | RealtimeResponseOptions | Параметры ответа. |
RealtimeClientEventSessionUpdate
Событие клиента session.update используется для обновления конфигурации сеанса по умолчанию. Клиент может отправлять это событие в любое время, чтобы обновить конфигурацию сеанса, и любое поле можно обновлять в любое время, за исключением голосовой связи.
Обновляются только те поля, которые присутствуют. Чтобы очистить поле (например instructions, ), передайте пустую строку.
Сервер отвечает на session.updated событие, содержащее полную эффективную конфигурацию.
Структура событий
{
"type": "session.update"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть session.update. |
| сеанс | RealtimeRequestSession | Конфигурация сеанса. |
События сервера
Api голосовой трансляции отправляет следующие события сервера для обмена данными о состоянии, ответах и данных клиенту:
| Event | Description |
|---|---|
| ошибка | Указывает, что во время обработки произошла ошибка |
| session.created | Отправлено при успешной установке нового сеанса |
| session.обновлен | Отправляется при обновлении конфигурации сеанса |
| session.avatar.connecting | Указывает, что устанавливается подключение WebRTC аватара |
| conversation.item.created | Отправляется при добавлении нового элемента в беседу |
| conversation.item.retrieved | Ответ на запрос conversation.item.retrieve |
| conversation.item.усечено | Подтверждает усечение элемента |
| conversation.item.deleted | Подтверждает удаление элементов |
| conversation.item.input_audio_transcription.completed | Входной транскрибирование звука завершено |
| conversation.item.input_audio_transcription.delta | Транскрибирование входного звука потоковой передачи |
| conversation.item.input_audio_transcription.failed | Сбой входного транскрибирования звука |
| input_audio_buffer.committed | Входной звуковой буфер зафиксирован для обработки |
| input_audio_buffer.cleared | Входной звуковой буфер очищается |
| input_audio_buffer.speech_started | Распознавание речи в входном звуковом буфере (VAD) |
| input_audio_buffer.speech_остановлено | Речь закончилась входным звуковым буфером (VAD) |
| response.created | Начало нового поколения ответов |
| response.done | Создание ответов завершено |
| response.output_item.added | Новый выходной элемент, добавленный в ответ |
| response.output_item.done | Выходной элемент завершен |
| response.content_part.added | Новая часть содержимого, добавленная в выходной элемент |
| response.content_part.done | Часть содержимого завершена |
| response.text.delta | Потоковая передача текстового содержимого из модели |
| response.text.done | Текстовое содержимое завершено |
| response.audio_transcript.delta | Потоковая расшифровка звука |
| response.audio_transcript.done | Расшифровка звука завершена |
| response.audio.delta | Потоковая передача звукового содержимого из модели |
| response.audio.done | Аудиоконтент завершен |
| response.animation_blendshapes.delta | Потоковая анимация смешивает данные |
| response.animation_blendshapes.done | Данные смешивания анимации завершены |
| response.audio_timestamp.delta | Потоковая передача сведений о метке времени звука |
| response.audio_timestamp.done | Сведения о метке времени звука завершены |
| response.animation_viseme.delta | Потоковая анимация данных viseme |
| response.animation_viseme.done | Данные viseme анимации завершены |
| response.function_call_arguments.delta | Аргументы вызова функции потоковой передачи |
| response.function_call_arguments.done | Аргументы вызова функции завершены |
| mcp_list_tools.in_progress | Список инструментов MCP выполняется |
| mcp_list_tools.completed | Список инструментов MCP завершен |
| mcp_list_tools.failed | Сбой списка инструментов MCP |
| response.mcp_call_arguments.delta | Аргументы вызова потоковой передачи MCP |
| response.mcp_call_arguments.done | Аргументы вызова MCP завершены |
| response.mcp_call.in_progress | Вызов MCP выполняется |
| response.mcp_call.completed | Вызов MCP завершен |
| response.mcp_call.failed | Сбой вызова MCP |
session.created
Отправляется при успешном выполнении нового сеанса. Это первое событие, полученное после подключения к API.
Структура событий
{
"type": "session.created",
"session": {
"id": "sess_ABC123DEF456",
"object": "realtime.session",
"model": "gpt-realtime",
"modalities": ["text", "audio"],
"instructions": "You are a helpful assistant.",
"voice": {
"type": "openai",
"name": "alloy"
},
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
"input_audio_sampling_rate": 24000,
"turn_detection": {
"type": "azure_semantic_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 500
},
"temperature": 0.8,
"max_response_output_tokens": "inf"
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "session.created". |
| сеанс | RealtimeResponseSession | Созданный объект сеанса |
session.обновлен
Отправляется при успешном обновлении конфигурации сеанса session.update в ответ на событие клиента.
Структура событий
{
"type": "session.updated",
"session": {
"id": "sess_ABC123DEF456",
"voice": {
"type": "azure-custom",
"name": "my-voice",
"endpoint_id": "12345678-1234-1234-1234-123456789012"
},
"temperature": 0.7,
"avatar": {
"character": "lisa",
"customized": false
}
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "session.updated". |
| сеанс | RealtimeResponseSession | Обновленный объект сеанса |
session.avatar.connecting
Указывает, что устанавливается подключение WebRTC аватара. Это событие отправляется в ответ на session.avatar.connect событие клиента.
Структура событий
{
"type": "session.avatar.connecting",
"server_sdp": "<server_sdp>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "session.avatar.connecting". |
conversation.item.created
Отправляется при добавлении нового элемента в беседу через событие клиента conversation.item.create или автоматически во время создания ответа.
Структура событий
{
"type": "conversation.item.created",
"previous_item_id": "item_ABC123",
"item": {
"id": "item_DEF456",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "user",
"content": [
{
"type": "input_text",
"text": "Hello, how are you?"
}
]
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.created". |
| previous_item_id | струна | Идентификатор элемента, после которого был вставлен этот элемент |
| item | RealtimeConversationResponseItem | Созданный элемент беседы |
Пример с элементом аудио
{
"type": "conversation.item.created",
"item": {
"id": "item_GHI789",
"type": "message",
"status": "completed",
"role": "user",
"content": [
{
"type": "input_audio",
"audio": null,
"transcript": "What's the weather like today?"
}
]
}
}
conversation.item.retrieved
Отправляется в ответ на событие клиента, предоставляя запрошенный conversation.item.retrieve элемент беседы.
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.created". |
| item | RealtimeConversationResponseItem | Созданный элемент беседы |
conversation.item.усечено
Событие сервера conversation.item.truncated возвращается при усечении предыдущего элемента звукового сообщения помощника с событием conversation.item.truncate . Это событие используется для синхронизации понимания сервера звука с воспроизведением клиента.
Это событие усекает звук и удаляет расшифровку текста на стороне сервера, чтобы гарантировать отсутствие текста в контексте, о том, что пользователь не знает.
Структура событий
{
"type": "conversation.item.truncated",
"item_id": "<item_id>",
"content_index": 0,
"audio_end_ms": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.truncated. |
| item_id | струна | Идентификатор элемента сообщения помощника, который был усечен. |
| content_index | целое число | Индекс части контента, которая была усечена. |
| audio_end_ms | целое число | Длительность усечения звука в миллисекундах. |
conversation.item.deleted
Отправлено в ответ на событие клиента, убедив, что указанный conversation.item.delete элемент был удален из беседы.
Структура событий
{
"type": "conversation.item.deleted",
"item_id": "item_ABC123"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "conversation.item.deleted". |
| item_id | струна | Идентификатор удаленного элемента |
response.created
Отправляется при начале создания нового ответа. Это первое событие в последовательности откликов.
Структура событий
{
"type": "response.created",
"response": {
"id": "resp_ABC123",
"object": "realtime.response",
"status": "in_progress",
"status_details": null,
"output": [],
"usage": {
"total_tokens": 0,
"input_tokens": 0,
"output_tokens": 0
}
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.created". |
| response | RealtimeResponse | Созданный объект ответа |
response.done
Отправляется после завершения создания ответов. Это событие содержит окончательный ответ со всеми выходными элементами и статистикой использования.
Структура событий
{
"type": "response.done",
"response": {
"id": "resp_ABC123",
"object": "realtime.response",
"status": "completed",
"status_details": null,
"output": [
{
"id": "item_DEF456",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
]
}
],
"usage": {
"total_tokens": 87,
"input_tokens": 52,
"output_tokens": 35,
"input_token_details": {
"cached_tokens": 0,
"text_tokens": 45,
"audio_tokens": 7
},
"output_token_details": {
"text_tokens": 15,
"audio_tokens": 20
}
}
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.done". |
| response | RealtimeResponse | Завершенный объект ответа |
response.output_item.added
Отправляется при добавлении нового выходного элемента в ответ во время создания.
Структура событий
{
"type": "response.output_item.added",
"response_id": "resp_ABC123",
"output_index": 0,
"item": {
"id": "item_DEF456",
"object": "realtime.item",
"type": "message",
"status": "in_progress",
"role": "assistant",
"content": []
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.output_item.added". |
| response_id | струна | Идентификатор ответа, к которому принадлежит этот элемент |
| output_index | целое число | Индекс элемента в выходном массиве ответа |
| item | RealtimeConversationResponseItem | Добавленный выходной элемент |
response.output_item.done
Отправляется после завершения выходного элемента.
Структура событий
{
"type": "response.output_item.done",
"response_id": "resp_ABC123",
"output_index": 0,
"item": {
"id": "item_DEF456",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! I'm doing well, thank you for asking."
}
]
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.output_item.done". |
| response_id | струна | Идентификатор ответа, к которому принадлежит этот элемент |
| output_index | целое число | Индекс элемента в выходном массиве ответа |
| item | RealtimeConversationResponseItem | Завершенный выходной элемент |
response.content_part.added
Событие сервера response.content_part.added возвращается при добавлении новой части содержимого в элемент сообщения помощника во время создания ответа.
Структура событий
{
"type": "response.content_part.added",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"part": {
"type": "text",
"text": ""
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.content_part.added". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента, к которому принадлежит эта часть содержимого |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс этой части содержимого в элементе |
| part | RealtimeContentPart | Добавленная часть содержимого |
response.content_part.done
Событие сервера response.content_part.done возвращается при выполнении потоковой передачи части содержимого в элементе сообщения помощника.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.content_part.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"part": {
"type": "text",
"text": "Hello! I'm doing well, thank you for asking."
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.content_part.done". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента, к которому принадлежит эта часть содержимого |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс этой части содержимого в элементе |
| part | RealtimeContentPart | Завершенная часть содержимого |
response.text.delta
Потоковая передача текстового содержимого из модели. Отправляется постепенно, как модель создает текст.
Структура событий
{
"type": "response.text.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"delta": "Hello! I'm"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.text.delta". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| delta | струна | Добавочное текстовое содержимое |
response.text.done
Отправляется после завершения создания текстового содержимого.
Структура событий
{
"type": "response.text.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"text": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.text.done". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| текст | струна | Полное текстовое содержимое |
response.audio.delta
Потоковая передача звукового содержимого из модели. Звук предоставляется в виде данных в кодировке Base64.
Структура событий
{
"type": "response.audio.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"delta": "UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA="
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.audio.delta". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| delta | струна | Блок звуковых данных в кодировке Base64 |
response.audio.done
Отправляется после завершения создания звукового содержимого.
Структура событий
{
"type": "response.audio.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.audio.done". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
response.audio_transcript.delta
Потоковая расшифровка созданного звукового содержимого.
Структура событий
{
"type": "response.audio_transcript.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"delta": "Hello! I'm doing"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.audio_transcript.delta". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| delta | струна | Добавочный текст транскрибирования |
response.audio_transcript.done
Отправляется после завершения создания транскрибирования звука.
Структура событий
{
"type": "response.audio_transcript.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"transcript": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "response.audio_transcript.done". |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| transcript | струна | Полный текст расшифровки |
conversation.item.input_audio_transcription.completed
Событие сервера conversation.item.input_audio_transcription.completed является результатом транскрибирования звука для речи, записанной в буфер звука.
Транскрибирование начинается, когда входной звуковой буфер фиксируется клиентом или сервером (в server_vad режиме). Транскрибирование выполняется асинхронно с созданием ответа, поэтому это событие может происходить до или после событий отклика.
Модели API реального времени принимают звук в собственном коде, поэтому входные транскрибирование — это отдельный процесс, выполняемый в отдельной модели распознавания речи, например whisper-1. Таким образом, расшифровка может несколько отличаться от интерпретации модели и должна рассматриваться как грубое руководство.
Структура событий
{
"type": "conversation.item.input_audio_transcription.completed",
"item_id": "<item_id>",
"content_index": 0,
"transcript": "<transcript>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.input_audio_transcription.completed. |
| item_id | струна | Идентификатор элемента сообщения пользователя, содержащего звук. |
| content_index | целое число | Индекс части содержимого, содержащей звук. |
| transcript | струна | Транскрибированные тексты. |
conversation.item.input_audio_transcription.delta
Событие сервера conversation.item.input_audio_transcription.delta возвращается при настройке входного транскрибирования звука, а запрос транскрибирования для сообщения пользователя выполняется. Это событие предоставляет частичные результаты транскрибирования по мере их доступности.
Структура событий
{
"type": "conversation.item.input_audio_transcription.delta",
"item_id": "<item_id>",
"content_index": 0,
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.input_audio_transcription.delta. |
| item_id | струна | Идентификатор элемента сообщения пользователя. |
| content_index | целое число | Индекс части содержимого, содержащей звук. |
| delta | струна | Добавочный текст транскрибирования. |
conversation.item.input_audio_transcription.failed
Событие сервера conversation.item.input_audio_transcription.failed возвращается при настройке входного транскрибирования звука, а запрос транскрибирования для сообщения пользователя завершился ошибкой. Это событие отличается от других error событий, чтобы клиент смог идентифицировать связанный элемент.
Структура событий
{
"type": "conversation.item.input_audio_transcription.failed",
"item_id": "<item_id>",
"content_index": 0,
"error": {
"code": "<code>",
"message": "<message>",
"param": "<param>"
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть conversation.item.input_audio_transcription.failed. |
| item_id | струна | Идентификатор элемента сообщения пользователя. |
| content_index | целое число | Индекс части содержимого, содержащей звук. |
| ошибка | объект | Сведения об ошибке транскрибирования. См. вложенные свойства в следующей таблице. |
Свойства ошибки
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип ошибки. |
| код | струна | Код ошибки, если таковой есть. |
| сообщение | струна | Сообщение об ошибке, доступное для чтения человеком. |
| параметр | струна | Параметр, связанный с ошибкой, если таковой есть. |
response.animation_blendshapes.delta
Событие сервера response.animation_blendshapes.delta возвращается, когда модель создает данные анимации смешения данных в ответе. Это событие предоставляет добавочные данные blendshapes по мере его доступности.
Структура событий
{
"type": "response.animation_blendshapes.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"frame_index": 0,
"frames": [
[0.0, 0.1, 0.2, ..., 1.0]
...
]
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.animation_blendshapes.delta. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| frame_index | целое число | Индекс первого кадра в этом пакете кадров |
| Кадров | массив массива с плавающей запятой | Массив кадров blendshape, каждый кадр является массивом значений blendshape |
response.animation_blendshapes.done
Событие сервера response.animation_blendshapes.done возвращается, когда модель завершит создание анимации смешает данные в ответе.
Структура событий
{
"type": "response.animation_blendshapes.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.animation_blendshapes.done. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
response.audio_timestamp.delta
Событие сервера response.audio_timestamp.delta возвращается, когда модель создает данные метки времени звука в рамках ответа. Это событие предоставляет добавочные данные метки времени для выравнивания выходного звука и текста по мере его доступности.
Структура событий
{
"type": "response.audio_timestamp.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"audio_offset_ms": 0,
"audio_duration_ms": 500,
"text": "Hello",
"timestamp_type": "word"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio_timestamp.delta. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| audio_offset_ms | целое число | Смещение звука в миллисекундах с начала звука |
| audio_duration_ms | целое число | Длительность сегмента звука в миллисекундах |
| текст | струна | Сегмент текста, соответствующий этой метке времени звука |
| timestamp_type | струна | Тип метки времени, в настоящее время поддерживается только "word" |
response.audio_timestamp.done
Отправляется после завершения создания метки времени звука.
Структура событий
{
"type": "response.audio_timestamp.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio_timestamp.done. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
response.animation_viseme.delta
Событие сервера response.animation_viseme.delta возвращается при создании данных анимации viseme в ответе. Это событие предоставляет добавочные данные viseme по мере его доступности.
Структура событий
{
"type": "response.animation_viseme.delta",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0,
"audio_offset_ms": 0,
"viseme_id": 1
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.animation_viseme.delta. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
| audio_offset_ms | целое число | Смещение звука в миллисекундах с начала звука |
| viseme_id | целое число | Идентификатор viseme, соответствующий фигуре рта для анимации |
response.animation_viseme.done
Событие сервера response.animation_viseme.done возвращается, когда модель завершит создание данных viseme анимации в ответе.
Структура событий
{
"type": "response.animation_viseme.done",
"response_id": "resp_ABC123",
"item_id": "item_DEF456",
"output_index": 0,
"content_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.animation_viseme.done. |
| response_id | струна | Идентификатор ответа |
| item_id | струна | Идентификатор элемента |
| output_index | целое число | Индекс элемента в ответе |
| content_index | целое число | Индекс части содержимого |
Событие сервера response.animation_viseme.delta возвращается при создании данных анимации viseme в ответе. Это событие предоставляет добавочные данные viseme по мере его доступности.
ошибка
Событие сервера error возвращается при возникновении ошибки, которая может быть проблемой клиента или проблемой сервера. Большинство ошибок можно восстановить, и сеанс остается открытым.
Структура событий
{
"type": "error",
"error": {
"code": "<code>",
"message": "<message>",
"param": "<param>",
"event_id": "<event_id>"
}
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть error. |
| ошибка | объект | Сведения об ошибке. См. вложенные свойства в следующей таблице. |
Свойства ошибки
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип ошибки. Например, "invalid_request_error" и "server_error" являются типами ошибок. |
| код | струна | Код ошибки, если таковой есть. |
| сообщение | струна | Сообщение об ошибке, доступное для чтения человеком. |
| параметр | струна | Параметр, связанный с ошибкой, если таковой есть. |
| event_id | струна | Идентификатор события клиента, вызвавшего ошибку, если применимо. |
input_audio_buffer.cleared
Событие сервера input_audio_buffer.cleared возвращается, когда клиент очищает входной звуковой буфер с событием input_audio_buffer.clear .
Структура событий
{
"type": "input_audio_buffer.cleared"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.cleared. |
input_audio_buffer.committed
Событие сервера input_audio_buffer.committed возвращается, когда входной звуковой буфер фиксируется клиентом или автоматически в режиме VAD сервера. Это item_id свойство является идентификатором созданного элемента пользовательского сообщения. Таким образом, conversation.item.created событие также отправляется клиенту.
Структура событий
{
"type": "input_audio_buffer.committed",
"previous_item_id": "<previous_item_id>",
"item_id": "<item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.committed. |
| previous_item_id | струна | Идентификатор предыдущего элемента, после которого вставляется новый элемент. |
| item_id | струна | Идентификатор созданного элемента сообщения пользователя. |
input_audio_buffer.speech_started
Событие сервера input_audio_buffer.speech_started возвращается в server_vad режиме, когда речь обнаруживается в звуковом буфере. Это событие может произойти при добавлении звука в буфер (если речь еще не обнаружена).
Замечание
Клиент может использовать это событие для прерывания воспроизведения звука или предоставления визуального отзыва пользователю.
Клиент должен ожидать получения события при остановке input_audio_buffer.speech_stopped речи. Это item_id свойство является идентификатором элемента сообщения пользователя, созданного при остановке речи. Он item_id также включен в input_audio_buffer.speech_stopped событие, если клиент вручную не фиксирует звуковой буфер во время активации VAD.
Структура событий
{
"type": "input_audio_buffer.speech_started",
"audio_start_ms": 0,
"item_id": "<item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.speech_started. |
| audio_start_ms | целое число | Миллисекунда с начала всех аудиозаписей, записанных в буфер во время сеанса при первом обнаружении речи. Это свойство соответствует началу аудио, отправленного в модель, и, следовательно, включает prefix_padding_ms настроенный в сеансе. |
| item_id | струна | Идентификатор элемента сообщения пользователя, созданного при остановке речи. |
input_audio_buffer.speech_остановлено
Событие сервера input_audio_buffer.speech_stopped возвращается в server_vad режиме, когда сервер обнаруживает конец речи в звуковом буфере.
Сервер также отправляет conversation.item.created событие с элементом сообщения пользователя, созданным из звукового буфера.
Структура событий
{
"type": "input_audio_buffer.speech_stopped",
"audio_end_ms": 0,
"item_id": "<item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть input_audio_buffer.speech_stopped. |
| audio_end_ms | целое число | Миллисекунда с момента начала сеанса при остановке речи. Это свойство соответствует концу звука, отправляемого в модель, и, следовательно, включает min_silence_duration_ms настроенный в сеансе. |
| item_id | струна | Идентификатор созданного элемента сообщения пользователя. |
rate_limits.обновлено
Событие сервера rate_limits.updated создается в начале ответа, чтобы указать обновленные ограничения скорости.
При создании ответа некоторые маркеры зарезервированы для выходных маркеров. Ограничения скорости, отображаемые здесь, отражают это резервирование, которое затем корректируется соответствующим образом после завершения ответа.
Структура событий
{
"type": "rate_limits.updated",
"rate_limits": [
{
"name": "<name>",
"limit": 0,
"remaining": 0,
"reset_seconds": 0
}
]
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть rate_limits.updated. |
| rate_limits | массив RealtimeRateLimitsItem | Список сведений об ограничении скорости. |
response.audio.delta
Событие сервера response.audio.delta возвращается при обновлении звука, созданного моделью.
Структура событий
{
"type": "response.audio.delta",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0,
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio.delta. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
| delta | струна | Разностные звуковые данные в кодировке Base64. |
response.audio.done
Событие сервера response.audio.done возвращается при завершении звука, созданного моделью.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.audio.done",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio.done. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
response.audio_transcript.delta
Событие сервера response.audio_transcript.delta возвращается при обновлении транскрибирования звука, созданного моделью.
Структура событий
{
"type": "response.audio_transcript.delta",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0,
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio_transcript.delta. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
| delta | струна | Разностная расшифровка. |
response.audio_transcript.done
Событие сервера response.audio_transcript.done возвращается при выполнении потоковой передачи данных, созданной моделью.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.audio_transcript.done",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0,
"transcript": "<transcript>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.audio_transcript.done. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
| transcript | струна | Окончательный расшифровка звука. |
response.function_call_arguments.delta
Событие сервера response.function_call_arguments.delta возвращается при обновлении аргументов вызова функции, созданных моделью.
Структура событий
{
"type": "response.function_call_arguments.delta",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"call_id": "<call_id>",
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.function_call_arguments.delta. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента вызова функции. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| call_id | струна | Идентификатор вызова функции. |
| delta | струна | Аргументы разностно в виде строки JSON. |
response.function_call_arguments.done
Событие сервера response.function_call_arguments.done возвращается, когда аргументы вызова функции, созданные моделью, выполняют потоковую передачу.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.function_call_arguments.done",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"call_id": "<call_id>",
"arguments": "<arguments>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.function_call_arguments.done. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента вызова функции. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| call_id | струна | Идентификатор вызова функции. |
| arguments | струна | Окончательные аргументы в виде строки JSON. |
mcp_list_tools.in_progress
Событие сервера mcp_list_tools.in_progress возвращается при запуске службы перечисления доступных средств с сервера mcp.
Структура событий
{
"type": "mcp_list_tools.in_progress",
"item_id": "<mcp_list_tools_item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть mcp_list_tools.in_progress. |
| item_id | струна | Идентификатор обрабатываемого элемента средств списка MCP . |
mcp_list_tools.completed
Событие сервера mcp_list_tools.completed возвращается, когда служба завершает перечисление доступных средств с сервера mcp.
Структура событий
{
"type": "mcp_list_tools.completed",
"item_id": "<mcp_list_tools_item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть mcp_list_tools.completed. |
| item_id | струна | Идентификатор обрабатываемого элемента средств списка MCP . |
mcp_list_tools.failed
Событие сервера mcp_list_tools.failed возвращается, когда служба не может перечислить доступные средства с сервера mcp.
Структура событий
{
"type": "mcp_list_tools.failed",
"item_id": "<mcp_list_tools_item_id>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть mcp_list_tools.failed. |
| item_id | струна | Идентификатор обрабатываемого элемента средств списка MCP . |
response.mcp_call_arguments.delta
Событие сервера response.mcp_call_arguments.delta возвращается при обновлении аргументов вызова средства mcp, созданного моделью.
Структура событий
{
"type": "response.mcp_call_arguments.delta",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.mcp_call_arguments.delta. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента вызова средства mcp. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| delta | струна | Аргументы разностно в виде строки JSON. |
response.mcp_call_arguments.done
Событие сервера response.mcp_call_arguments.done возвращается при выполнении потоковой передачи аргументов вызова средства mcp, созданного моделью.
Структура событий
{
"type": "response.mcp_call_arguments.done",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"arguments": "<arguments>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.mcp_call_arguments.done. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента вызова средства mcp. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| arguments | струна | Окончательные аргументы в виде строки JSON. |
response.mcp_call.in_progress
Событие сервера response.mcp_call.in_progress возвращается при запуске обработки вызова средства MCP.
Структура событий
{
"type": "response.mcp_call.in_progress",
"item_id": "<item_id>",
"output_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.mcp_call.in_progress. |
| item_id | струна | Идентификатор элемента вызова средства mcp. |
| output_index | целое число | Индекс выходного элемента в ответе. |
response.mcp_call.completed
Событие сервера response.mcp_call.completed возвращается при успешном завершении вызова средства MCP.
Структура событий
{
"type": "response.mcp_call.completed",
"item_id": "<item_id>",
"output_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.mcp_call.completed. |
| item_id | струна | Идентификатор элемента вызова средства mcp. |
| output_index | целое число | Индекс выходного элемента в ответе. |
response.mcp_call.failed
Событие сервера response.mcp_call.failed возвращается при сбое вызова средства MCP.
Структура событий
{
"type": "response.mcp_call.failed",
"item_id": "<item_id>",
"output_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.mcp_call.failed. |
| item_id | струна | Идентификатор элемента вызова средства mcp. |
| output_index | целое число | Индекс выходного элемента в ответе. |
response.output_item.added
Событие сервера response.output_item.added возвращается при создании нового элемента во время создания ответа.
Структура событий
{
"type": "response.output_item.added",
"response_id": "<response_id>",
"output_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.output_item.added. |
| response_id | струна | Идентификатор ответа, к которому принадлежит элемент. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| item | RealtimeConversationResponseItem | Добавлен элемент. |
response.output_item.done
Событие сервера response.output_item.done возвращается при выполнении потоковой передачи элемента.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.output_item.done",
"response_id": "<response_id>",
"output_index": 0
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.output_item.done. |
| response_id | струна | Идентификатор ответа, к которому принадлежит элемент. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| item | RealtimeConversationResponseItem | Элемент, который выполняет потоковую передачу. |
response.text.delta
Событие сервера response.text.delta возвращается при обновлении текста, созданного моделью. Текст соответствует text части содержимого элемента сообщения помощника.
Структура событий
{
"type": "response.text.delta",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0,
"delta": "<delta>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.text.delta. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
| delta | струна | Разностный текст. |
response.text.done
Событие сервера response.text.done возвращается при выполнении потоковой передачи созданного моделью текста. Текст соответствует text части содержимого элемента сообщения помощника.
Это событие также возвращается при прерывании, неполном или отмене ответа.
Структура событий
{
"type": "response.text.done",
"response_id": "<response_id>",
"item_id": "<item_id>",
"output_index": 0,
"content_index": 0,
"text": "<text>"
}
Свойства
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип события должен быть response.text.done. |
| response_id | струна | Идентификатор ответа. |
| item_id | струна | Идентификатор элемента. |
| output_index | целое число | Индекс выходного элемента в ответе. |
| content_index | целое число | Индекс части содержимого в массиве содержимого элемента. |
| текст | струна | Окончательное текстовое содержимое. |
Components
Форматы звука
RealtimeAudioFormat
Базовый формат звука, используемый для входного звука.
Допустимые значения:
-
pcm16— 16-разрядный формат звука PCM -
g711_ulaw- Формат звука μ-права G.711 -
g711_alaw— Аудиоформат G.711 A-law
RealtimeOutputAudioFormat
Формат звука, используемый для вывода звука с определенными скоростями выборки.
Допустимые значения:
-
pcm16— 16-разрядный звуковой формат PCM по умолчанию (24 кГц) -
pcm16_8000hz— 16-разрядный аудиоформат PCM с частотой выборки 8 кГц -
pcm16_16000hz— 16-разрядный аудиоформат PCM с частотой выборки 16 кГц -
g711_ulaw- Аудиоформат G.711 μ (mu-law) в частоте выборки 8 кГц -
g711_alaw— Аудиоформат G.711 A-law с частотой выборки 8 кГц
RealtimeAudioInputTranscriptionSettings
Конфигурация входного транскрибирования звука.
| Поле | Тип | Description |
|---|---|---|
| model | струна | Модель транскрибирования. Поддерживается: whisper-1, , gpt-4o-transcribegpt-4o-mini-transcribegpt-4o-transcribe-diarizeazure-speech |
| language | струна | Необязательный код языка в BCP-47 (например, en-USили ISO-639-1 (например, en) или нескольких языках с автоматическим обнаружением (например, en,zh). |
| custom_speech | объект | Необязательная конфигурация для пользовательских моделей речи, допустимая только для azure-speech модели. |
| phrase_list | строка[] | Необязательный список подсказок фраз для распознавания предвзятости, допустимый только для azure-speech модели. |
| prompt | струна | Необязательный текст запроса для указания транскрибирования, допустимый только для whisper-1моделейgpt-4o-transcribegpt-4o-mini-transcribe, а также gpt-4o-transcribe-diarize для моделей. |
RealtimeInputAudioNoiseReductionSettings
Это может быть:
RealtimeOpenAINoiseReduction
Конфигурация уменьшения шума OpenAI с явным полем типа, доступной только для gpt-realtime моделей и gpt-realtime-mini моделей.
| Поле | Тип | Description |
|---|---|---|
| type | струна |
near_field или far_field |
RealtimeAzureDeepNoiseSuppression
Настройка для уменьшения шума входного звука.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure_deep_noise_suppression". |
RealtimeInputAudioEchoCancellationSettings
Конфигурация отмены эхо для обработки звука на стороне сервера.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "server_echo_cancellation". |
Конфигурация голосовой связи
RealtimeVoice
Объединение всех поддерживаемых конфигураций голосовой связи.
Это может быть:
- Объект RealtimeOpenAIVoice
- Объект RealtimeAzureVoice
RealtimeOpenAIVoice
Конфигурация голосовой связи OpenAI с явным полем типа.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "openai". |
| имя | струна | Имя голоса OpenAI: alloy, ashballadcoralechosageshimmer, , versemarincedar |
RealtimeAzureVoice
База конфигураций голосовой связи Azure. Это дискриминируемое объединение с различными типами:
RealtimeAzureCustomVoice
Настраиваемая конфигурация голосовой связи Azure (предпочтительна для пользовательских голосов).
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure-custom". |
| имя | струна | Имя голоса (не может быть пустым) |
| endpoint_id | струна | Идентификатор конечной точки (не может быть пустым) |
| Температура | число/номер | Необязательно. Температура между 0,0 и 1,0 |
| custom_lexicon_url | струна | Необязательно. URL-адрес пользовательской лексики |
| prefer_locales | строка[] | Необязательно. Предпочтительный языковой стандарт Предпочитать языковые стандарта изменят акценты языков. Если значение не задано, TTS будет использовать акцент по умолчанию для каждого языка. Например, когда TTS говорит на английском языке, он будет использовать американский английский акцент. И при разговоре на испанском языке он будет использовать мексиканский испанский акцент. Если задать prefer_locales ["en-GB", "es-ES"], английский акцент будет британским английским, а испанский акцент будет европейским испанским. И TTS также может говорить на других языках, таких как французский, китайский и т. д. |
| местность | струна | Необязательно. Спецификация языкового стандарта Принудительное применение языкового стандарта для выходных данных TTS. Если не задано, TTS всегда будет использовать заданный языковой стандарт для разговора. например, задать языковой en-USстандарт , TTS всегда будет использовать американский английский акцент, чтобы говорить текстовое содержимое, даже текстовое содержимое находится на другом языке. И TTS будет выводить молчание, если текстовое содержимое находится на китайском языке. |
| стиль | струна | Необязательно. Стиль голоса |
| смола | струна | Необязательно. Корректировка тона |
| скорость | струна | Необязательно. Корректировка скорости речи |
| volume | струна | Необязательно. Корректировка тома |
Пример:
{
"type": "azure-custom",
"name": "my-custom-voice",
"endpoint_id": "12345678-1234-1234-1234-123456789012",
"temperature": 0.7,
"style": "cheerful",
"locale": "en-US"
}
RealtimeAzureStandardVoice
Стандартная конфигурация голосовой связи Azure.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure-standard". |
| имя | струна | Имя голоса (не может быть пустым) |
| Температура | число/номер | Необязательно. Температура между 0,0 и 1,0 |
| custom_lexicon_url | струна | Необязательно. URL-адрес пользовательской лексики |
| prefer_locales | строка[] | Необязательно. Предпочтительный языковой стандарт |
| местность | струна | Необязательно. Спецификация языкового стандарта |
| стиль | струна | Необязательно. Стиль голоса |
| смола | струна | Необязательно. Корректировка тона |
| скорость | струна | Необязательно. Корректировка скорости речи |
| volume | струна | Необязательно. Корректировка тома |
RealtimeAzurePersonalVoice
Конфигурация личного голоса Azure.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure-personal". |
| имя | струна | Имя голоса (не может быть пустым) |
| Температура | число/номер | Необязательно. Температура между 0,0 и 1,0 |
| model | струна | Базовая нейронная модель: DragonLatestNeural, PhoenixLatestNeuralPhoenixV2Neural |
Обнаружение поворота
RealtimeTurnDetection
Конфигурация для обнаружения поворотов. Это дискриминированный союз, поддерживающий несколько типов VAD.
RealtimeServerVAD
Базовое обнаружение поворота на основе VAD.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "server_vad". |
| threshold | число/номер | Необязательно. Порог активации (0.0-1.0) |
| prefix_padding_ms | целое число | Необязательно. Заполнение звука перед началом работы с речью |
| silence_duration_ms | целое число | Необязательно. Длительность молчания для обнаружения конца речи |
| end_of_utterance_detection | RealtimeEOUDetection | Необязательно. Конфигурация обнаружения речевых фрагментов |
| создать_ответ | булевый | Необязательно. Включите или отключите, создается ли ответ. |
| ответ на прерывание | булевый | Необязательно. Включение или отключение прерывания баржи (по умолчанию: false) |
| auto_truncate | булевый | Необязательно. Автоматическое усечение при прерывании (по умолчанию: false) |
RealtimeOpenAISemanticVAD
Семантическая конфигурация VAD OpenAI, которая использует модель для определения завершения речи пользователя. Доступно только для gpt-realtime моделей и gpt-realtime-mini моделей.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "semantic_vad". |
| рвение | струна | Необязательно. Это способ управления тем, как модель стремится прервать пользователя, настроить максимальное время ожидания. В режиме транскрибирования, даже если модель не отвечает, она влияет на то, как звук блокируется. Допустимы следующие значения: - auto (по умолчанию) эквивалентно medium,- low позволит пользователю занять свое время, чтобы говорить,- high будет кусок звука как можно скорее.Если вы хотите, чтобы модель реагировала чаще в режиме беседы или возвращать события транскрибирования быстрее в режиме транскрибирования, можно задать значение охотности high.С другой стороны, если вы хотите разрешить пользователю говорить без прерывания в режиме беседы или если вы хотите, чтобы большие блоки расшифровки в режиме транскрибирования, можно задать желание low. |
| создать_ответ | булевый | Необязательно. Включите или отключите, создается ли ответ. |
| ответ на прерывание | булевый | Необязательно. Включение или отключение прерывания баржи (по умолчанию: false) |
RealtimeAzureSemanticVAD
Семантическая vaD Azure, которая определяет, когда пользователь начинает и говорит с помощью семантической модели речи, обеспечивая более надежное обнаружение в шумных средах.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure_semantic_vad". |
| threshold | число/номер | Необязательно. Порог активации |
| prefix_padding_ms | целое число | Необязательно. Заполнение звука перед речью |
| silence_duration_ms | целое число | Необязательно. Длительность молчания для окончания речи |
| end_of_utterance_detection | RealtimeEOUDetection | Необязательно. Конфигурация обнаружения EOU |
| speech_duration_ms | целое число | Необязательно. Минимальная длительность речи |
| remove_filler_words | булевый | Необязательно. Удаление слов заливки (по умолчанию: false) |
| Языки | строка[] | Необязательно. Поддерживает английский язык. Другие языки будут игнорироваться. |
| создать_ответ | булевый | Необязательно. Включите или отключите, создается ли ответ. |
| ответ на прерывание | булевый | Необязательно. Включение или отключение прерывания баржи (по умолчанию: false) |
| auto_truncate | булевый | Необязательно. Автоматическое усечение при прерывании (по умолчанию: false) |
RealtimeAzureSemanticVADMultilingual
Семантическое VAD Azure (вариант по умолчанию).
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "azure_semantic_vad_multilingual". |
| threshold | число/номер | Необязательно. Порог активации |
| prefix_padding_ms | целое число | Необязательно. Заполнение звука перед речью |
| silence_duration_ms | целое число | Необязательно. Длительность молчания для окончания речи |
| end_of_utterance_detection | RealtimeEOUDetection | Необязательно. Конфигурация обнаружения EOU |
| speech_duration_ms | целое число | Необязательно. Минимальная длительность речи |
| remove_filler_words | булевый | Необязательно. Удалите слова заполнители (по умолчанию: false). |
| Языки | строка[] | Необязательно. Поддерживает английский, испанский, французский, итальянский, немецкий (DE), японский, португальский, китайский, корейский, хинди. Другие языки будут игнорироваться. |
| создать_ответ | булевый | Необязательно. Включите или отключите, создается ли ответ. |
| ответ на прерывание | булевый | Необязательно. Включение или отключение прерывания баржи (по умолчанию: false) |
| auto_truncate | булевый | Необязательно. Автоматическое усечение при прерывании (по умолчанию: false) |
RealtimeEOUDetection
Конечное высказывание Azure (EOU) может указывать, когда конечный пользователь перестал говорить, позволяя естественным паузам. Обнаружение конца высказывания может значительно сократить преждевременные сигналы конца реплики, не добавляя заметной задержки.
| Поле | Тип | Description |
|---|---|---|
| model | струна | Может поддерживать semantic_detection_v1 английский или semantic_detection_v1_multilingual вспомогательный английский, испанский, французский, итальянский, немецкий (DE), японский, португальский, китайский, корейский, хинди |
| threshold_level | струна | Необязательно. Уровень порогового low значения обнаружения (medium, highdefault иmedium) по умолчанию равен параметру. При более низком параметре вероятность завершения предложения будет выше. |
| timeout_ms | число/номер | Необязательно. Максимальное время в миллисекундах, чтобы ожидать больше речи пользователя. По умолчанию — 1000 мс. |
Конфигурация аватара
RealtimeAvatarConfig
Настройка потоковой передачи аватара и поведения.
| Поле | Тип | Description |
|---|---|---|
| ice_servers | RealtimeIceServer[] | Необязательно. СЕРВЕРы ICE для WebRTC |
| характер | струна | Имя символа или идентификатор аватара |
| стиль | струна | Необязательно. Стиль аватара (эмоциональный тон, стиль речи) |
| Настроить | булевый | Настраивается ли аватар |
| video | RealtimeVideoParams | Необязательно. Конфигурация видео |
RealtimeIceServer
Конфигурация сервера ICE для согласования подключений WebRTC.
| Поле | Тип | Description |
|---|---|---|
| URL-адреса | строка[] | URL-адреса сервера ICE (конечные точки TURN или STUN) |
| username | струна | Необязательно. Имя пользователя для проверки подлинности |
| credential | струна | Необязательно. Учетные данные для проверки подлинности |
RealtimeVideoParams
Параметры потоковой передачи видео для аватара.
| Поле | Тип | Description |
|---|---|---|
| скорость битовой скорости | целое число | Необязательно. Скорость в битах в секунду (по умолчанию: 2000000) |
| кодек | струна | Необязательно. Видеокодек, в настоящее время только h264 (по умолчанию: h264) |
| урожай | RealtimeVideoCrop | Необязательно. Обрезка параметров |
| резолюция | RealtimeVideoResolution | Необязательно. Параметры разрешения |
RealtimeVideoCrop
Определение прямоугольника обрезки видео.
| Поле | Тип | Description |
|---|---|---|
| top_left | целое число[] | Верхний левый угол [x, y], неотрицательных целых чисел |
| bottom_right | целое число[] | Нижний правый угол [x, y], неотрицательных целых чисел |
RealtimeVideoResolution
Спецификация разрешения видео.
| Поле | Тип | Description |
|---|---|---|
| Ширина | целое число | Ширина в пикселях (должна быть > 0) |
| height | целое число | Высота в пикселях (должна быть > 0) |
Конфигурация анимации
RealtimeAnimation
Конфигурация выходных данных анимации, включая смешивания и виземы.
| Поле | Тип | Description |
|---|---|---|
| model_name | струна | Необязательно. Имя модели анимации (по умолчанию: "default") |
| выходные данные | RealtimeAnimationOutputType[] | Необязательно. Типы выходных данных (по умолчанию: ["blendshapes"]) |
RealtimeAnimationOutputType
Типы данных анимации для вывода.
Допустимые значения:
-
blendshapes— данные о смешиваниях лиц -
viseme_id— Данные идентификатора Viseme
Конфигурация сеанса
RealtimeRequestSession
Объект конфигурации сеанса, используемый в session.update событиях.
| Поле | Тип | Description |
|---|---|---|
| model | струна | Необязательно. Имя модели для использования |
| modalities | RealtimeModality[] | Необязательно. Поддерживаемые модальности для сеанса. Например, "модальности": ["text", "audio"] — это параметр по умолчанию, который включает как текстовые, так и звуковые модалы. Чтобы включить только текст, задайте "модальности": ["text"]. Чтобы включить выходные данные аватара, задайте "модальности": ["text", "audio", "аватар"]. Вы не можете включить только звук. |
| мультипликация | RealtimeAnimation | Необязательно. Конфигурация анимации |
| голос | RealtimeVoice | Необязательно. Конфигурация голосовой связи |
| instructions | струна | Необязательно. Системные инструкции для модели. Инструкции могут руководствоваться выходным звуком, если используются голоса OpenAI, но могут не применяться к голосам Azure. |
| input_audio_sampling_rate | целое число | Необязательно. Частота выборки входных аудио в Гц (по умолчанию: 24000 для pcm16, 8000 для g711_ulaw и g711_alaw) |
| input_audio_format | RealtimeAudioFormat | Необязательно. Формат входного звука (по умолчанию: pcm16) |
| output_audio_format | RealtimeOutputAudioFormat | Необязательно. Формат выходного звука (по умолчанию: pcm16) |
| input_audio_noise_reduction | RealtimeInputAudioNoiseReductionSettings | Настройка для уменьшения шума входного звука. Для отключения этого параметра может быть задано значение NULL. Фильтры для уменьшения шума обрабатывают звук, добавленный во входной звуковой буфер перед отправкой в VAD и модель. Фильтрация звука может повысить точность обнаружения VAD и поворота (уменьшая ложные срабатывания) и производительность модели, повышая восприятие входного звука. Это свойство допускает значение NULL. |
| input_audio_echo_cancellation | RealtimeInputAudioEchoCancellationSettings | Настройка для отмены эхо-звука ввода. Для отключения этого параметра может быть задано значение NULL. Эта отслужебная отмена эхо-сигнала может помочь улучшить качество входного звука, уменьшая влияние эхо-и реверберации. Это свойство допускает значение NULL. |
| input_audio_transcription | RealtimeAudioInputTranscriptionSettings | Конфигурация входного транскрибирования звука. Конфигурация имеет значение NULL (off) по умолчанию. Транскрибирование входного звука не является собственным для модели, так как модель использует звук напрямую. Транскрибирование выполняется асинхронно через /audio/transcriptions конечную точку и должно рассматриваться как руководство по входным звуковым содержимым, а не точно то, что слышала модель. Для получения дополнительных рекомендаций для службы транскрибирования клиент может при необходимости задать язык и запрашивать транскрибирование.Это свойство допускает значение NULL. |
| turn_detection | RealtimeTurnDetection | Параметры обнаружения поворота для сеанса. Для отключения этого параметра может быть задано значение NULL. |
| инструменты | массив RealtimeTool | Средства, доступные модели для сеанса. |
| выбор инструмента | RealtimeToolChoice | Выбор средства для сеанса. Допустимые значения: auto, noneи required. В противном случае можно указать имя используемой функции. |
| Температура | число/номер | Температура выборки для модели. Допустимые значения температуры ограничены [0,6, 1.2]. По умолчанию используется значение 0.8. |
| max_response_output_tokens | целое число или inf | Максимальное количество выходных маркеров на ответ помощника, включающее вызовы инструментов. Укажите целое число от 1 до 4096, чтобы ограничить выходные маркеры. В противном случае задайте значение inf, чтобы разрешить максимальное количество маркеров. Например, чтобы ограничить выходные маркеры до 1000, задайте "max_response_output_tokens": 1000. Чтобы разрешить максимальное количество маркеров, задайте "max_response_output_tokens": "inf".По умолчанию — "inf". |
| аватар | RealtimeAvatarConfig | Необязательно. Конфигурация аватара |
| output_audio_timestamp_types | RealtimeAudioTimestampType[] | Необязательно. Типы меток времени для выходного звука |
RealtimeModality
Поддерживаемые модальности сеанса.
Допустимые значения:
-
text— входные и выходные данные текста -
audio— входные и выходные данные звука -
animation— выходные данные анимации -
avatar— выходные данные видео аватара
RealtimeAudioTimestampType
Типы меток времени вывода, поддерживаемые в содержимом звукового ответа.
Допустимые значения:
-
word— метки времени на слово в выходном звуке
Настройка средства
Мы поддерживаем два типа инструментов: вызов функций и инструменты MCP, которые позволяют подключаться к серверу mcp.
RealtimeTool
Определение средства для вызова функции.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "function". |
| имя | струна | Имя функции |
| описание | струна | Рекомендации по описанию функций и использованию |
| parameters | объект | Параметры функции в виде объекта схемы JSON |
RealtimeToolChoice
Стратегия выбора инструментов.
Это может быть:
-
"auto"— Пусть модель выбирается -
"none"— Не используйте средства -
"required"— должен использовать средство -
{ "type": "function", "name": "function_name" }— Использование конкретной функции
MCPTool
Настройка средства MCP.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "mcp". |
| метка сервера | струна | Обязательное. Метка сервера MCP. |
| URL сервера | струна | Обязательное. URL-адрес сервера MCP. |
| разрешённые_инструменты | строка[] | Необязательно. Список разрешенных имен инструментов. Если это не указано, все средства разрешены. |
| headers | объект | Необязательно. Дополнительные заголовки для включения в запросы MCP. |
| авторизация | струна | Необязательно. Маркер авторизации для запросов MCP. |
| требовать_одобрение | строка или словарь | Необязательно. Если задано значение строки, значение должно быть never или always. Если задано значение словаря, он должен быть в формате {"never": ["<tool_name_1>", "<tool_name_2>"], "always": ["<tool_name_3>"]}. Значение по умолчанию: always. Если задано значение always, выполнение средства требует утверждения, mcp_approval_request будет отправлено клиенту при завершении аргумента mcp и будет выполняться только при получении mcp_approval_response.approve=true Если задано значение never, средство будет выполняться автоматически без утверждения. |
RealtimeConversationResponseItem
Это тип объединения, который может быть одним из следующих типов:
RealtimeConversationUserMessageItem
Элемент сообщения пользователя.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "message". |
| объект | струна | Должен содержать значение "conversation.item". |
| роль | струна | Должен содержать значение "user". |
| содержимое | RealtimeInputTextContentPart | Содержимое сообщения. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeConversationAssistantMessageItem
Элемент сообщения помощника.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "message". |
| объект | струна | Должен содержать значение "conversation.item". |
| роль | струна | Должен содержать значение "assistant". |
| содержимое | RealtimeOutputTextContentPart[] или RealtimeOutputAudioContentPart[] | Содержимое сообщения. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeConversationSystemMessageItem
Элемент системного сообщения.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "message". |
| объект | струна | Должен содержать значение "conversation.item". |
| роль | струна | Должен содержать значение "system". |
| содержимое | RealtimeInputTextContentPart[] | Содержимое сообщения. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeConversationFunctionCallItem
Элемент запроса вызова функции.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "function_call". |
| объект | струна | Должен содержать значение "conversation.item". |
| имя | струна | Имя вызываемой функции. |
| arguments | струна | Аргументы для вызова функции в виде строки JSON. |
| call_id | струна | Уникальный идентификатор вызова функции. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeConversationFunctionCallOutputItem
Элемент ответа вызова функции.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "function_call_output". |
| объект | струна | Должен содержать значение "conversation.item". |
| имя | струна | Имя вызываемой функции. |
| output | струна | Выходные данные вызова функции. |
| call_id | струна | Уникальный идентификатор вызова функции. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeConversationMCPListToolsItem
Элемент ответа средств списка MCP.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "mcp_list_tools". |
| метка сервера | струна | Метка сервера MCP. |
RealtimeConversationMCPCallItem
Элемент ответа на вызов MCP.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "mcp_call". |
| метка сервера | струна | Метка сервера MCP. |
| имя | струна | Имя вызываемого средства. |
| approval_request_id | струна | Идентификатор запроса утверждения для вызова MCP. |
| arguments | струна | Аргументы для вызова MCP. |
| output | струна | Выходные данные вызова MCP. |
| ошибка | объект | Сведения об ошибке, если сбой вызова MCP. |
RealtimeConversationMCPApprovalRequestItem
Элемент запроса на утверждение MCP.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Уникальный идентификатор элемента. |
| type | струна | Должен содержать значение "mcp_approval_request". |
| метка сервера | струна | Метка сервера MCP. |
| имя | струна | Имя вызываемого средства. |
| arguments | струна | Аргументы для вызова MCP. |
RealtimeItemStatus
Состояние элементов беседы.
Допустимые значения:
-
in_progress- В настоящее время обрабатывается -
completed— успешно завершено -
incomplete— неполный (прерывание или сбой)
RealtimeContentPart
Часть содержимого в сообщении.
RealtimeInputTextContentPart
Часть текстового содержимого.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "input_text". |
| текст | струна | Текстовое содержимое |
RealtimeOutputTextContentPart
Часть текстового содержимого.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "text". |
| текст | струна | Текстовое содержимое |
RealtimeInputAudioContentPart
Часть звукового содержимого.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "input_audio". |
| audio | струна | Необязательно. Звуковые данные в кодировке Base64 |
| transcript | струна | Необязательно. Транскрибирование звука |
RealtimeOutputAudioContentPart
Часть звукового содержимого.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Должен содержать значение "audio". |
| audio | струна | Звуковые данные в кодировке Base64 |
| transcript | струна | Необязательно. Транскрибирование звука |
Объекты ответа
RealtimeResponse
Объект ответа, представляющий ответ на вывод модели.
| Поле | Тип | Description |
|---|---|---|
| id | струна | Необязательно. Идентификатор ответа |
| объект | струна | Необязательно. Всегда "realtime.response" |
| статус | RealtimeResponseStatus | Необязательно. Состояние ответа |
| подробности_статуса | RealtimeResponseStatusDetails | Необязательно. Сведения о статусе |
| output | RealtimeConversationResponseItem[] | Необязательно. Выходные элементы |
| использование | RealtimeUsage | Необязательно. Статистика использования маркеров |
| conversation_id | струна | Необязательно. Связанный идентификатор беседы |
| голос | RealtimeVoice | Необязательно. Голос, используемый для ответа |
| modalities | строка[] | Необязательно. Используемые модальности |
| output_audio_format | RealtimeOutputAudioFormat | Необязательно. Используемый формат звука |
| Температура | число/номер | Необязательно. Используется температура |
| max_response_output_tokens | целое число или inf | Необязательно. Максимальное количество используемых маркеров |
RealtimeResponseStatus
Значения состояния ответа.
Допустимые значения:
-
in_progress— создается ответ -
completed— ответ успешно завершен -
cancelled- Ответ был отменен -
incomplete— неполный ответ (прерванный) -
failed— сбой ответа с ошибкой
RealtimeUsage
Статистика использования маркеров.
| Поле | Тип | Description |
|---|---|---|
| общее количество токенов | целое число | Всего используемых маркеров |
| input_tokens | целое число | Используемые маркеры ввода |
| output_tokens | целое число | Выходные маркеры, созданные |
| input_token_details | TokenDetails | Разбивка входных маркеров |
| output_token_details | TokenDetails | Разбивка выходных маркеров |
TokenDetails
Подробные сведения об использовании маркеров.
| Поле | Тип | Description |
|---|---|---|
| cached_tokens | целое число | Необязательно. Кэшированные маркеры, используемые |
| text_tokens | целое число | Необязательно. Используемые текстовые маркеры |
| audio_tokens | целое число | Необязательно. Используемые маркеры звука |
Обработка ошибок
RealtimeErrorDetails
Объект сведений об ошибках.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип ошибки (например, "invalid_request_error", "server_error") |
| код | струна | Необязательно. Конкретный код ошибки |
| сообщение | струна | Описание ошибки, доступной для чтения человеком |
| параметр | струна | Необязательно. Параметр, связанный с ошибкой |
| event_id | струна | Необязательно. Идентификатор события клиента, вызвавшего ошибку |
RealtimeConversationRequestItem
Объект используется RealtimeConversationRequestItem для создания нового элемента в беседе с помощью события conversation.item.create .
Это тип объединения, который может быть одним из следующих типов:
RealtimeSystemMessageItem
Элемент системного сообщения.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: message |
| роль | струна | Роль сообщения. Допустимые значения: system |
| содержимое | массив RealtimeInputTextContentPart | Содержимое сообщения. |
| id | струна | Уникальный идентификатор элемента. Клиент может указать идентификатор для управления контекстом на стороне сервера. Если клиент не предоставляет идентификатор, сервер создает его. |
RealtimeUserMessageItem
Элемент сообщения пользователя.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: message |
| роль | струна | Роль сообщения. Допустимые значения: user |
| содержимое | массив RealtimeInputTextContentPart или RealtimeInputAudioContentPart | Содержимое сообщения. |
| id | струна | Уникальный идентификатор элемента. Клиент может указать идентификатор для управления контекстом на стороне сервера. Если клиент не предоставляет идентификатор, сервер создает его. |
RealtimeAssistantMessageItem
Элемент сообщения помощника.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: message |
| роль | струна | Роль сообщения. Допустимые значения: assistant |
| содержимое | массив RealtimeOutputTextContentPart | Содержимое сообщения. |
RealtimeFunctionCallItem
Элемент вызова функции.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: function_call |
| имя | струна | Имя вызываемой функции. |
| arguments | струна | Аргументы вызова функции в виде строки JSON. |
| call_id | струна | Идентификатор элемента вызова функции. |
| id | струна | Уникальный идентификатор элемента. Клиент может указать идентификатор для управления контекстом на стороне сервера. Если клиент не предоставляет идентификатор, сервер создает его. |
RealtimeFunctionCallOutputItem
Выходной элемент вызова функции.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: function_call_output |
| call_id | струна | Идентификатор элемента вызова функции. |
| output | струна | Выходные данные вызова функции— это строка свободной формы с результатом функции, также может быть пустой. |
| id | струна | Уникальный идентификатор элемента. Если клиент не предоставляет идентификатор, сервер создает его. |
RealtimeMCPApprovalResponseItem
Элемент ответа на утверждение MCP.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: mcp_approval_response |
| одобрять | булевый | Утверждается ли запрос MCP. |
| approval_request_id | струна | Идентификатор запроса на утверждение MCP. |
RealtimeFunctionTool
Определение средства функции, используемого конечной точкой реального времени.
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип средства. Допустимые значения: function |
| имя | струна | Имя функции. |
| описание | струна | Описание функции, включая рекомендации по использованию. Например, "Используйте эту функцию для получения текущего времени". |
| parameters | объект | Параметры функции в виде объекта JSON. |
RealtimeItemStatus
Допустимые значения:
in_progresscompletedincomplete
RealtimeResponseAudioContentPart
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип части содержимого. Допустимые значения: audio |
| transcript | струна | Расшифровка звука. Это свойство допускает значение NULL. |
RealtimeResponseFunctionCallItem
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: function_call |
| имя | струна | Имя элемента вызова функции. |
| call_id | струна | Идентификатор элемента вызова функции. |
| arguments | струна | Аргументы элемента вызова функции. |
| статус | RealtimeItemStatus | Состояние элемента. |
RealtimeResponseFunctionCallOutputItem
| Поле | Тип | Description |
|---|---|---|
| type | струна | Тип элемента. Допустимые значения: function_call_output |
| call_id | струна | Идентификатор элемента вызова функции. |
| output | струна | Выходные данные элемента вызова функции. |
RealtimeResponseOptions
| Поле | Тип | Description |
|---|---|---|
| modalities | массив | Модальности, поддерживаемые сеансом. Допустимые значения: text, audioНапример, "modalities": ["text", "audio"] это параметр по умолчанию, который включает как текстовые, так и звуковые модалы. Чтобы включить только текст, задайте ."modalities": ["text"] Вы не можете включить только звук. |
| instructions | струна | Инструкции (системное сообщение) для руководства ответами модели. |
| голос | RealtimeVoice | Голос, используемый для ответа модели для сеанса. После использования голоса в сеансе для звукового ответа модели его нельзя изменить. |
| инструменты | массив RealtimeTool | Средства, доступные модели для сеанса. |
| выбор инструмента | RealtimeToolChoice | Выбор средства для сеанса. |
| Температура | число/номер | Температура выборки для модели. Допустимые значения температуры ограничены [0,6, 1.2]. По умолчанию используется значение 0.8. |
| max_response_output_tokens | целое число или inf | Максимальное количество выходных маркеров на ответ помощника, включающее вызовы инструментов. Укажите целое число от 1 до 4096, чтобы ограничить выходные маркеры. В противном случае задайте значение inf, чтобы разрешить максимальное количество маркеров. Например, чтобы ограничить выходные маркеры до 1000, задайте "max_response_output_tokens": 1000. Чтобы разрешить максимальное количество маркеров, задайте "max_response_output_tokens": "inf".По умолчанию — "inf". |
| разговор | струна | Определяет, к какой беседе добавляется ответ. Поддерживаемые значения: auto и none.Значение auto (или не задано это свойство) гарантирует, что содержимое ответа добавляется в беседу по умолчанию сеанса.Задайте этому свойству значение, чтобы none создать ответ вне диапазона, в котором элементы не будут добавлены в беседу по умолчанию. По умолчанию — "auto". |
| metadata | карта | Настройка до 16 пар "ключ-значение", которые могут быть присоединены к объекту. Это может быть полезно для хранения дополнительных сведений об объекте в структурированном формате. Ключи могут содержать не более 64 символов, а значения могут содержать не более 512 символов. Например: metadata: { topic: "classification" } |
RealtimeResponseSession
Объект RealtimeResponseSession представляет сеанс в API Реального времени. Он используется в некоторых событиях сервера, таких как:
| Поле | Тип | Description |
|---|---|---|
| объект | струна | Объект сеанса. Допустимые значения: realtime.session |
| id | струна | Уникальный идентификатор сеанса. |
| model | струна | Модель, используемая для сеанса. |
| modalities | массив | Модальности, поддерживаемые сеансом. Допустимые значения: text, audioНапример, "modalities": ["text", "audio"] это параметр по умолчанию, который включает как текстовые, так и звуковые модалы. Чтобы включить только текст, задайте ."modalities": ["text"] Вы не можете включить только звук. |
| instructions | струна | Инструкции (системное сообщение) для руководства по текстовым и звуковым ответам модели. Ниже приведены некоторые примеры инструкций по использованию содержимого и формата текстовых и звуковых ответов: "instructions": "be succinct""instructions": "act friendly""instructions": "here are examples of good responses"Ниже приведены некоторые примеры инструкций по поведению звука: "instructions": "talk quickly""instructions": "inject emotion into your voice""instructions": "laugh frequently"Хотя модель может не всегда следовать этим инструкциям, они предоставляют рекомендации по требуемому поведению. |
| голос | RealtimeVoice | Голос, используемый для ответа модели для сеанса. После использования голоса в сеансе для звукового ответа модели его нельзя изменить. |
| input_audio_sampling_rate | целое число | Частота выборки для входного звука. |
| input_audio_format | RealtimeAudioFormat | Формат входного звука. |
| output_audio_format | RealtimeAudioFormat | Формат выходного звука. |
| input_audio_transcription | RealtimeAudioInputTranscriptionSettings | Параметры транскрибирования входных звука. Это свойство допускает значение NULL. |
| turn_detection | RealtimeTurnDetection | Параметры обнаружения поворота для сеанса. Это свойство допускает значение NULL. |
| инструменты | массив RealtimeTool | Средства, доступные модели для сеанса. |
| выбор инструмента | RealtimeToolChoice | Выбор средства для сеанса. |
| Температура | число/номер | Температура выборки для модели. Допустимые значения температуры ограничены [0,6, 1.2]. По умолчанию используется значение 0.8. |
| max_response_output_tokens | целое число или inf | Максимальное количество выходных маркеров на ответ помощника, включающее вызовы инструментов. Укажите целое число от 1 до 4096, чтобы ограничить выходные маркеры. В противном случае задайте значение inf, чтобы разрешить максимальное количество маркеров. Например, чтобы ограничить выходные маркеры до 1000, задайте "max_response_output_tokens": 1000. Чтобы разрешить максимальное количество маркеров, задайте "max_response_output_tokens": "inf". |
RealtimeResponseStatusDetails
| Поле | Тип | Description |
|---|---|---|
| type | RealtimeResponseStatus | Состояние ответа. |
RealtimeRateLimitsItem
| Поле | Тип | Description |
|---|---|---|
| имя | струна | Имя свойства ограничения скорости, о которое этот элемент содержит сведения. |
| limit | целое число | Максимально настроенное ограничение для этого свойства ограничения скорости. |
| remaining | целое число | Оставшаяся квота, доступная в соответствии с настроенным ограничением для этого свойства ограничения скорости. |
| reset_seconds | число/номер | Оставшееся время (в секундах), пока это свойство ограничения скорости не будет сброшено. |
Связанные ресурсы
- Попробуйте быстрое начало работы с Voice live
- Попробуйте Краткое руководство по голосовым живым агентам
- Дополнительные сведения об использовании API голосовой трансляции