Referencia de la API publicada

La API de Live permite interacciones de voz y video bidireccionales de baja latencia con Gemini. Con la API de Live, puedes brindar a los usuarios finales la experiencia de conversaciones naturales con voces similares a las humanas y la capacidad de interrumpir las respuestas del modelo con comandos de voz. La API de Live puede procesar entradas de texto, audio y video, y proporcionar salidas de texto y audio.

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

Funciones

La API de Live incluye las siguientes capacidades 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 retiene la memoria de todas las interacciones dentro de una sola sesión y recuerda la información que 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 externos y fuentes de datos.

La API de Live está diseñada para la comunicación de servidor a servidor.

Para las apps web y para dispositivos móviles, recomendamos usar la integración de nuestros socios de Daily.

Modelos compatibles

Comenzar

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

La API de Live es una API con estado que usa WebSockets.

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

Python

Instalar

pip install --upgrade google-genai

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

Establece 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 de Live.

Sesiones

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

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

  • Envía texto, audio o video 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. La configuración de una sesión incluye el modelo, los parámetros de generación, las instrucciones del sistema y las herramientas.

Consulta el siguiente ejemplo de configuración:


{
  "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 del cliente admitidos en la siguiente tabla:

Mensaje Descripción
BidiGenerateContentSetup Es la configuración de la sesión que se enviará en el primer mensaje.
BidiGenerateContentClientContent Actualización de contenido incremental 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 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 del servidor admitidos

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 Es el contenido que genera el modelo en respuesta a un mensaje del cliente.
BidiGenerateContentToolCall Solicita al cliente que 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 de la cantidad de tokens que se usaron en la sesión hasta el momento
GoAway Es un indicador de que la conexión actual se cerrará pronto.
SessionResumptionUpdate Un punto de control de sesión que se puede reanudar
BidiGenerateContentTranscription Transcripción del discurso 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. En el caso de contextos breves, 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 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 contexto previo o proporcionar entrada de texto a la conversación.

Transmisión de audio y video

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 a función

Todas las funciones se deben declarar al comienzo de la sesión enviando definiciones de herramientas como parte del mensaje BidiGenerateContentSetup.

Las funciones se definen con JSON, específicamente con un subconjunto selecto 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 integral 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): Enumera 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 (matriz): Es una matriz de cadenas que enumera 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 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 de BidiGenerateContentToolCall posteriores. La ejecución se detiene hasta que los resultados de cada llamada a la 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

Consulta la lista de formatos de audio compatibles.

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 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, se cancela y descarta la generación en curso. En el historial de la sesión, solo se conserva la información que ya se envió al cliente. Luego, el servidor envía un mensaje BidiGenerateContentServerContent para informar la interrupción.

Además, el servidor de Gemini descarta cualquier llamada a función pendiente y envía un mensaje BidiGenerateContentServerContent con los IDs de las llamadas canceladas.

Voces

Para especificar una voz, configura 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"
    }
  }
}

Para ver la lista de voces compatibles, consulta Cómo cambiar la configuración de voz y de idioma.

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 de Live solo proporciona autenticación de servidor a servidor y no se recomienda para el uso directo del cliente. La entrada del cliente debe enrutarse a través de un servidor de aplicaciones intermedio para la autenticación segura con la API de Live.

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 una transmisión de entrada de audio continua. El 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 apaga 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.

Como alternativa, puedes desactivar el VAD automático configurando RealtimeInputConfig.AutomaticActivityDetection.disabled en true en el mensaje de configuración. En esta configuración, el cliente es responsable de detectar el habla del usuario y enviar mensajes de 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 el punto final manual.

Las entradas y salidas de audio afectan negativamente la capacidad del modelo para usar la llamada 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:

  • 5,000 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 que se incluye aquí se agrega de forma incondicional al historial de conversaciones y se usa como parte de la instrucción para que el modelo genere contenido.

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

Campos
turns[]

Content

Opcional. Es el contenido que se agrega 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

bool

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 comenzar la generación.

