Referencia de la API Live

La API Live permite interacciones bidireccionales de voz y vídeo con baja latencia con Gemini. Con la API Live, puedes ofrecer a los usuarios finales la experiencia de mantener conversaciones de voz naturales y similares a las humanas, así como la posibilidad de interrumpir las respuestas del modelo mediante comandos de voz. La API Live puede procesar texto, audio y vídeo, y puede proporcionar texto y audio.

Para obtener más información sobre la API Live, consulta API Live.

Funciones

La API Live incluye las siguientes funciones clave:

  • Multimodalidad: el modelo puede ver, oír y hablar.
  • Interacción en tiempo real con baja latencia: el modelo puede proporcionar respuestas rápidas.
  • Memoria de sesión: el modelo conserva la memoria de todas las interacciones de una misma sesión y recuerda la información que ha oído o visto 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 Live está diseñada para la comunicación de servidor a servidor.

En el caso de las aplicaciones web y móviles, te recomendamos que utilices la integración de nuestros partners de Daily.

Modelos admitidos

Empezar

Para probar la API Live, ve a Vertex AI Studio y haz clic en Iniciar sesión.

Live API es una API con estado que usa WebSockets.

En esta sección se muestra un ejemplo de cómo usar la API Live para generar texto a partir de texto con Python 3.9 o versiones posteriores.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa 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=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (Content, HttpOptions, LiveConnectConfig,
                                Modality, Part)

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))
model_id = "gemini-2.0-flash-live-preview-04-09"

async with client.aio.live.connect(
    model=model_id,
    config=LiveConnectConfig(response_modalities=[Modality.TEXT]),
) as session:
    text_input = "Hello? Gemini, are you there?"
    print("> ", text_input, "\n")
    await session.send_client_content(
        turns=Content(role="user", parts=[Part(text=text_input)])
    )

    response = []

    async for message in session.receive():
        if message.text:
            response.append(message.text)

    print("".join(response))
# Example output:
# >  Hello? Gemini, are you there?
# Yes, I'm here. What would you like to talk about?

Guía de integración

En esta sección se describe cómo funciona la integración con la API Live.

Sesiones

Una conexión WebSocket establece una sesión entre el cliente y el servidor de Gemini.

Después de que un cliente inicie una nueva conexión, la sesión puede intercambiar mensajes con el servidor para hacer lo siguiente:

  • Envía texto, audio o vídeo al servidor de Gemini.
  • Recibir solicitudes de audio, texto o llamadas a funciones 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 admitidos

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 de contenido incremental de la conversación actual enviada por el cliente.
BidiGenerateContentRealtimeInput Entrada de audio o vídeo en tiempo real
BidiGenerateContentToolResponse Respuesta a un código de error ToolCallMessage recibido del servidor

Recibir mensajes

Para recibir mensajes de Gemini, escucha el evento "message" de WebSocket y, a continuación, analiza el resultado según la definición de los mensajes del servidor admitidos.

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 de servidor admitidos

Consulta los mensajes del servidor admitidos en la siguiente tabla:

Mensaje Descripción
BidiGenerateContentSetupComplete Un mensaje BidiGenerateContentSetup del cliente, enviado cuando se completa la configuración
BidiGenerateContentServerContent Contenido generado por el modelo en respuesta a un mensaje del cliente
BidiGenerateContentToolCall Solicitud para que el cliente ejecute las llamadas a funciones y devuelva las respuestas con los IDs correspondientes
BidiGenerateContentToolCallCancellation Se envía cuando se cancela una llamada a una función porque el usuario interrumpe la salida del modelo.
UsageMetadata Informe del número de tokens que ha usado la sesión hasta el momento.
GoAway Una señal de que la conexión actual se terminará pronto.
SessionResumptionUpdate Un punto de control de la sesión que se puede reanudar
BidiGenerateContentTranscription Una transcripción de lo que dice el usuario o el modelo

Actualizaciones de contenido incrementales

Usa las actualizaciones incrementales para enviar texto, establecer el contexto de la sesión o restaurarlo. En contextos breves, puedes enviar interacciones paso a paso para representar la secuencia exacta de eventos. En contextos más largos, se recomienda proporcionar un resumen de un solo mensaje para liberar la ventana de contexto de las interacciones posteriores.

Consulta el siguiente mensaje de contexto de ejemplo:

{
  "clientContent": {
    "turns": [
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"user"
      },
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"model"
      }
    ],
    "turnComplete": true
  }
}

