Eventos de servidor para la API Qwen-Omni-Realtime, incluidos eventos de llamada de herramientas (function calling).
error
Error del servidor.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es error. errorobject Detalles del error. Propiedades typestring El tipo de error. codestring El código de error. messagestring El mensaje de error. paramstring El parámetro asociado con el error, como session.modalities. | {
"event_id": "event_RoUu4T8yExPMI37GKwaOC",
"type": "error",
"error": {
"type": "invalid_request_error",
"code": "invalid_value",
"message": "Invalid modalities: ['audio']. Supported combinations are: ['text'] and ['audio', 'text'].",
"param": "session.modalities"
}
}
|
session.created
Se devuelve cuando un cliente se conecta. Contiene la configuración predeterminada de la sesión.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es session.created. sessionobject La configuración de la sesión. Propiedades objectstring Este valor siempre es realtime.session. modelstring El modelo utilizado. modalitiesarray Las modalidades de salida para el modelo. voicestring La voz para el audio generado por el modelo. input_audio_formatstring Formato de audio de entrada. Solo se admite pcm (frecuencia de muestreo de 16 kHz). output_audio_formatstring Formato de audio de salida. Solo se admite pcm (frecuencia de muestreo de 24 kHz). input_audio_transcriptionobject La configuración de transcripción. Propiedades modelstring Modelo de transcripción. Siempre qwen3-asr-flash-realtime. No configurable. turn_detectionobject La configuración de detección de actividad de voz (VAD). Propiedades typestring El tipo de VAD. Los valores válidos son server_vad (predeterminado) o semantic_vad. Consulte Eventos del cliente. thresholdfloat El umbral de detección de VAD. silence_duration_msinteger Duración del silencio (ms) que activa la detección de fin de habla. idle_timeout_msinteger El tiempo de espera de inactividad en milisegundos. Se devuelve solo en el modo server_vad con los modelos qwen3.5-omni-plus-realtime o qwen3.5-omni-flash-realtime. enable_searchboolean Si se debe habilitar la búsqueda web. Compatible con los modelos Qwen3.8-Omni-Flash-Realtime y Qwen3.5-Omni-Realtime. search_optionsobject Las opciones para la búsqueda web. temperaturefloat El parámetro de temperatura para el modelo. | El siguiente ejemplo es la sesión predeterminada devuelta por qwen3.8-omni-flash-realtime en la región de Beijing. {
"event_id": "event_QQubXbhHMyXmKaSuE6PQ8",
"type": "session.created",
"session": {
"input_audio_format": "pcm",
"input_audio_transcription": {
"model": "qwen3-asr-flash-realtime"
},
"id": "sess_MjEctgJ4ziXPEioCzSSvK",
"object": "realtime.session",
"modalities": [
"text",
"audio"
],
"turn_detection": {
"type": "server_vad",
"silence_duration_ms": 800,
"interrupt_response": true,
"create_response": true,
"threshold": 0.5,
"prefix_padding_ms": 300
},
"model": "qwen3.8-omni-flash-realtime",
"voice": "Tina",
"output_audio_format": "pcm"
}
}
|
session.updated
Se devuelve después de una solicitud session.update exitosa. En caso de fallo, se devuelve un evento error en su lugar.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es session.updated. sessionobject La configuración de la sesión. Propiedades temperaturefloat El parámetro de temperatura para el modelo. modalitiesarray Las modalidades de salida para el modelo. voicestring La voz para el audio generado por el modelo. instructionsstring El objetivo y rol del modelo. input_audio_formatstring Formato de audio de entrada. Solo se admite pcm (frecuencia de muestreo de 16 kHz). output_audio_formatstring Formato de audio de salida. Solo se admite pcm (frecuencia de muestreo de 24 kHz). input_audio_transcriptionobject La configuración de transcripción. Propiedades modelstring Modelo de transcripción. Siempre qwen3-asr-flash-realtime. No configurable. turn_detectionobject La configuración de detección de actividad de voz (VAD). Propiedades typestring El tipo de VAD. Los valores válidos son server_vad (predeterminado) o semantic_vad. Consulte Eventos del cliente. thresholdfloat El umbral de detección de VAD. silence_duration_msinteger Duración del silencio (ms) que activa la detección de fin de habla. idle_timeout_msinteger El tiempo de espera de inactividad en milisegundos. Se devuelve solo en el modo server_vad con los modelos qwen3.5-omni-plus-realtime o qwen3.5-omni-flash-realtime. enable_searchboolean (opcional) Si se debe habilitar la búsqueda web. Compatible con los modelos Qwen3.8-Omni-Flash-Realtime y Qwen3.5-Omni-Realtime. search_optionsobject (opcional) Las opciones de búsqueda web. toolsarray (opcional) Definiciones de herramientas. Las propiedades a continuación describen herramientas de Function Calling con type="function". Consulte configuración de herramientas del cliente para los campos MCP de Qwen3.8-Omni-Flash-Realtime; los endpoints y credenciales MCP no se reflejan en session.updated. Propiedades typestring (obligatorio) Este valor siempre es function. function.namestring (obligatorio) El nombre de la función, como get_current_weather o get_current_time. function.descriptionstring (opcional) Descripción del propósito de la función. El modelo usa esto para decidir si llamar a la función. function.parametersobject (opcional) Esquema de parámetros de entrada. El modelo usa esto para extraer parámetros. Omítalo si la función no toma parámetros. Propiedades typestring (obligatorio) Este valor siempre es object. propertiesobject (opcional) Cada clave es un nombre de parámetro asignado a un objeto con type y description. requiredarray (opcional) Especifica qué parámetros de entrada son obligatorios. top_pfloat El umbral de probabilidad para el muestreo de núcleo. top_kinteger Tamaño del conjunto de candidatos para el muestreo durante la generación. max_tokensinteger Número máximo de tokens que el modelo puede devolver para esta solicitud. repetition_penaltyfloat Controla la repetición en secuencias consecutivas durante la generación. presence_penaltyfloat Controla la repetición en el contenido generado. seedinteger El grado de consistencia en la salida del modelo por solicitud. | El siguiente ejemplo usa qwen3.8-omni-flash-realtime en la región de Beijing, con salida solo de texto y max_tokens=32. {
"event_id": "event_TSBGI9Yj5ecCKjiGO34VB",
"type": "session.updated",
"session": {
"id": "sess_MjEctgJ4ziXPEioCzSSvK",
"object": "realtime.session",
"model": "qwen3.8-omni-flash-realtime",
"modalities": [
"text"
],
"instructions": "请只回复 OK。",
"voice": "Tina",
"input_audio_format": "pcm",
"output_audio_format": "pcm",
"input_audio_transcription": {
"model": "qwen3-asr-flash-realtime"
},
"max_tokens": 32
}
}
|
En modo VAD, se devuelve cuando el servidor detecta el inicio del habla en el búfer de audio.
Puede activarse cada vez que se agrega audio al búfer antes de que se detecte el habla.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es input_audio_buffer.speech_started. audio_start_msinteger Tiempo (ms) desde que comienza la escritura en el búfer de audio hasta que se detecta el habla por primera vez. item_idstring ID del elemento de mensaje de usuario creado cuando se detecta el fin del habla.
Los elementos de mensaje de usuario agregan la entrada del usuario al historial de conversación para la inferencia del modelo.
| {
"event_id": "event_Pvp8nEhsQuGCQbFJ9x58n",
"type": "input_audio_buffer.speech_started",
"audio_start_ms": 3647,
"item_id": "item_YbAiGvK2H7YaS34o4R6Ba"
}
|
En modo VAD, se devuelve cuando el servidor detecta el fin del habla en el búfer de audio.
También devuelve un evento conversation.item.created con el elemento de mensaje de usuario correspondiente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es input_audio_buffer.speech_stopped. audio_end_msinteger Tiempo (ms) desde el inicio de la sesión hasta que se detecta el fin del habla. item_idstring El ID del elemento de mensaje del usuario que se creará. | {
"event_id": "event_UhQiqNVRsgUiq4KUS5Xb5",
"type": "input_audio_buffer.speech_stopped",
"audio_end_ms": 4453,
"item_id": "item_YbAiGvK2H7YaS34o4R6Ba"
}
|
Se devuelve cuando se confirma el búfer de audio de entrada.
- En modo VAD, el servidor confirma automáticamente el búfer cuando detecta el fin del habla.
- En modo Manual, se devuelve después de que el cliente envía un evento
input_audio_buffer.commit.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es input_audio_buffer.committed. item_idstring El ID del elemento de mensaje del usuario que se creará. | {
"event_id": "event_Iy6sUzL1nmdFgshFYxJEz",
"type": "input_audio_buffer.committed",
"item_id": "item_YbAiGvK2H7YaS34o4R6Ba"
}
|
Se devuelve después de que el cliente envía un evento input_audio_buffer.clear.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es input_audio_buffer.cleared. | {
"event_id": "event_RoUu4T8yExPMI37GKwaOC",
"type": "input_audio_buffer.cleared"
}
|
conversation.item.created
Devuelto cuando se crea un elemento de conversación.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es conversation.item.created. response_idstring (condicionalmente obligatorio) Se devuelve solo cuando item.type es mcp_approval_request; identifica la Respuesta principal que generó la llamada MCP. item_idstring (condicionalmente obligatorio) Se devuelve solo cuando item.type es mcp_approval_request; el ID del elemento de aprobación, igual a item.id. previous_item_idstring (condicionalmente obligatorio) Se devuelve solo cuando item.type es mcp_approval_request; identifica el elemento mcp_call bajo revisión. itemobject El elemento de conversación a agregar. Propiedades idstring El ID único del elemento de conversación. objectstring Para elementos message y function_call, este campo es realtime.item. Para elementos MCP, tiene el mismo valor cuando se devuelve. statusstring Cuando se devuelve, este campo indica el estado del elemento de conversación. Un elemento mcp_call inicial lo requiere con el valor in_progress. rolestring Presente solo en elementos de mensaje; identifica el rol del mensaje. contentarray of objects El contenido del mensaje, devuelto cuando el tipo es message. Los siguientes campos describen el elemento de matriz en este ejemplo. Elemento de matriz typestring El tipo de parte de contenido; input_audio en este ejemplo. typestring El tipo de elemento de conversación incluye message y function_call. Qwen3.8-Omni-Flash-Realtime también devuelve mcp_list_tools, mcp_call y mcp_approval_request; consulte Ejemplos de elementos MCP. namestring El nombre de la función que se llama cuando el tipo es function_call. call_idstring Cuando type es function_call, este es el ID único de la invocación de la función. argumentsstring Cuando type es function_call, este parámetro contiene los argumentos para la invocación de la función como una cadena JSON. type=mcp_call (elemento inicial) objectstring (obligatorio) Debe ser realtime.item. statusstring (obligatorio) Inicialmente in_progress. server_labelstring (obligatorio) Identifica el servidor MCP que ejecuta la herramienta. namestring (obligatorio) Nombre original de la herramienta. call_idstring (obligatorio) ID único de esta llamada. argumentsstring (obligatorio) Generalmente vacío al principio; use eventos posteriores y el elemento final para obtener los argumentos completos. type=mcp_approval_request Copie el item.id de este elemento de aprobación sin cambios en approval_request_id al responder. server_labelstring (obligatorio) Identifica el servidor MCP para la herramienta pendiente. namestring (obligatorio) Nombre original de la herramienta pendiente. argumentsstring (obligatorio) Cadena JSON completa de argumentos en espera de aprobación. call_idstring (obligatorio) ID de la llamada en espera de aprobación. | Ejemplo: {
"event_id": "event_JEfkrr9gO3Ny7Xcv9bGVd",
"type": "conversation.item.created",
"item": {
"id": "item_YbAiGvK2H7YaS34o4R6Ba",
"object": "realtime.item",
"type": "message",
"status": "in_progress",
"role": "assistant",
"content": [
{
"type": "input_audio"
}
]
}
}
// Tool calling scenario
{
"event_id": "event_S1hkaIQgcuQD8OEdOpGHQ",
"type": "conversation.item.created",
"item": {
"id": "item_FEG9qJGNkPcdf4et3p7BV",
"object": "realtime.item",
"type": "function_call",
"status": "in_progress",
"call_id": "call_bc0a7fb7235840f69ecfe4",
"name": "get_current_weather",
"arguments": ""
}
}
|
Se envía frecuentemente mientras el usuario habla cuando la transcripción de audio de entrada está habilitada. Proporciona resultados de transcripción intermedios en tiempo real. Concatene text + stash para obtener la vista previa de oración más completa en cualquier momento.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es conversation.item.input_audio_transcription.delta. item_idstring El ID del elemento de conversación asociado. content_indexinteger El índice de la parte de contenido que contiene el audio. textstring Prefijo de texto confirmado: la parte que el modelo ha finalizado y no cambiará. stashstring Sufijo de texto preliminar: un borrador temporal que sigue a la parte confirmada, sujeto a revisión. languagestring El idioma detectado del audio reconocido. emotionstring La emoción detectada del audio reconocido. Valores válidos: neutral, happy, sad, angry, surprised, disgusted, fearful. | {
"event_id": "event_C7jzoeSFuiwOZS6tR14yx",
"type": "conversation.item.input_audio_transcription.delta",
"item_id": "item_ThVYhLHOdeXb4bBSvzSFF",
"content_index": 0,
"text": "",
"stash": "How is the weather today?",
"language": "en",
"emotion": "neutral",
"obfuscation": "ABEXGYmxdmc97u"
}
Para obtener la vista previa de oración más completa en cualquier momento, concatene estos dos campos: vista previa en tiempo real = text + stash. Haga clic para ver el ejemplo Suponga que el usuario dice: "El clima está agradable hoy, soleado y cálido". Lo siguiente muestra el flujo de eventos que podría recibir y cómo interpretarlos: Hora | Progreso del habla del usuario | Respuesta de API (texto y stash) | Visualización de la interfaz de usuario del cliente (texto + stash) |
|---|
T1 | "El clima..." | text: "" stash: "El clima" | El clima | T2 | "...es agradable..." | text: "" stash: "El clima es agradable" | El clima es agradable | T3 | "...hoy," | text: "El clima" stash: " es agradable hoy," | The weather is nice today, ("El clima" ha sido confirmado y movido al texto) | T4 | (pausa breve) | text: "El clima es agradable hoy, " stash: "" | The weather is nice today, (primera cláusula totalmente confirmada) | T5 | "soleado..." | text: "El clima es agradable hoy, " stash: "soleado" | El clima es agradable hoy, soleado | T6 | "...y cálido." | text: "El clima es agradable hoy, " stash: "soleado y cálido." | El clima es agradable hoy, soleado y cálido. | T7 | (deja de hablar) | - | Use la transcripción de conversation.item.input_audio_transcription.completed como resultado final. |
|
Indica que el audio del usuario ha sido transcrito por el modelo de reconocimiento de voz integrado (qwen3-asr-flash-realtime). No es configurable.
El texto transcrito del modelo de reconocimiento de voz puede diferir de la interpretación generada por el modelo Qwen-Omni-Realtime. La transcripción es solo para referencia.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es conversation.item.input_audio_transcription.completed. item_idstring El ID del elemento de mensaje del usuario. content_indexinteger Este valor siempre es 0. transcriptstring El texto transcrito. | {
"event_id": "event_FrrZcxiDfTB9LD9p4pVng",
"type": "conversation.item.input_audio_transcription.completed",
"item_id": "item_YbAiGvK2H7YaS34o4R6Ba",
"content_index": 0,
"transcript": "Hello."
}
|
Devuelto cuando la transcripción de audio de entrada está habilitada y la transcripción falla. Independiente del evento error; ayuda a los clientes a identificar fallos de transcripción específicamente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es conversation.item.input_audio_transcription.failed. item_idstring El ID del elemento de mensaje del usuario. content_indexinteger Este valor siempre es 0. errorobject La información del error. Propiedades code string El código de error. message string El mensaje de error. param string El parámetro relacionado con el error. | {
"type": "conversation.item.input_audio_transcription.failed",
"item_id": "<item_id>",
"content_index": 0,
"error": {
"code": "<code>",
"message": "<message>",
"param": "<param>"
}
}
|
response.created
Se devuelve cuando el servidor comienza a generar una nueva respuesta.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.created. responseobject El objeto de respuesta. Propiedades id string El ID único de la respuesta. conversation_id string El ID único de la sesión actual. object string El tipo de objeto. Para este evento, este valor siempre es realtime.response. status string El estado de la respuesta. Los valores válidos son completed, failed, in_progress, or incomplete. modalities array Las modalidades de respuesta. voice string La voz para el audio generado por el modelo. output array Este campo está vacío para este evento. | {
"event_id": "event_XuDavMzQN3KKepqGu3KRh",
"type": "response.created",
"response": {
"id": "resp_HaVOPdbmX6vifiV5pAfJY",
"object": "realtime.response",
"conversation_id": "conv_FjJaccpnvwHNo9cPVuzGc",
"status": "in_progress",
"modalities": [
"text",
"audio"
],
"voice": "Cherry",
"output_audio_format": "pcm",
"output": []
}
}
|
response.done
Se devuelve después de que la respuesta se genera completamente. El objeto response incluye todos los elementos de salida excepto los datos de audio sin procesar.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.done. responseobject El objeto de respuesta. Propiedades id string El ID único de la respuesta. conversation_id string El ID único de la sesión actual. object string El tipo de objeto. Para este evento, este valor siempre es realtime.response. status string El estado de la respuesta. modalities array Las modalidades de respuesta. voice string La voz para el audio generado por el modelo. output array Los elementos de salida de la respuesta. Cada elemento de la matriz es un objeto de elemento de conversación. Elemento de matriz id string El ID de la salida de la respuesta. type string El tipo de elemento de salida. Los valores incluyen message y function_call. Qwen3.8-Omni-Flash-Realtime también admite mcp_call; consulte Ejemplos de elementos MCP. object string Para elementos message y function_call, este campo es realtime.item. Para elementos MCP, tiene el mismo valor cuando se devuelve. status string El estado del elemento de salida. role string Presente solo en elementos de mensaje; identifica el rol del mensaje. content array El contenido del elemento de salida, devuelto solo cuando type es message. Cada elemento de la matriz es un objeto de parte de contenido. Elemento de matriz type string El tipo de contenido. El valor puede ser text para salida de texto sin formato o audio para salida de audio. text string La salida de texto. transcript string La transcripción de texto del audio. name string El nombre de la función que se invoca cuando el tipo es function_call. call_id string Cuando type es function_call, este es el ID único de la invocación de la función. arguments string Cuando type es function_call, este campo contiene los argumentos completos para la llamada a la función como una cadena JSON. type=mcp_call (elemento final) statusstring (obligatorio) completed o failed.
server_labelstring (obligatorio) Identifica el servidor MCP que ejecutó la herramienta. namestring (obligatorio) Nombre original de la herramienta. call_idstring (obligatorio) ID único de esta llamada. argumentsstring (obligatorio) Cadena JSON completa de argumentos. outputstring (opcional) Una cadena JSON serializada desde MCP tools/call.result. También puede aparecer en algunos casos de fallo. errorobject (opcional) Devuelto en caso de fallo. Propiedades typestring (obligatorio) Debe ser tool_execution_error. messagestring (obligatorio) Una descripción segura para el cliente sin contenido sensible de la respuesta ascendente. Si el servidor MCP devuelve isError=true, el estado final es failed y el output original también puede estar presente. usage object Detalles de uso de tokens para esta respuesta. Propiedades total_tokens integer Total de tokens utilizados en esta respuesta. input_tokens integer Número de tokens de entrada. output_tokens integer Número de tokens de salida. input_tokens_details object Detalles sobre el uso de tokens de entrada, incluyendo text_tokens y audio_tokens. output_tokens_details object Detalles sobre el uso de tokens de salida, incluyendo text_tokens y audio_tokens. plugins object (opcional) Métricas de uso de complementos. Se devuelve cuando la búsqueda web (enable_search) está habilitada. Propiedades search object Datos de medición de búsqueda. Propiedades count integer El número de búsquedas. strategy string La estrategia de búsqueda. | Ejemplo: {
"event_id": "event_CSaxRRYLvbrfexDXAEuDG",
"type": "response.done",
"response": {
"id": "resp_HaVOPdbmX6vifiV5pAfJY",
"object": "realtime.response",
"conversation_id": "conv_FjJaccpnvwHNo9cPVuzGc",
"status": "completed",
"modalities": [
"text",
"audio"
],
"voice": "Cherry",
"output_audio_format": "pcm",
"output": [
{
"id": "item_Ls6MtCUWO7LM4E59QziNv",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "audio",
"transcript": "Hello! How can I help you?"
}
]
}
],
"usage": {
"total_tokens": 377,
"input_tokens": 336,
"output_tokens": 41,
"input_tokens_details": {
"text_tokens": 228,
"audio_tokens": 108
},
"output_tokens_details": {
"text_tokens": 9,
"audio_tokens": 32
},
"plugins": {
"search": {
"count": 1,
"strategy": "agent"
}
}
}
}
}
// Tool calling scenario
{
"event_id": "event_T1EFAJp43X2DWtDRmxTtx",
"type": "response.done",
"response": {
"id": "resp_TucN5QgymL5MA8vkJvFlS",
"object": "realtime.response",
"conversation_id": "conv_SEDZESRlefT8WvLSmEn6E",
"status": "completed",
"modalities": ["text", "audio"],
"voice": "Ethan",
"output_audio_format": "pcm",
"output": [
{
"id": "item_FEG9qJGNkPcdf4et3p7BV",
"object": "realtime.item",
"type": "function_call",
"status": "completed",
"call_id": "call_bc0a7fb7235840f69ecfe4",
"name": "get_current_weather",
"arguments": " {\"location\": \"Hangzhou\"}"
}
],
"usage": {
"total_tokens": 567,
"input_tokens": 524,
"output_tokens": 43,
"input_tokens_details": {
"text_tokens": 487,
"audio_tokens": 37
},
"output_tokens_details": {
"text_tokens": 43
}
}
}
}
|
response.text.delta
Se devuelve cuando la modalidad de salida es solo texto y el modelo genera nuevo texto incrementalmente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.text.delta. deltastring Texto incremental generado por el modelo. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. Este valor siempre es 0. content_indexinteger El índice de la parte interna dentro del elemento de salida. Este valor siempre es 0. | {
"delta": "Hello",
"event_id": "event_TH49MauuPmRo1RGaMSlP7",
"type": "response.text.delta",
"response_id": "resp_PrRSvPVpnCExdUOGHHLuP",
"item_id": "item_L8IRm9kRXFpxoOjDqDC96",
"output_index": 0,
"content_index": 0
}
|
response.text.done
Se devuelve cuando la modalidad de salida es solo texto y el modelo termina de generar texto.
También se devuelve si la respuesta se interrumpe, está incompleta o se cancela.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.text.done. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. content_indexinteger El índice del elemento de salida en la respuesta. text string El texto completo generado por el modelo. | {
"event_id": "event_B1lIeE2Nac33zn5V7h2mm",
"type": "response.text.done",
"response_id": "resp_B1lIdtjF4Noqpn5NOjznj",
"item_id": "item_B1lIdJsAJlJiFs8ztWpJt",
"output_index": 0,
"content_index": 0,
"text": "How can I assist you today?"
}
|
response.audio.delta
Se devuelve cuando la modalidad de salida incluye audio y el modelo genera nuevos datos de audio incrementalmente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.audio.delta. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. content_indexinteger El índice del elemento de salida en la respuesta. delta string Datos de audio incrementales, codificados en Base64. | {
"event_id": "event_B1osWMZBtrEQbiIwW0qHQ",
"type": "response.audio.delta",
"response_id": "resp_P79OOMs8LnrXVpiIHUCKR",
"item_id": "item_OFaPGtzfWCPyGzxnuEX9i",
"output_index": 0,
"content_index": 0,
"delta": "{base64 audio}"
}
|
response.audio.done
Se devuelve cuando la modalidad de salida incluye audio y el modelo termina de generar datos de audio.
También se devuelve si la respuesta se interrumpe, está incompleta o se cancela.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.audio.done. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. content_indexinteger El índice del elemento de salida en la respuesta. | {
"event_id": "event_Le1TDl7VfyHQxl47DtGxI",
"type": "response.audio.done",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"item_id": "item_Ls6MtCUWO7LM4E59QziNv",
"output_index": 0,
"content_index": 0
}
|
response.audio_transcript.delta
Devuelto cuando la modalidad de salida incluye audio y el modelo genera nuevo texto de transcripción response.audio_transcript.delta de forma incremental.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.audio_transcript.delta. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. content_indexinteger El índice del elemento de salida en la respuesta. deltastring El texto incremental. | {
"event_id": "event_BksW7fOwnyavZdDxIzZYM",
"type": "response.audio_transcript.delta",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"item_id": "item_Ls6MtCUWO7LM4E59QziNv",
"output_index": 0,
"content_index": 0,
"delta": "What"
}
|
response.audio_transcript.done
Devuelto como un evento response.audio_transcript.done cuando la modalidad de salida incluye audio y el modelo completa la transcripción de audio.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.audio_transcript.done. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. content_indexinteger El índice del elemento de salida en la respuesta. transcriptstring El texto completo de la transcripción. | {
"event_id": "event_X49tL2WerT4WjxcmH16lS",
"type": "response.audio_transcript.done",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"item_id": "item_Ls6MtCUWO7LM4E59QziNv",
"output_index": 0,
"content_index": 0,
"transcript": "Hello! How can I help you?"
}
|
response.function_call_arguments.delta
Devuelto a medida que el modelo transmite argumentos de llamada de función. Concatene los campos delta para construir la cadena de argumentos. El contenido completo se proporciona en el evento response.function_call_arguments.done subsiguiente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.function_call_arguments.delta. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. call_idstring El ID único para esta invocación de función. Esto es consistente con el evento done en el mismo turno. deltastring Nuevo segmento de la cadena de argumentos. Concatene los segmentos en orden. | {
"event_id": "event_SlKoJyEbPEqLq14DSM1u5",
"type": "response.function_call_arguments.delta",
"response_id": "resp_JnTOsWXlFhKcFohZbtfz6",
"item_id": "item_Rhcms7CauTNsQprV5S4Hr",
"output_index": 0,
"call_id": "call_2be200f4cafe419b9530dd",
"delta": " {\"location\": \"Beijing\"}"
}
|
response.function_call_arguments.done
Indica que los argumentos de llamada de función se han generado completamente. El campo arguments contiene la cadena de argumentos completa. Utilice los arguments de este evento —no los resultados concatenados de delta— para analizar y llamar a la función local.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.function_call_arguments.done. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. call_idstring El ID único para esta invocación de función. namestring El nombre de la función que fue llamada. argumentsstring Argumentos completos de la llamada a la función como una cadena JSON. | {
"event_id": "event_X6suLyuL5agdH7r6koesM",
"type": "response.function_call_arguments.done",
"response_id": "resp_JnTOsWXlFhKcFohZbtfz6",
"item_id": "item_Rhcms7CauTNsQprV5S4Hr",
"output_index": 0,
"name": "get_current_weather",
"call_id": "call_2be200f4cafe419b9530dd",
"arguments": " {\"location\": \"Beijing\"}"
}
|
response.output_item.added
Devuelto cuando se crea un nuevo elemento durante la generación de respuesta. El tipo de elemento puede ser message o function_call; Qwen3.8-Omni-Flash-Realtime también admite mcp_call; consulte Ejemplos de elementos MCP.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.output_item.added. response_idstring El ID de respuesta. output_indexinteger El índice del elemento de salida en la respuesta. itemobject Información sobre el elemento de salida. Propiedades idstring El ID único del elemento de salida. objectstring Para elementos message y function_call, este campo es realtime.item. Para elementos MCP, tiene el mismo valor cuando se devuelve. statusstring El estado del elemento de salida. rolestring Presente solo en elementos de mensaje; identifica el rol del mensaje. contentarray El contenido del mensaje, devuelto cuando el tipo es message. La matriz está inicialmente vacía en este ejemplo; consulte el elemento completado en el ejemplo de response.output_item.done. typestring El tipo de elemento de salida. Los valores incluyen message y function_call. Qwen3.8-Omni-Flash-Realtime también admite mcp_call; consulte Ejemplos de elementos MCP. namestring El nombre de la función a llamar cuando type es function_call. call_idstring El ID único de la invocación de función actual cuando el tipo es function_call. argumentsstring Argumentos de llamada a la función como una cadena JSON cuando type es function_call. Inicialmente una cadena vacía en eventos added. type=mcp_call (elemento inicial) objectstring (obligatorio) Debe ser realtime.item. statusstring (obligatorio) Inicialmente in_progress. server_labelstring (obligatorio) Identifica el servidor MCP que ejecuta la herramienta. namestring (obligatorio) Nombre original de la herramienta. call_idstring (obligatorio) ID único de esta llamada. argumentsstring (obligatorio) Generalmente vacío al principio; use response.mcp_call_arguments.done y el elemento final para obtener los argumentos completos. | {
"event_id": "event_DsCO341DEVtiATtCB6BUY",
"type": "response.output_item.added",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"output_index": 0,
"item": {
"id": "item_Ls6MtCUWO7LM4E59QziNv",
"object": "realtime.item",
"type": "message",
"status": "in_progress",
"role": "assistant",
"content": []
}
}
// Tool calling scenario
{
"event_id": "event_HXmKt5pGoiRtXx7Hq7zpN",
"type": "response.output_item.added",
"response_id": "resp_TucN5QgymL5MA8vkJvFlS",
"output_index": 0,
"item": {
"id": "item_FEG9qJGNkPcdf4et3p7BV",
"object": "realtime.item",
"type": "function_call",
"status": "in_progress",
"call_id": "call_bc0a7fb7235840f69ecfe4",
"name": "get_current_weather",
"arguments": ""
}
}
|
response.output_item.done
Devuelto cuando un elemento de salida se genera completamente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.output_item.done. response_idstring El ID de respuesta. output_indexinteger El índice del elemento de salida en la respuesta. itemobject La información del elemento de salida. Propiedades idstring El ID único del elemento de salida. objectstring Para elementos message y function_call, este campo es realtime.item. Para elementos MCP, tiene el mismo valor cuando se devuelve. statusstring El estado del elemento de salida. rolestring Presente solo en elementos de mensaje; identifica el rol del mensaje. contentarray of objects El contenido del mensaje, devuelto cuando el tipo es message. Los siguientes campos describen el elemento de matriz en este ejemplo. Elemento de matriz typestring El tipo de parte de contenido; audio en este ejemplo. textstring Contenido de texto en este ejemplo. typestring El tipo de elemento de salida. Los valores incluyen message y function_call. Qwen3.8-Omni-Flash-Realtime también admite mcp_call; consulte Ejemplos de elementos MCP. namestring El nombre de la función que se llama cuando el tipo es function_call. call_idstring Cuando type es function_call, este es el ID único para la invocación de la función. argumentsstring Cuando type es function_call, contiene los argumentos completos de la llamada a la función como una cadena JSON. type=mcp_call (elemento final) statusstring (obligatorio) completed o failed.
server_labelstring (obligatorio) Identifica el servidor MCP que ejecutó la herramienta. namestring (obligatorio) Nombre original de la herramienta. call_idstring (obligatorio) ID único de esta llamada. argumentsstring (obligatorio) Cadena JSON completa de argumentos. outputstring (opcional) Una cadena JSON serializada desde MCP tools/call.result. También puede aparecer en algunos casos de fallo. errorobject (opcional) Devuelto en caso de fallo. Propiedades typestring (obligatorio) Debe ser tool_execution_error. messagestring (obligatorio) Una descripción segura para el cliente sin contenido sensible de la respuesta ascendente. Si el servidor MCP devuelve isError=true, el estado final es failed y el output original también puede estar presente. | {
"event_id": "event_MEu5nlLw1LsOguHiehIP8",
"type": "response.output_item.done",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"output_index": 0,
"item": {
"id": "item_Ls6MtCUWO7LM4E59QziNv",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "audio",
"text": "Hello! How can I help you?"
}
]
}
}
// Tool calling scenario
{
"event_id": "event_FHspdfAnCyjuME3mmAwSY",
"type": "response.output_item.done",
"response_id": "resp_TucN5QgymL5MA8vkJvFlS",
"output_index": 0,
"item": {
"id": "item_FEG9qJGNkPcdf4et3p7BV",
"object": "realtime.item",
"type": "function_call",
"status": "completed",
"call_id": "call_bc0a7fb7235840f69ecfe4",
"name": "get_current_weather",
"arguments": " {\"location\": \"Hangzhou\"}"
}
}
|
response.content_part.added
Se devuelve cuando se agrega una nueva parte de contenido a un elemento de mensaje del asistente durante la generación de la respuesta.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.content_part.added. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. Este valor siempre es 0. content_indexinteger El índice de la parte interna dentro del elemento de salida. Este valor siempre es 0. partobject La información del elemento de salida. Propiedades typestring El tipo de la parte de contenido. textstring El texto de la parte de contenido. | {
"event_id": "event_AVBOmrgY3C8bjlRajfSUT",
"type": "response.content_part.added",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"item_id": "item_Ls6MtCUWO7LM4E59QziNv",
"output_index": 0,
"content_index": 0,
"part": {
"type": "audio",
"text": ""
}
}
|
response.content_part.done
Se devuelve cuando finaliza la transmisión de una parte de contenido dentro de un elemento de mensaje del asistente.
event_idstring Un identificador único para este evento. typestring El tipo de evento. Este valor siempre es response.content_part.done. response_idstring El ID de respuesta. item_idstring El ID del elemento de mensaje. output_indexinteger El índice del elemento de salida en la respuesta. Este valor siempre es 0. content_indexinteger El índice de la parte de contenido en la matriz de contenido. Este valor siempre es 0. partobject La información del elemento de salida. Propiedades typestring El tipo de la parte de contenido. textstring El texto de la parte de contenido. | {
"event_id": "event_Il8HD19v58Qr5IBkw7LtN",
"type": "response.content_part.done",
"response_id": "resp_HaVOPdbmX6vifiV5pAfJY",
"item_id": "item_Ls6MtCUWO7LM4E59QziNv",
"output_index": 0,
"content_index": 0,
"part": {
"type": "audio",
"text": "Hello! How can I help you?"
}
}
|
Eventos de MCP
Esta sección describe eventos y campos de WebSocket para qwen3.8-omni-flash-realtime. Otros eventos y campos base utilizan el protocolo común documentado anteriormente. Los campos obligatorios son necesarios cuando su objeto contenedor está presente. Los IDs son cadenas opacas; no confíe en sus longitudes, prefijos o reglas de generación. arguments y output son cadenas cuyo contenido requiere análisis JSON. Las conexiones MCP, el descubrimiento y las llamadas están sujetos a cuotas de servicio y tiempos de espera.
| Tipo de evento | Cuándo se emite |
|---|
mcp_list_tools.in_progress | Comienza el descubrimiento de herramientas para un servidor MCP. |
mcp_list_tools.completed | El descubrimiento tiene éxito y allowed_tools el filtrado se completa. |
mcp_list_tools.failed | El descubrimiento falla, excede el tiempo de espera o supera los límites del servicio. |
Los tres requieren los campos de cadena event_id (ID de evento único), type (tipo de evento anterior) y item_id (elemento mcp_list_tools asociado). in_progress puede llegar antes que session.updated. Para completed y failed, conversation.item.created que contiene la lista final de herramientas o error llega primero, seguido por el evento de estado con el mismo item_id.
{
"event_id": "opaque_event_id",
"type": "mcp_list_tools.completed",
"item_id": "opaque_item_id"
}
response.mcp_call_arguments.delta
| Campo | Tipo | Obligatorio | Significado |
|---|
event_id | string | Sí | ID de evento único. |
type | string | Sí | response.mcp_call_arguments.delta |
response_id | string | Sí | ID de Response principal. |
item_id | string | Sí | Actual mcp_call ID de elemento. |
output_index | integer | Sí | Índice basado en cero en la matriz de salida Response principal. |
delta | string | Sí | Fragmento de cadena JSON incremental; concatene en orden de evento. |
obfuscation | string | No | Cadena de ofuscación opcional; ignore al ensamblar y analizar argumentos. |
{
"event_id": "opaque_event_id",
"type": "response.mcp_call_arguments.delta",
"response_id": "opaque_response_id",
"item_id": "opaque_item_id",
"output_index": 0,
"delta": "{\"city\":\"杭",
"obfuscation": "opaque-value"
}
response.mcp_call_arguments.done
Requiere event_id, type, response_id y item_id (cadenas), output_index (entero, mismo significado que arriba) y arguments (cadena). type es response.mcp_call_arguments.done. arguments contiene los argumentos completos codificados en JSON y es autoritativo.
{
"event_id": "opaque_event_id",
"type": "response.mcp_call_arguments.done",
"response_id": "opaque_response_id",
"item_id": "opaque_item_id",
"output_index": 0,
"arguments": "{\"city\":\"杭州\"}"
}
response.mcp_call.*
| Tipo de evento | Cuándo se emite |
|---|
response.mcp_call.in_progress | Los argumentos están completos y la aprobación se ha concedido o no es necesaria; comienza la llamada MCP. |
response.mcp_call.completed | La llamada MCP tiene éxito. |
response.mcp_call.failed | Error de conexión, protocolo o negocio de herramienta; rechazo de aprobación o tiempo de espera agotado; tiempo de espera de llamada agotado; o cancelación. |
Los tres requieren event_id, type y item_id (cadenas), y output_index (entero). item_id identifica el mcp_call actual; output_index es su índice en la matriz de salida Response principal.
{
"event_id": "opaque_event_id",
"type": "response.mcp_call.in_progress",
"item_id": "opaque_item_id",
"output_index": 0
}
Elementos de conversación MCP
Estos objetos son tipos del campo item en eventos, aplicables a Qwen3.8-Omni-Flash-Realtime.
Devuelto como conversation.item.created.item; consulte la rama type=mcp_list_tools en conversation.item.created para ver sus campos.
Ejemplo:
{
"event_id": "opaque_event_id",
"type": "conversation.item.created",
"item": {
"id": "opaque_item_id",
"type": "mcp_list_tools",
"server_label": "amap",
"tools": [
{
"name": "maps_weather",
"description": "查询天气",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名"
}
},
"required": ["city"]
}
}
]
}
}
Elemento mcp_call inicial
Cuando el modelo selecciona una herramienta MCP, este elemento aparece en response.output_item.added.item y también puede aparecer en conversation.item.created.item; consulte las ramas correspondientes de item bajo response.output_item.added y conversation.item.created.
Ejemplo de response.output_item.added:
{
"event_id": "opaque_event_id",
"type": "response.output_item.added",
"response_id": "opaque_response_id",
"output_index": 0,
"item": {
"id": "opaque_item_id",
"object": "realtime.item",
"type": "mcp_call",
"status": "in_progress",
"call_id": "opaque_call_id",
"server_label": "amap",
"name": "maps_weather",
"arguments": ""
}
}
Elemento mcp_approval_request
Devuelto en conversation.item.created; consulte conversation.item.created para los campos de evento y aprobación item.
Ejemplo:
{
"event_id": "opaque_event_id",
"type": "conversation.item.created",
"response_id": "opaque_response_id",
"item_id": "opaque_approval_id",
"previous_item_id": "opaque_item_id",
"item": {
"id": "opaque_approval_id",
"type": "mcp_approval_request",
"server_label": "amap",
"name": "maps_weather",
"arguments": "{\"city\":\"杭州\"}",
"call_id": "opaque_call_id"
}
}
Elemento mcp_call final
Después de que una llamada alcanza un estado terminal, el elemento aparece en response.output_item.done.item y en la instantánea final principal de response.done.response.output; consulte las ramas correspondientes bajo response.output_item.done y response.done.
Llamada exitosa:
{
"event_id": "opaque_event_id",
"type": "response.output_item.done",
"response_id": "opaque_response_id",
"output_index": 0,
"item": {
"id": "opaque_item_id",
"type": "mcp_call",
"status": "completed",
"call_id": "opaque_call_id",
"server_label": "amap",
"name": "maps_weather",
"arguments": "{\"city\":\"杭州\"}",
"output": "{\"content\":[{\"type\":\"text\",\"text\":\"...\"}],\"isError\":false}"
}
}
Llamada fallida:
{
"event_id": "opaque_event_id",
"type": "response.output_item.done",
"response_id": "opaque_response_id",
"output_index": 0,
"item": {
"id": "opaque_item_id",
"type": "mcp_call",
"status": "failed",
"call_id": "opaque_call_id",
"server_label": "amap",
"name": "maps_weather",
"arguments": "{\"city\":\"杭州\"}",
"error": {
"type": "tool_execution_error",
"message": "MCP tool call failed (call_timeout)."
}
}
}
Errores de MCP
Los errores de MCP pueden ocurrir durante el descubrimiento de herramientas o la ejecución de herramientas. Para errores de descubrimiento, consulte error bajo la rama mcp_list_tools de conversation.item.created; para errores de ejecución, consulte la rama mcp_call de response.output_item.done.
Consulte Qwen-Omni-Realtime.