BidiGenerateContentRealtimeInput

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

Se diferencia de ClientContentUpdate en los siguientes aspectos:

  • Se puede enviar de forma continua sin interrumpir la generación del modelo.
  • Si es necesario combinar datos intercalados en ClientContentUpdate y RealtimeUpdate, el servidor intenta optimizar la mejor respuesta, pero no hay garantías.
  • El final del turno no se especifica de forma explícita, sino que se deriva de la actividad del usuario (por ejemplo, el final del discurso).
  • 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 supone que es la entrada del usuario (no se puede usar para completar el historial de conversación).
Campos
media_chunks[]

Blob

Opcional. Son los datos de bytes intercalados para la entrada de medios.

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 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 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 establecer uno de los campos de este mensaje a la vez. Marca el inicio de la actividad del usuario.

BidiGenerateContentServerContent

Es la 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, pero no en tiempo real. Los clientes pueden optar por almacenarlo en búfer y reproducirlo en tiempo real.

Campos
turn_complete

bool

Solo salida. Si es verdadero, indica que el modelo terminó de generar contenido. La generación solo comenzará en respuesta a mensajes adicionales del cliente. Se puede configurar junto con content, lo que indica que content es el último en el turno.

interrupted

bool

Solo salida. Si es verdadero, indica que un mensaje del cliente interrumpió la generación actual del modelo. Si el cliente reproduce el contenido en tiempo real, esta es una buena señal para detener y vaciar la cola actual. Si el cliente reproduce el contenido en tiempo real, esta es una buena señal para detener y vaciar la cola de reproducción actual.

generation_complete

bool

Solo salida. Si es verdadero, indica que el modelo terminó de generar contenido.

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

Cuando el modelo supone que la reproducción es en tiempo real, habrá una demora entre generation_complete y turn_complete causada por la espera del modelo a que finalice la reproducción.

grounding_metadata

GroundingMetadata

Solo salida. Los metadatos especifican las fuentes que se usan 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 salida. Es el contenido que generó 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

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 de BidiGenerateContentSetupComplete antes de enviar mensajes adicionales.

Campos
model

string

Obligatorio. Es el nombre completamente calificado del modelo del editor.

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

generation_config

GenerationConfig

Opcional. Es la configuración de 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. 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[]

Tool

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

Una Tool es un fragmento de código que permite que el sistema interactúe con sistemas externos para realizar una acción, o un conjunto de acciones, fuera del conocimiento y del alcance del modelo.

session_resumption

SessionResumptionConfig

Opcional. Configura el mecanismo de reanudación de sesión. Si se incluye, el servidor enviará mensajes de 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 quepa en la longitud determinada.

realtime_input_config

RealtimeInputConfig

Opcional. Configura el procesamiento de la entrada en tiempo real.

input_audio_transcription

AudioTranscriptionConfig

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

output_audio_transcription

AudioTranscriptionConfig

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.

Es 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

Solicitud para que el cliente ejecute el function_calls y muestre las respuestas con los ids coincidentes.

Campos
function_calls[]

FunctionCall

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

BidiGenerateContentToolCallCancellation

Notificación para el cliente de que no se debería haber ejecutado un ToolCallMessage emitido anteriormente con los id especificados y que se debería cancelar. Si hubo efectos secundarios en esas llamadas a herramientas, los clientes pueden intentar deshacerlas. Este mensaje solo aparece en los casos en que los clientes interrumpen los turnos del servidor.

Campos
ids[]

string

Solo salida. Son los IDs de las llamadas a herramientas que se cancelarán.

BidiGenerateContentToolResponse

Es la respuesta generada por el cliente a un ToolCall recibido del servidor. Los objetos FunctionResponse individuales se correlacionan con los objetos FunctionCall respectivos a través del campo id.

Ten en cuenta que, en las APIs de GenerateContent de transmisión por servidor y unarias, las llamadas a funciones se realizan intercambiando las partes de Content, mientras que, en las APIs de GenerateContent bidireccionales, las llamadas a funciones se realizan a través de este conjunto de mensajes dedicados.