Ten en cuenta que, aunque las partes del contenido pueden ser de tipo functionResponse, BidiGenerateContentClientContent no se debe usar para proporcionar una respuesta a las llamadas a funciones emitidas por el modelo. En su lugar, se debe usar BidiGenerateContentToolResponse. BidiGenerateContentClientContent solo se debe usar para establecer el contexto anterior o proporcionar texto a la conversación.

Streaming de audio y vídeo

Ejecución de código

Para obtener más información sobre la ejecución de código, consulta Ejecución de código.

Llamada de funciones

Todas las funciones deben declararse al inicio de la sesión enviando tool definitions como parte del mensaje BidiGenerateContentSetup.

Las funciones se definen mediante JSON, concretamente con un subconjunto selecto del formato de esquema OpenAPI. Una sola declaración de función puede incluir los siguientes parámetros:

  • name (cadena): identificador único de la función en la llamada a la API.

  • description (cadena): una explicación detallada del propósito y las funciones.

  • parameters (objeto): define los datos de entrada que necesita la función.

    • type (cadena): especifica el tipo de datos general, como object.

    • properties (objeto): enumera los parámetros individuales, cada uno con lo siguiente:

      • type (cadena): el tipo de datos del parámetro, como cadena, entero o booleano.
      • description (cadena): una explicación clara del propósito del parámetro y del formato esperado.
    • required (matriz): matriz de cadenas que contiene los nombres de los parámetros obligatorios para que la función opere.

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 tutorial sobre llamadas de función.

A partir de una sola petició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 pruebas y genera mensajes BidiGenerateContentToolCall posteriores. La ejecución se pausa hasta que estén disponibles los resultados de cada llamada de función, lo que asegura el procesamiento secuencial.

El cliente debe responder con BidiGenerateContentToolResponse.

Para obtener más información, consulta el artículo Introducción a las llamadas a funciones.

Formatos de audio

Consulta la lista de formatos de audio admitidos.

Instrucciones del sistema

Puedes proporcionar instrucciones del sistema para controlar mejor la salida del modelo y especificar el tono y el sentimiento de las respuestas de audio.

Las instrucciones del sistema se añaden a la petición antes de que empiece la interacción y se mantienen activas durante toda la sesión.

Las instrucciones del sistema solo se pueden definir al principio de una sesión, inmediatamente después de la conexión inicial. Para proporcionar más información al modelo durante la sesión, usa actualizaciones de contenido incrementales.

Interrupciones

Los usuarios pueden interrumpir la respuesta del modelo en cualquier momento. Cuando la detección de actividad de voz (VAD) detecta una interrupción, la generación en curso se cancela y se descarta. En el historial de la sesión solo se conserva la información que ya se ha enviado al cliente. A continuación, el servidor envía un mensaje BidiGenerateContentServerContent para informar de la interrupción.

Además, el servidor de Gemini descarta las llamadas a funciones pendientes y envía un mensaje BidiGenerateContentServerContent con los IDs de las llamadas canceladas.

Voces

Para especificar una voz, define voiceName en el 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"
    }
  }
}

Para ver la lista de voces admitidas, consulta el artículo Cambiar los ajustes de voz e idioma.

Limitaciones

Ten en cuenta las siguientes limitaciones de la API Live y de Gemini 2.0 al planificar tu proyecto.

Autenticación del cliente

La API Live solo proporciona autenticación de servidor a servidor y no se recomienda para el uso directo por parte de los clientes. La entrada del cliente debe enrutarse a través de un servidor de aplicaciones intermedio para que la autenticación con la API Live sea segura.

Duración máxima de la sesión

La duración máxima predeterminada de una sesión de conversación es de 10 minutos. Para obtener más información, consulta Duración de la sesión.

Detección de actividad de voz (VAD)

De forma predeterminada, el modelo realiza automáticamente la detección de actividad de voz (VAD) en un flujo de entrada de audio continuo. VAD se puede configurar con el campo RealtimeInputConfig.AutomaticActivityDetection del mensaje de configuración.

Cuando el flujo de audio se pausa durante más de un segundo (por ejemplo, cuando el usuario desactiva el micrófono), se envía un evento AudioStreamEnd para vaciar el audio almacenado en caché. El cliente puede reanudar el envío de datos de audio en cualquier momento.

