La API de Gemini Live habilita interacciones bidireccionales de baja latencia que usan entradas de texto, audio y video, con salida de audio y texto. Esto facilita conversaciones de voz naturales y similares a las humanas con la capacidad de interrumpir el modelo en cualquier momento. La capacidad de comprensión de videos del modelo extiende las modalidades de comunicación, lo que te permite compartir entradas de la cámara o presentaciones en pantalla y hacer preguntas sobre ellas.
Funciones
La API de Live incluye las siguientes funciones clave:
- Multimodalidad: El modelo puede ver, escuchar y hablar.
- Interacción en tiempo real de baja latencia: El modelo puede proporcionar respuestas rápidas.
- Memoria de sesión: El modelo retiene la memoria de todas las interacciones dentro de una sola sesión y recuerda la información que se escuchó o vio anteriormente.
- Compatibilidad con llamadas a funciones, ejecución de código y Búsqueda como herramienta: Puedes integrar el modelo con servicios y fuentes de datos externos.
La API de Live está diseñada para la comunicación de servidor a servidor.
En el caso de las aplicaciones web y para dispositivos móviles, te recomendamos que uses la integración de nuestros socios de Daily.
Modelos compatibles
Comenzar
Para probar la API en vivo, ve a Vertex AI Studio y, luego, haz clic en Iniciar sesión.
La API en vivo es una API con estado que usa WebSockets.
En esta sección, se muestra un ejemplo de cómo usar la API en vivo para la generación de texto a texto con Python 3.9 o versiones posteriores.
Gen AI SDK for Python
Instalar
pip install --upgrade google-genai
Establece variables de entorno para usar el SDK de Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
Guía de integración
En esta sección, se describe cómo funciona la integración con la API de Live.
Sesiones
Una conexión WebSocket establece una sesión entre el cliente y el servidor Gemini.
Después de que un cliente inicia una conexión nueva, la sesión puede intercambiar mensajes con el servidor para realizar las siguientes acciones:
- Enviar texto, audio o video al servidor de Gemini
- Recibir solicitudes de llamadas de audio, texto o función del servidor de Gemini
La configuración de la sesión se envía en el primer mensaje después de la conexión. Una configuración de sesión incluye el modelo, los parámetros de generación, las instrucciones del sistema y las herramientas.
Consulta la siguiente configuración de ejemplo:
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object
},
"systemInstruction": string,
"tools": [object]
}
Para obtener más información, consulta BidiGenerateContentSetup.
Enviar mensajes
Los mensajes son objetos con formato JSON que se intercambian a través de la conexión WebSocket.
Para enviar un mensaje, el cliente debe enviar un objeto JSON a través de una conexión WebSocket abierta. El objeto JSON debe tener exactamente uno de los campos del siguiente conjunto de objetos:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
Mensajes de cliente compatibles
Consulta los mensajes de cliente admitidos en la siguiente tabla:
Mensaje | Descripción |
---|---|
BidiGenerateContentSetup |
Configuración de la sesión que se enviará en el primer mensaje |
BidiGenerateContentClientContent |
Actualización incremental del contenido de la conversación actual que se entrega desde el cliente |
BidiGenerateContentRealtimeInput |
Entrada de audio o video en tiempo real |
BidiGenerateContentToolResponse |
Respuesta a un ToolCallMessage recibido del servidor |
Recibir mensajes
Para recibir mensajes de Gemini, escucha el evento "message" de WebSocket y, luego, analiza el resultado según la definición de los mensajes del servidor compatibles.
Consulta lo siguiente:
ws.addEventListener("message", async (evt) => { if (evt.data instanceof Blob) { // Process the received data (audio, video, etc.) } else { // Process JSON response } });
Los mensajes del servidor tendrán exactamente uno de los campos del siguiente conjunto de objetos:
{
"setupComplete": BidiGenerateContentSetupComplete,
"serverContent": BidiGenerateContentServerContent,
"toolCall": BidiGenerateContentToolCall,
"toolCallCancellation": BidiGenerateContentToolCallCancellation
"usageMetadata": UsageMetadata
"goAway": GoAway
"sessionResumptionUpdate": SessionResumptionUpdate
"inputTranscription": BidiGenerateContentTranscription
"outputTranscription": BidiGenerateContentTranscription
}
Mensajes del servidor compatibles
Consulta los mensajes del servidor admitidos en la siguiente tabla:
Mensaje | Descripción |
---|---|
BidiGenerateContentSetupComplete |
Un mensaje BidiGenerateContentSetup del cliente que se envía cuando se completa la configuración |
BidiGenerateContentServerContent |
Contenido que genera el modelo en respuesta a un mensaje del cliente |
BidiGenerateContentToolCall |
Solicita al cliente que ejecute las llamadas a función y que devuelva las respuestas con los IDs coincidentes. |
BidiGenerateContentToolCallCancellation |
Se envía cuando se cancela una llamada a función debido a que el usuario interrumpe el resultado del modelo. |
UsageMetadata |
Un informe de la cantidad de tokens que usó la sesión hasta el momento |
GoAway |
Un indicador de que la conexión actual pronto se finalizará |
SessionResumptionUpdate |
Un punto de control de sesión que se puede reanudar |
BidiGenerateContentTranscription |
Una transcripción de la voz del usuario o del modelo |
Actualizaciones de contenido incrementales
Usa actualizaciones incrementales para enviar entradas de texto, establecer el contexto de la sesión o restablecerlo. Para contextos cortos, puedes enviar interacciones paso a paso para representar la secuencia exacta de eventos. Para contextos más largos, se recomienda proporcionar un solo resumen del mensaje para liberar la ventana de contexto para las interacciones de seguimiento.
Consulta el siguiente ejemplo de mensaje de contexto:
{ "clientContent": { "turns": [ { "parts":[ { "text": "" } ], "role":"user" }, { "parts":[ { "text": "" } ], "role":"model" } ], "turnComplete": true } }
Ten en cuenta que, si bien las partes de contenido pueden ser de un tipo functionResponse
, no se debe usar BidiGenerateContentClientContent
para proporcionar una respuesta a las llamadas a función que emite el modelo. En su lugar, se debe usar BidiGenerateContentToolResponse
. BidiGenerateContentClientContent
solo se debe usar para establecer el contexto anterior o proporcionar entradas de texto a la conversación.
Transmisión de audio y video
Ejecución de código
Si deseas obtener más información sobre la ejecución de código, consulta Ejecución de código.
Llamada a función
Todas las funciones deben declararse al comienzo de la sesión. Para ello, se deben enviar definiciones de herramientas como parte del mensaje BidiGenerateContentSetup
.
Para definir funciones, usa JSON, específicamente con un subconjunto seleccionado del formato de esquema de OpenAPI. Una sola declaración de función puede incluir los siguientes parámetros:
name (cadena): Es el identificador único de la función dentro de la llamada a la API.
description (cadena): Es una explicación completa del propósito y las capacidades de la función.
parameters (objeto): Define los datos de entrada que requiere la función.
type (cadena): Especifica el tipo de datos general, como objeto.
properties (objeto): Muestra una lista de parámetros individuales, cada uno con lo siguiente:
- type (cadena): Es el tipo de datos del parámetro, como cadena, número entero o booleano.
- description (cadena): Una explicación clara del propósito del parámetro y el formato esperado.
required (array): Es un array de cadenas que enumera los nombres de los parámetros que son obligatorios para que funcione la función.
Para ver ejemplos de código de una declaración de función con comandos curl, consulta Llamadas a funciones con la API de Gemini. Para ver ejemplos de cómo crear declaraciones de funciones con los SDKs de la API de Gemini, consulta el instructivo sobre llamadas a funciones.
A partir de una sola instrucción, el modelo puede generar varias llamadas a funciones y el código necesario para encadenar sus resultados. Este código se ejecuta en un entorno de zona de pruebas y genera mensajes BidiGenerateContentToolCall
posteriores. La ejecución se detiene hasta que los resultados de cada llamada a función están disponibles, lo que garantiza el procesamiento secuencial.
El cliente debe responder con BidiGenerateContentToolResponse
.
Para obtener más información, consulta Introducción a las llamadas a funciones.
Formatos de audio
La API de Live admite los siguientes formatos de audio:
- Formato de audio de entrada: Audio PCM sin procesar de 16 bits a 16 kHz de tipo "little endian"
- Formato de audio de salida: Audio PCM sin procesar de 16 bits a 24 kHz de tipo little-endian
Instrucciones del sistema
Puedes proporcionar instrucciones del sistema para controlar mejor el resultado del modelo y especificar el tono y la opinión de las respuestas de audio.
Las instrucciones del sistema se agregan a la instrucción antes de que comience la interacción y permanecen vigentes durante toda la sesión.
Las instrucciones del sistema solo se pueden establecer al comienzo de una sesión, inmediatamente después de la conexión inicial. Para proporcionar más entradas al modelo durante la sesión, usa actualizaciones de contenido incrementales.
Interrupciones
Los usuarios pueden interrumpir la salida del modelo en cualquier momento. Cuando la detección de actividad de voz (VAD) detecta una interrupción, se cancela y descarta la generación en curso. Solo la información que ya se envió al cliente se conserva en el historial de la sesión. Luego, el servidor
envía un mensaje BidiGenerateContentServerContent
para informar la interrupción.
Además, el servidor de Gemini descarta las llamadas a función pendientes y envía un mensaje BidiGenerateContentServerContent
con los IDs de las llamadas canceladas.
Voces
La API de Live admite las siguientes voces:
- Puck
- Caronte
- Kore
- Fenrir
- Aoede
Para especificar una voz, establece voiceName
dentro del objeto speechConfig
, como parte de la configuración de la sesión.
Consulta la siguiente representación JSON de un objeto speechConfig
:
{ "voiceConfig": { "prebuiltVoiceConfig": { "voiceName": "VOICE_NAME" } } }
Limitaciones
Ten en cuenta las siguientes limitaciones de la API de Live y Gemini 2.0 cuando planifiques tu proyecto.
Autenticación de clientes
La API en vivo solo proporciona autenticación de servidor a servidor y no se recomienda para el uso directo de clientes. La entrada del cliente debe enrutarse a través de un servidor de aplicaciones intermedio para una autenticación segura con la API de Live.
Historial de conversaciones
Si bien el modelo realiza un seguimiento de las interacciones durante la sesión, el historial de conversaciones no se almacena. Cuando finaliza una sesión, se borra el contexto correspondiente.
Para restablecer una sesión anterior o proporcionarle al modelo el contexto histórico de las interacciones del usuario, la aplicación debe mantener su propio registro de conversación y usar un mensaje BidiGenerateContentClientContent
para enviar esta información al comienzo de una sesión nueva.
Duración máxima de la sesión
La duración de la sesión se limita a 15 minutos para el audio o a 2 minutos de audio y video. Cuando la duración de la sesión supera el límite, se finaliza la conexión.
El modelo también se limita por el tamaño del contexto. Enviar grandes fragmentos de contenido junto con las transmisiones de audio y video puede provocar que la sesión finalice antes.
Detección de actividad de voz (VAD)
De forma predeterminada, el modelo realiza automáticamente la detección de actividad de voz (VAD) en una transmisión continua de entrada de audio. La VAD se puede configurar con el campo RealtimeInputConfig.AutomaticActivityDetection
del mensaje de configuración.
Cuando la transmisión de audio se pausa durante más de un segundo (por ejemplo, cuando el usuario apaga el micrófono), se envía un evento AudioStreamEnd
para borrar el audio almacenado en caché. El cliente puede reanudar el envío de datos de audio en cualquier momento.
Como alternativa, puedes desactivar la VAD automática configurando RealtimeInputConfig.AutomaticActivityDetection.disabled
como true
en el mensaje de configuración. En esta configuración, el cliente es responsable de detectar la voz del usuario y enviar mensajes ActivityStart
y ActivityEnd
en los momentos adecuados. No se envía un AudioStreamEnd
en esta configuración. En cambio, cualquier interrupción de la transmisión se marca con un mensaje ActivityEnd
.
Limitaciones adicionales
No se admite la configuración manual de extremos.
Las entradas y salidas de audio afectan negativamente la capacidad del modelo para usar llamadas a función.
Recuento de tokens
No se admite el recuento de tokens.
Límites de frecuencia
Se aplican los siguientes límites de frecuencia:
- 3 sesiones simultáneas por clave de API
- 4 millones de tokens por minuto
Mensajes y eventos
BidiGenerateContentClientContent
Es la actualización incremental de la conversación actual que se entrega desde el cliente. Todo el contenido aquí se agrega sin condiciones al historial de conversaciones y se usa como parte de la instrucción para que el modelo genere contenido.
Un mensaje aquí interrumpirá cualquier generación de modelos actual.
Campos | |
---|---|
turns[] |
Opcional. Es el contenido que se adjunta a la conversación actual con el modelo. Para consultas de un solo turno, esta es una instancia única. Para las consultas de varios turnos, este es un campo repetido que contiene el historial de conversaciones y la solicitud más reciente. |
turn_complete |
Opcional. Si es verdadero, indica que la generación de contenido del servidor debe comenzar con la instrucción acumulada actualmente. De lo contrario, el servidor esperará mensajes adicionales antes de iniciar la generación. |
BidiGenerateContentRealtimeInput
Entrada del usuario que se envía en tiempo real.
Esto es diferente de ClientContentUpdate
en algunos aspectos:
- Se pueden enviar de forma continua sin interrupciones a la generación de modelos.
- Si es necesario combinar datos intercalados entre
ClientContentUpdate
yRealtimeUpdate
, el servidor intenta realizar optimizaciones para obtener la mejor respuesta, pero no hay garantías. - El final de la toma de turno no se especifica de forma explícita, sino que se deriva de la actividad del usuario (por ejemplo, el final de la voz).
- Incluso antes de que finalice el turno, los datos se procesan de forma incremental para optimizar un inicio rápido de la respuesta del modelo.
- Siempre se supone que es la entrada del usuario (no se puede usar para propagar el historial de conversaciones).
Campos | |
---|---|
media_chunks[] |
Opcional. Datos de bytes intercalados para la entrada de contenido multimedia. |
activity_start |
Opcional. Marca el inicio de la actividad del usuario. Solo se puede enviar si la detección automática de actividad (es decir, del servidor) está inhabilitada. |
activity_end |
Opcional. Marca el final de la actividad del usuario. Solo se puede enviar si la detección automática de actividad (es decir, del servidor) está inhabilitada. |
ActivityEnd
Este tipo no tiene campos.
Marca el final de la actividad del usuario.
ActivityStart
Este tipo no tiene campos.
Solo se debe configurar uno de los campos de este mensaje a la vez. Marca el inicio de la actividad del usuario.
BidiGenerateContentServerContent
Actualización incremental del servidor que genera el modelo en respuesta a los mensajes del cliente.
El contenido se genera lo más rápido posible, no en tiempo real. Los clientes pueden optar por almacenar en búfer y reproducir contenido en tiempo real.
Campos | |
---|---|
turn_complete |
Solo salida. Si es verdadero, indica que el modelo terminó de generarse. La generación solo comenzará en respuesta a mensajes adicionales del cliente. Se puede configurar junto con |
interrupted |
Solo salida. Si es verdadero, indica que un mensaje del cliente interrumpió la generación de modelos actual. Si el cliente reproduce el contenido en tiempo real, es una buena señal para detener y vaciar la cola actual. Si el cliente reproduce el contenido en tiempo real, es una buena señal para detener y vaciar la cola de reproducción actual. |
generation_complete |
Solo salida. Si es verdadero, indica que el modelo terminó de generarse. Cuando el modelo se interrumpa durante la generación, no habrá un mensaje "generation_complete" en el turno interrumpido, sino que pasará por "interrupted > turn_complete". Cuando el modelo asuma la reproducción en tiempo real, habrá una demora entre generation_complete y turn_complete, que se debe a que el modelo espera a que finalice la reproducción. |
grounding_metadata |
Solo salida. Los metadatos especifican las fuentes que se usan para fundamentar el contenido generado. |
input_transcription |
Opcional. Ingresa la transcripción. La transcripción es independiente del turno del modelo, lo que significa que no implica ningún orden entre la transcripción y el turno del modelo. |
output_transcription |
Opcional. Transcripción de salida. La transcripción es independiente del turno del modelo, lo que significa que no implica ningún orden entre la transcripción y el turno del modelo. |
model_turn |
Solo salida. Es el contenido que el modelo generó como parte de la conversación actual con el usuario. |
Transcripción
Mensaje de transcripción de audio.
Campos | |
---|---|
text |
Opcional. Texto de la transcripción. |
finished |
Opcional. El valor booleano indica el final de la transcripción. |
BidiGenerateContentSetup
Es el mensaje que se enviará en el primer y único mensaje del cliente. Contiene la configuración que se aplicará durante la sesión de transmisión.
Los clientes deben esperar un mensaje BidiGenerateContentSetupComplete
antes de enviar cualquier mensaje adicional.
Campos | |
---|---|
model |
Obligatorio. Es el nombre completamente calificado del modelo del publicador. Formato del modelo de publicador: |
generation_config |
Opcional. Configuración de generación No se admiten los siguientes campos:
|
system_instruction |
Opcional. Las instrucciones del sistema que proporcionó el usuario para el modelo. Nota: Solo se debe usar texto en las partes y el contenido en cada parte debe encontrarse en un párrafo separado. |
tools[] |
Opcional. Es una lista de Un |
session_resumption |
Opcional. Configura el mecanismo de reanudación de la sesión. Si se incluye, el servidor enviará mensajes |
context_window_compression |
Opcional. Configura el mecanismo de compresión de la ventana de contexto. Si se incluye, el servidor comprimirá la ventana de contexto para que se ajuste a la longitud determinada. |
realtime_input_config |
Opcional. Configura el control de la entrada en tiempo real. |
input_audio_transcription |
Opcional. La transcripción de la entrada se alinea con el idioma de audio de entrada. |
output_audio_transcription |
Opcional. La transcripción del resultado se alinea con el código de idioma especificado para el audio de salida. |
AudioTranscriptionConfig
Este tipo no tiene campos.
La configuración de la transcripción de audio
BidiGenerateContentSetupComplete
Este tipo no tiene campos.
Se envía en respuesta a un mensaje BidiGenerateContentSetup
del cliente.
BidiGenerateContentToolCall
Solicita al cliente que ejecute el function_calls
y que devuelva las respuestas con los id
coincidentes.
Campos | |
---|---|
function_calls[] |
Solo salida. La llamada a función que se ejecutará. |
BidiGenerateContentToolCallCancellation
Notificación para el cliente de que un ToolCallMessage
emitido anteriormente con los id
especificados no se debió ejecutar y debe cancelarse. Si hubo efectos secundarios en esas llamadas a la herramienta, los clientes pueden intentar deshacerlas. Este mensaje solo ocurre en los casos en que los clientes interrumpen los turnos del servidor.
Campos | |
---|---|
ids[] |
Solo salida. Los IDs de las llamadas a la herramienta que se cancelarán. |
BidiGenerateContentToolResponse
Respuesta generada por el cliente a un ToolCall
recibido del servidor. Los objetos FunctionResponse
individuales se corresponden con los objetos FunctionCall
respectivos mediante el campo id
.
Ten en cuenta que, en las APIs de GenerateContent uniaria y de transmisión del servidor, las llamadas a función se realizan intercambiando las partes Content
, mientras que, en las APIs de GenerateContent de transmisión bidireccional, las llamadas a función se realizan a través de este conjunto dedicado de mensajes.
Campos | |
---|---|
function_responses[] |
Opcional. La respuesta a las llamadas a la función. |
RealtimeInputConfig
Configura el comportamiento de entrada en tiempo real en BidiGenerateContent
.
Campos | |
---|---|
automatic_activity_detection |
Opcional. Si no se establece, la detección automática de actividades está habilitada de forma predeterminada. Si la detección de voz automática está inhabilitada, el cliente debe enviar indicadores de actividad. |
activity_handling |
Opcional. Define qué efecto tiene la actividad. |
turn_coverage |
Opcional. Define qué entrada se incluye en el turno del usuario. |
ActivityHandling
Las diferentes formas de controlar la actividad del usuario
Enums | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
Si no se especifica, el comportamiento predeterminado es START_OF_ACTIVITY_INTERRUPTS . |
START_OF_ACTIVITY_INTERRUPTS |
Si es verdadero, el inicio de la actividad interrumpirá la respuesta del modelo (también llamada "interrupción"). La respuesta actual del modelo se cortará en el momento de la interrupción. Este es el comportamiento predeterminado. |
NO_INTERRUPTION |
La respuesta del modelo no se interrumpirá. |
AutomaticActivityDetection
Configura la detección automática de actividad.
Campos | |
---|---|
start_of_speech_sensitivity |
Opcional. Determina la probabilidad de que se detecte la voz. |
end_of_speech_sensitivity |
Opcional. Determina la probabilidad de que haya finalizado la voz detectada. |
prefix_padding_ms |
Opcional. Es la duración requerida de la voz detectada antes de que se confirme el inicio de la voz. Cuanto más bajo sea este valor, más sensible será la detección del inicio de la voz y más corto será el discurso que se puede reconocer. Sin embargo, esto también aumenta la probabilidad de falsos positivos. |
silence_duration_ms |
Opcional. Es la duración requerida de silencio (o audio sin voz) detectado antes de que se confirme el final de la voz. Cuanto mayor sea este valor, más largas pueden ser las pausas de voz sin interrumpir la actividad del usuario, pero esto aumentará la latencia del modelo. |
disabled |
Opcional. Si está habilitada, la entrada de voz y texto detectada se registra como actividad. Si está inhabilitado, el cliente debe enviar indicadores de actividad. |
EndSensitivity
Sensibilidad al final de la voz.
Enums | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
El valor predeterminado es END_SENSITIVITY_LOW. |
END_SENSITIVITY_HIGH |
La detección automática finaliza la voz con más frecuencia. |
END_SENSITIVITY_LOW |
La detección automática finaliza la voz con menos frecuencia. |
StartSensitivity
Inicio de la sensibilidad a la voz.
Enums | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
El valor predeterminado es START_SENSITIVITY_LOW. |
START_SENSITIVITY_HIGH |
La detección automática detectará el inicio de la voz con mayor frecuencia. |
START_SENSITIVITY_LOW |
La detección automática detectará el inicio de la voz con menos frecuencia. |
TurnCoverage
Son opciones sobre qué entrada se incluye en el turno del usuario.
Enums | |
---|---|
TURN_COVERAGE_UNSPECIFIED |
Si no se especifica, el comportamiento predeterminado es TURN_INCLUDES_ALL_INPUT . |
TURN_INCLUDES_ONLY_ACTIVITY |
El turno del usuario solo incluye la actividad desde el último turno, sin incluir la inactividad (p.ej., silencio en la transmisión de audio). |
TURN_INCLUDES_ALL_INPUT |
El turno del usuario incluye todas las entradas en tiempo real desde el último turno, incluida la inactividad (p.ej., silencio en la transmisión de audio). Este es el comportamiento predeterminado. |
UsageMetadata
Metadatos sobre el uso del contenido almacenado en caché.
Campos | |
---|---|
total_token_count |
Es la cantidad total de tokens que consume el contenido almacenado en caché. |
text_count |
Cantidad de caracteres de texto. |
image_count |
Cantidad de imágenes. |
video_duration_seconds |
Es la duración del video en segundos. |
audio_duration_seconds |
Es la duración del audio en segundos. |
GoAway
El servidor no podrá brindar servicio al cliente pronto.
Campos | |
---|---|
time_left |
El tiempo restante antes de que se cierre la conexión se mostrará como ABORTED. El tiempo mínimo que se muestra aquí se especifica de manera diferente junto con los límites de frecuencia de un modelo determinado. |
SessionResumptionUpdate
Actualización del estado de reanudación de la sesión.
Solo se envía si se configuró BidiGenerateContentSetup.session_resumption
.
Campos | |
---|---|
new_handle |
Control nuevo que representa el estado que se puede reanudar. Está vacío si |
resumable |
Es verdadero si la sesión se puede reanudar en este momento. Es posible que no se pueda reanudar la sesión en algunos puntos. En ese caso, enviamos una actualización de new_handle vacía y resumable=false. Un ejemplo de este caso podría ser el modelo que ejecuta llamadas a función o solo las genera. Si se reanuda la sesión (con el token de sesión anterior) en ese estado, se perderán algunos datos. |
last_consumed_client_message_index |
Es el índice del último mensaje que envió el cliente y que se incluye en el estado representado por este SessionResumptionToken. Solo se envía cuando se establece La presencia de este índice permite que los usuarios se vuelvan a conectar de forma transparente y eviten el problema de perder parte de la entrada de audio o video en tiempo real. Si el cliente desea desconectarse temporalmente (por ejemplo, como resultado de recibir GoAway), puede hacerlo sin perder el estado si almacena en búfer los mensajes enviados desde el último No se usará para la "reanudación para restablecer el estado" más adelante. En esos casos, es probable que no se necesiten fotogramas de audio y video parciales. |
¿Qué sigue?
- Obtén más información sobre las llamadas a funciones.
- Consulta la referencia de llamadas a funciones para ver ejemplos.