Campos
function_responses[]

FunctionResponse

Opcional. Es la respuesta a las llamadas a funciones.

RealtimeInputConfig

Configura el comportamiento de entrada en tiempo real en BidiGenerateContent.

Campos
automatic_activity_detection

AutomaticActivityDetection

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

activity_handling

ActivityHandling

Opcional. Define qué efecto tiene la actividad.

turn_coverage

TurnCoverage

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 No se interrumpirá la respuesta del modelo.

AutomaticActivityDetection

Configura la detección automática de actividad.

Campos
start_of_speech_sensitivity

StartSensitivity

Opcional. Determina la probabilidad de que se detecte el habla.

end_of_speech_sensitivity

EndSensitivity

Opcional. Determina la probabilidad de que haya finalizado el habla detectada.

prefix_padding_ms

int32

Opcional. Es la duración requerida del habla detectada antes de que se confirme el inicio del habla. Cuanto más bajo sea este valor, más sensible será la detección del inicio del habla y más corto podrá ser el habla reconocida. Sin embargo, esto también aumenta la probabilidad de falsos positivos.

silence_duration_ms

int32

Opcional. Es la duración requerida del silencio detectado (o audio sin voz) antes de que se confirme el final del discurso. Cuanto mayor sea este valor, más largos podrán ser los espacios de silencio sin interrumpir la actividad del usuario, pero esto aumentará la latencia del modelo.

disabled

bool

Opcional. Si está habilitada, la entrada de voz y texto detectada se considera actividad. Si está inhabilitado, el cliente debe enviar indicadores de actividad.

EndSensitivity

Sensibilidad cuando se deja de escuchar una voz.

Enums
END_SENSITIVITY_UNSPECIFIED El valor predeterminado es END_SENSITIVITY_LOW.
END_SENSITIVITY_HIGH La detección automática finaliza el habla con mayor frecuencia.
END_SENSITIVITY_LOW La detección automática finaliza el discurso con menos frecuencia.

StartSensitivity

Sensibilidad cuando comienza a escucharse una voz

Enums
START_SENSITIVITY_UNSPECIFIED El valor predeterminado es START_SENSITIVITY_LOW.
START_SENSITIVITY_HIGH La detección automática detectará el inicio del habla con mayor frecuencia.
START_SENSITIVITY_LOW La detección automática detectará el inicio del habla con menor frecuencia.

TurnCoverage

Son las 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 el flujo de audio). Este es el comportamiento predeterminado.

UsageMetadata

Son metadatos sobre el uso del contenido almacenado en caché.

Campos
total_token_count

int32

Es la cantidad total de tokens que consume el contenido almacenado en caché.

text_count

int32

Cantidad de caracteres de texto.

image_count

int32

Es la cantidad de imágenes.

video_duration_seconds

int32

Duración del video en segundos.

audio_duration_seconds

int32

Es la duración del audio en segundos.

GoAway

El servidor no podrá atender al cliente pronto.

Campos
time_left

Duration

Es el tiempo restante antes de que la conexión finalice como ABORTED. El tiempo mínimo que se devuelve aquí se especifica de manera diferente junto con los límites de frecuencia para 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

string

Es el nuevo identificador que representa el estado que se puede reanudar. Estará vacío si resumable=false.

resumable

bool

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

Es posible que no se pueda reanudar la sesión en algunos puntos. En ese caso, enviamos una actualización con un nuevo identificador vacío y resumable=false. Un ejemplo de este caso podría ser un modelo que ejecuta llamadas a función o simplemente genera texto. 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

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 establece SessionResumptionConfig.transparent.

La presencia de este índice permite que los usuarios se vuelvan a conectar de forma transparente y eviten el problema de perder parte del audio o video en tiempo real. Si el cliente desea desconectarse temporalmente (por ejemplo, como resultado de recibir un 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 mantener todas las solicitudes en la RAM).

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

¿Qué sigue?