También se puede desactivar la detección automática de voz asignando el valor true a RealtimeInputConfig.AutomaticActivityDetection.disabled en el mensaje de configuración. En esta configuración, el cliente es el responsable de detectar la voz del usuario y enviar mensajes ActivityStart y ActivityEnd en los momentos oportunos. No se envía ningún AudioStreamEnd en esta configuración. En su lugar, cualquier interrupción del flujo se marca con un mensaje ActivityEnd.

Limitaciones adicionales

No se admite la finalización manual.

Las entradas y salidas de audio afectan negativamente a la capacidad del modelo para usar las llamadas a funciones.

Recuento de tokens

No se admite el recuento de tokens.

Límites de frecuencia

Se aplican los siguientes límites de frecuencia:

  • 5000 sesiones simultáneas por clave de API
  • 4 millones de tokens por minuto

Mensajes y eventos

BidiGenerateContentClientContent

Actualización incremental de la conversación actual enviada por el cliente. Todo el contenido que se incluye aquí se añade incondicionalmente al historial de la conversación y se usa como parte de la petición al modelo para generar contenido.

Si aparece un mensaje aquí, se interrumpirá la generación del modelo.

Campos
turns[]

Content

Opcional. El contenido que se añade a la conversación actual con el modelo.

En el caso de las consultas de un solo turno, se trata de una sola instancia. En el caso de las consultas de varias interacciones, se trata de un campo repetido que contiene el historial de la conversación y la última solicitud.

turn_complete

bool

Opcional. Si es true, indica que la generación de contenido del servidor debe empezar con la petición acumulada. De lo contrario, el servidor esperará a recibir más mensajes antes de iniciar la generación.

BidiGenerateContentRealtimeInput

Entrada de usuario que se envía en tiempo real.

Se diferencia de ClientContentUpdate en varios aspectos:

  • Se puede enviar de forma continua sin interrumpir la generación del modelo.
  • Si es necesario combinar datos intercalados entre ClientContentUpdate y RealtimeUpdate, el servidor intentará optimizar la respuesta, pero no hay garantías.
  • No se especifica explícitamente el final del turno, sino que se deriva de la actividad del usuario (por ejemplo, el final de la conversación).
  • Incluso antes de que termine el turno, los datos se procesan de forma incremental para optimizar el inicio rápido de la respuesta del modelo.
  • Siempre se considera la entrada del usuario (no se puede usar para rellenar el historial de conversaciones).
Campos
media_chunks[]

Blob

Opcional. Datos de bytes insertados para la entrada multimedia.

activity_start

ActivityStart

Opcional. Marca el inicio de la actividad del usuario. Solo se puede enviar si la detección automática de actividad (es decir, del lado del servidor) está inhabilitada.

activity_end

ActivityEnd

Opcional. Marca el final de la actividad del usuario. Solo se puede enviar si la detección automática de actividad (es decir, del lado 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 definir uno de los campos de este mensaje a la vez. Marca el inicio de la actividad del usuario.

BidiGenerateContentServerContent

Actualización incremental del servidor generada por 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 elegir almacenarla en búfer y reproducirla en tiempo real.

Campos
turn_complete

bool

Solo de salida. Si es true, indica que el modelo ha terminado de generarse. La generación solo se iniciará en respuesta a mensajes adicionales del cliente. Se puede definir junto con content para indicar que content es el último elemento del turno.

interrupted

bool

Solo de salida. Si es true, indica que un mensaje del cliente ha interrumpido la generación del modelo actual. Si el cliente está reproduciendo el contenido en tiempo real, es una buena señal para detenerse y vaciar la cola actual. Si el cliente está reproduciendo el contenido en tiempo real, es una buena señal para detenerse y vaciar la cola de reproducción actual.

generation_complete

bool

Solo de salida. Si es true, indica que el modelo ha terminado de generarse.

Si se interrumpe el modelo mientras genera contenido, no habrá ningún mensaje "generation_complete" en el turno interrumpido, sino que se pasará por "interrupted > turn_complete".

Cuando el modelo asume la reproducción en tiempo real, habrá un retraso entre generation_complete y turn_complete debido a que el modelo espera a que finalice la reproducción.

grounding_metadata

GroundingMetadata

Solo de salida. Los metadatos especifican las fuentes utilizadas para fundamentar el contenido generado.

input_transcription

Transcription

Opcional. Transcripción de entrada. 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

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

Content

Solo de salida. El contenido que ha generado el modelo como parte de la conversación actual con el usuario.

Transcripción

Mensaje de transcripción de audio.

Campos
text

string

Opcional. Texto de la transcripción.

finished

bool

Opcional. El valor booleano indica el final de la transcripción.

BidiGenerateContentSetup

Mensaje que se enviará en el primer mensaje del cliente (y solo en ese). Contiene la configuración que se aplicará durante la sesión de streaming.

Los clientes deben esperar un mensaje BidiGenerateContentSetupComplete antes de enviar mensajes adicionales.

Campos
model

string

Obligatorio. Nombre completo del modelo de editor.

Formato del modelo de editor: projects/{project}/locations/{location}/publishers/\*/models/\*

generation_config

GenerationConfig

Opcional. Configuración de la generación.

No se admiten los siguientes campos:

  • response_logprobs
  • response_mime_type
  • logprobs
  • response_schema
  • stop_sequence
  • routing_config
  • audio_timestamp
system_instruction

Content

Opcional. El usuario ha proporcionado instrucciones del sistema al modelo. Nota: Solo se debe usar texto en las partes y el contenido de cada parte se incluirá en un párrafo independiente.

tools[]

Tool

Opcional. Una lista de Tools que el modelo puede usar para generar la siguiente respuesta.

Una Tool es un fragmento de código que permite al sistema interactuar con sistemas externos para realizar una acción o un conjunto de acciones fuera del conocimiento y del ámbito del modelo.

session_resumption

SessionResumptionConfig

Opcional. Configura el mecanismo de reanudación de sesiones. Si se incluye, el servidor enviará mensajes SessionResumptionUpdate periódicos al cliente.

context_window_compression

ContextWindowCompressionConfig

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 indicada.

realtime_input_config

RealtimeInputConfig

Opcional. Configura la gestión de la entrada en tiempo real.

input_audio_transcription

AudioTranscriptionConfig

Opcional. La transcripción de la entrada se corresponde con el idioma del audio de entrada.

output_audio_transcription

AudioTranscriptionConfig

Opcional. La transcripción de la salida se corresponde con el código de idioma especificado para el audio de salida.

AudioTranscriptionConfig

Este tipo no tiene campos.

Configuración de la transcripción de audio.

BidiGenerateContentSetupComplete

Este tipo no tiene campos.

Se envía en respuesta a un mensaje de BidiGenerateContentSetup del cliente.

BidiGenerateContentToolCall

Solicita al cliente que ejecute el function_calls y devuelva las respuestas con los ids correspondientes.

Campos
function_calls[]

FunctionCall

Solo de salida. Es la llamada a la función que se va a ejecutar.

BidiGenerateContentToolCallCancellation

Notificación para el cliente de que no se debería haber ejecutado un ToolCallMessage emitido anteriormente con los ids especificados y que se debería cancelar. Si se han producido efectos secundarios en esas llamadas a herramientas, es posible que los clientes intenten deshacerlas. Este mensaje solo se produce cuando los clientes interrumpen los turnos del servidor.

Campos
ids[]

string

Solo de salida. Los IDs de las llamadas a herramientas que se van a cancelar.

BidiGenerateContentToolResponse

Respuesta generada por el cliente a un ToolCall recibido del servidor. Los objetos FunctionResponse individuales se emparejan con los objetos FunctionCall correspondientes mediante el campo id.

Ten en cuenta que, en las APIs GenerateContent unarias y de streaming del servidor, las llamadas a funciones se realizan intercambiando las partes Content, mientras que, en las APIs GenerateContent bidireccionales, las llamadas a funciones se realizan a través de este conjunto de mensajes específico.

Campos
function_responses[]

FunctionResponse

Opcional. La respuesta a las llamadas de funciones.

RealtimeInputConfig

Configura el comportamiento de la entrada en tiempo real en BidiGenerateContent.

Campos
automatic_activity_detection

AutomaticActivityDetection

Opcional. Si no se define, la detección automática de actividad se habilita de forma predeterminada. Si la detección automática de voz está inhabilitada, el cliente debe enviar señales de actividad.

activity_handling

ActivityHandling

Opcional. Define el efecto que tiene la actividad.

turn_coverage

TurnCoverage

Opcional. Define qué entrada se incluye en el turno del usuario.

ActivityHandling

Las diferentes formas de gestionar la actividad de los usuarios.

Enumeraciones
ACTIVITY_HANDLING_UNSPECIFIED Si no se especifica, el comportamiento predeterminado es START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Si es true, el inicio de la actividad interrumpirá la respuesta del modelo (también llamada "interrupción"). La respuesta actual del modelo se interrumpirá 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 la actividad.

Campos
start_of_speech_sensitivity

StartSensitivity

Opcional. Determina la probabilidad de que se detecte la voz.

end_of_speech_sensitivity

EndSensitivity

Opcional. Determina la probabilidad de que se haya terminado el discurso detectado.

prefix_padding_ms

int32

Opcional. Duración necesaria del habla detectada antes de que se confirme el inicio del habla. Cuanto menor sea este valor, más sensible será la detección del inicio del discurso y más corto podrá ser el discurso reconocido. Sin embargo, esto también aumenta la probabilidad de que se produzcan falsos positivos.

silence_duration_ms

int32

Opcional. Duración necesaria del silencio (o de la ausencia de voz) detectado antes de que se confirme el final de la voz. Cuanto mayor sea este valor, más largos podrán ser los silencios sin interrumpir la actividad del usuario, pero aumentará la latencia del modelo.

disabled

bool

Opcional. Si está habilitada, la voz detectada y la entrada de texto se contabilizan como actividad. Si está inhabilitado, el cliente debe enviar señales de actividad.

EndSensitivity

Sensibilidad de la voz.

Enumeraciones
END_SENSITIVITY_UNSPECIFIED El valor predeterminado es END_SENSITIVITY_LOW.
END_SENSITIVITY_HIGH La detección automática finaliza la conversación con más frecuencia.
END_SENSITIVITY_LOW La detección automática termina la conversación con menos frecuencia.

StartSensitivity

Inicio de la sensibilidad del habla.

Enumeraciones
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 más frecuencia.
START_SENSITIVITY_LOW La detección automática detectará el inicio del discurso con menos frecuencia.

TurnCoverage

Opciones sobre qué entrada se incluye en el turno del usuario.

Enumeraciones
TURN_COVERAGE_UNSPECIFIED Si no se especifica, el comportamiento predeterminado es TURN_INCLUDES_ALL_INPUT.
TURN_INCLUDES_ONLY_ACTIVITY El turno de los usuarios solo incluye la actividad desde el último turno, sin incluir la inactividad (por ejemplo, el silencio en el flujo de audio).
TURN_INCLUDES_ALL_INPUT El turno del usuario incluye todas las entradas en tiempo real desde el último turno, incluida la inactividad (por ejemplo, el silencio en el flujo de audio). Este es el comportamiento predeterminado.

UsageMetadata

Metadatos sobre el uso del contenido almacenado en caché.

Campos
total_token_count

int32

Número total de tokens que consume el contenido almacenado en caché.

text_count

int32

Número de caracteres de texto.

image_count

int32

Número de imágenes.

video_duration_seconds

int32

Duración del vídeo en segundos.

audio_duration_seconds

int32

Duración del audio en segundos.

GoAway

El servidor no podrá atender al cliente en breve.

Campos
time_left

Duration

El tiempo restante antes de que se termine la conexión se mostrará como ABORTED. El tiempo mínimo que se devuelve aquí se especifica de forma diferente junto con los límites de frecuencia de un modelo concreto.

SessionResumptionUpdate

Actualización del estado de reanudación de la sesión.

Solo se envía si se ha definido BidiGenerateContentSetup.session_resumption.

Campos
new_handle

string

Nuevo identificador que representa un estado que se puede reanudar. Cadena vacía si resumable=false.

resumable

bool

Es true si la sesión se puede reanudar en este punto.

Es posible que no se pueda reanudar la sesión en algunos momentos. En ese caso, enviamos una actualización con new_handle vacío y resumable=false. Por ejemplo, un modelo que ejecuta llamadas a funciones o que solo genera contenido. Si se reanuda la sesión (con el token de la sesión anterior) en ese estado, se perderán algunos datos.

last_consumed_client_message_index

int64

Índice del último mensaje enviado por el cliente que se incluye en el estado representado por este SessionResumptionToken. Solo se envía cuando se define SessionResumptionConfig.transparent.

La presencia de este índice permite a los usuarios volver a conectarse de forma transparente y evitar que se pierda parte de la entrada de audio o vídeo en tiempo real. Si el cliente quiere desconectarse temporalmente (por ejemplo, como resultado de recibir GoAway), puede hacerlo sin perder el estado almacenando en búfer los mensajes enviados desde el último SessionResmumptionTokenUpdate. Este campo les permitirá limitar el almacenamiento en búfer (evitar que se guarden todas las solicitudes en la RAM).

No se usará para "reanudar y restaurar el estado" más adelante. En esos casos, es probable que no se necesiten fotogramas de audio y vídeo parciales.

Siguientes pasos