Live API - WebSockets API reference

La API de Live es una API con estado que usa WebSockets. En esta sección, encontrarás detalles adicionales sobre la API de WebSockets.

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.
  • Recibe solicitudes de audio, texto o llamadas a funciones del servidor de Gemini.

Conexión de WebSocket

Para iniciar una sesión, conéctate a este extremo de WebSocket:

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent

Configuración de la sesión

El mensaje inicial que se envía después de establecer la conexión de WebSocket establece la configuración de la sesión, que incluye el modelo, los parámetros de generación, las instrucciones del sistema y las herramientas.

No puedes actualizar la configuración mientras la conexión esté abierta. Sin embargo, puedes cambiar los parámetros de configuración, excepto el modelo, cuando pausas y reanudas la sesión a través del mecanismo de reanudación de la sesión.

Consulta el siguiente ejemplo de configuración. Ten en cuenta que el uso de mayúsculas y minúsculas en los nombres de los SDK puede variar. Puedes consultar las opciones de configuración del SDK de Python aquí.


{
  "model": string,
  "generationConfig": {
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "temperature": number,
    "topP": number,
    "topK": integer,
    "presencePenalty": number,
    "frequencyPenalty": number,
    "responseModalities": [string],
    "speechConfig": object,
    "mediaResolution": object
  },
  "systemInstruction": string,
  "tools": [object]
}

Para obtener más información sobre el campo de la API, consulta generationConfig.

Enviar mensajes

Para intercambiar mensajes a través de la conexión WebSocket, 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, video o texto 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:

async with client.aio.live.connect(model='...', config=config) as session:
    await session.send(input='Hello world!', end_of_turn=True)
    async for message in session.receive():
        print(message)

Los mensajes del servidor pueden tener un campo usageMetadata, pero, de lo contrario, incluirán exactamente uno de los otros campos del mensaje BidiGenerateContentServerMessage. (La unión messageType no se expresa en JSON, por lo que el campo aparecerá en el nivel superior del mensaje).

Mensajes y eventos

ActivityEnd

Este tipo no tiene campos.

Marca el final de la actividad 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.

ActivityStart

Este tipo no tiene campos.

Marca el inicio de la actividad del usuario.

AudioTranscriptionConfig

Este tipo no tiene campos.

Es la configuración de la transcripción de audio.

AutomaticActivityDetection

Configura la detección automática de actividad.

Campos
disabled

bool

Opcional. Si está habilitado (configuración predeterminada), la voz detectada y la entrada de texto se consideran actividad. Si está inhabilitado, el cliente debe enviar indicadores de actividad.

startOfSpeechSensitivity

StartSensitivity

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

prefixPaddingMs

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 se podrá reconocer el habla más breve. Sin embargo, esto también aumenta la probabilidad de falsos positivos.

endOfSpeechSensitivity

EndSensitivity

Opcional. Determina la probabilidad de que haya finalizado el discurso detectado.

silenceDurationMs

int32

Opcional. Es la duración requerida del audio sin voz detectado (p.ej., silencio) 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.

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 conversación 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.

turnComplete

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 espera mensajes adicionales antes de comenzar la generación.

BidiGenerateContentRealtimeInput

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

Las diferentes modalidades (audio, video y texto) se controlan como transmisiones simultáneas. No se garantiza el orden entre estos flujos.

Se diferencia de BidiGenerateContentClientContent en los siguientes aspectos:

  • Se puede enviar de forma continua sin interrumpir la generación del modelo.
  • Si es necesario combinar datos intercalados en BidiGenerateContentClientContent y BidiGenerateContentRealtimeInput, el servidor intentará optimizar la mejor 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 del discurso).
  • Incluso antes de que finalice el turno, los datos se procesan de forma incremental para optimizar el inicio rápido de la respuesta del modelo.
Campos
mediaChunks[]

Blob

Opcional. Son los datos de bytes intercalados para la entrada de medios. No se admiten varios mediaChunks, se ignorarán todos, excepto el primero.

OBSOLETO: En su lugar, usa audio, video o text.

audio

Blob

Opcional. Estos forman el flujo de entrada de audio en tiempo real.

video

Blob

Opcional. Estos forman el flujo de entrada de video en tiempo real.

activityStart

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.

activityEnd

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.

audioStreamEnd

bool

Opcional. Indica que finalizó la transmisión de audio, p.ej., porque se apagó el micrófono.

Solo se debe enviar cuando la detección automática de actividad está habilitada (que es la configuración predeterminada).

El cliente puede reabrir la transmisión enviando un mensaje de audio.

text

string

Opcional. Estos forman el flujo de entrada de texto en tiempo real.

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
generationComplete

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.

turnComplete

bool

Solo salida. Si es verdadero, indica que el modelo completó su turno. La generación solo comenzará en respuesta a mensajes adicionales del cliente.

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 de reproducción actual.

groundingMetadata

GroundingMetadata

Solo salida. Son los metadatos de fundamentación del contenido generado.

inputTranscription

BidiGenerateContentTranscription

Solo salida. Es la transcripción del audio de entrada. La transcripción se envía de forma independiente de los otros mensajes del servidor y no hay un orden garantizado.

outputTranscription

BidiGenerateContentTranscription

Solo salida. Genera la transcripción de audio. La transcripción se envía de forma independiente de los otros mensajes del servidor y no hay un orden garantizado, en particular, no entre serverContent y este outputTranscription.

urlContextMetadata

UrlContextMetadata

modelTurn

Content

Solo salida. Es el contenido que generó el modelo como parte de la conversación actual con el usuario.

BidiGenerateContentServerMessage

Es el mensaje de respuesta para la llamada a BidiGenerateContent.

Campos
usageMetadata

UsageMetadata

Solo salida. Son los metadatos de uso sobre las respuestas.

Campo de unión messageType. Es el tipo de mensaje. messageType puede ser solo uno de los parámetros siguientes:
setupComplete

BidiGenerateContentSetupComplete

Solo salida. Se envía en respuesta a un mensaje BidiGenerateContentSetup del cliente cuando se completa la configuración.

serverContent

BidiGenerateContentServerContent

Solo salida. Es el contenido que genera el modelo en respuesta a los mensajes del cliente.

toolCall

BidiGenerateContentToolCall

Solo salida. Solicitud para que el cliente ejecute el functionCalls y muestre las respuestas con los ids coincidentes.

toolCallCancellation

BidiGenerateContentToolCallCancellation

Solo salida. Notificación para el cliente de que se debe cancelar un ToolCallMessage emitido anteriormente con los id especificados.

goAway

GoAway

Solo salida. Un aviso que indica que el servidor se desconectará pronto.

sessionResumptionUpdate

SessionResumptionUpdate

Solo salida. Es la actualización del estado de reanudación de la sesión.

BidiGenerateContentSetup

Es el mensaje que se enviará en el primer BidiGenerateContentClientMessage (y solo en el primero). Contiene la configuración que se aplicará durante la RPC de transmisión.

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

Campos
model

string

Obligatorio. Es el nombre del recurso del modelo. Este valor sirve como ID para que lo use el modelo.

Formato: models/{model}

generationConfig

GenerationConfig

Opcional. Es la configuración de generación.

Los siguientes campos no son compatibles:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • stopSequence
  • routingConfig
  • audioTimestamp
systemInstruction

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.

realtimeInputConfig

RealtimeInputConfig

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

sessionResumption

SessionResumptionConfig

Opcional. Configura el mecanismo de reanudación de sesión.

Si se incluye, el servidor enviará mensajes SessionResumptionUpdate.

contextWindowCompression

ContextWindowCompressionConfig

Opcional. Configura un mecanismo de compresión de la ventana de contexto.

Si se incluye, el servidor reducirá automáticamente el tamaño del contexto cuando supere la longitud configurada.

inputAudioTranscription

AudioTranscriptionConfig

Opcional. Si se configura, habilita la transcripción de la entrada de voz. La transcripción se alinea con el idioma del audio de entrada, si está configurado.

outputAudioTranscription

AudioTranscriptionConfig

Opcional. Si se configura, habilita la transcripción de la salida de audio del modelo. Si se configura, la transcripción se alinea con el código de idioma especificado para el audio de salida.

proactivity

ProactivityConfig

Opcional. Configura la proactividad del modelo.

Esto permite que el modelo responda de forma proactiva a la entrada y que ignore la entrada irrelevante.

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 functionCalls y muestre las respuestas con los ids coincidentes.

Campos
functionCalls[]

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 previamente 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 los 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 por el campo id.

Ten en cuenta que, en las APIs de GenerateContent unary y de transmisión desde el servidor, la llamada a función se realiza intercambiando las partes Content, mientras que, en las APIs de GenerateContent bidireccionales, la llamada a función se realiza a través de este conjunto dedicado de mensajes.

Campos
functionResponses[]

FunctionResponse

Opcional. Es la respuesta a las llamadas a funciones.

BidiGenerateContentTranscription

Transcripción de audio (entrada o salida).

Campos
text

string

Texto de la transcripción.

ContextWindowCompressionConfig

Habilita la compresión de la ventana de contexto, un mecanismo para administrar la ventana de contexto del modelo de modo que no exceda una longitud determinada.

Campos
Campo de unión compressionMechanism. Es el mecanismo de compresión de la ventana de contexto que se usa. compressionMechanism puede ser solo uno de los parámetros siguientes:
slidingWindow

SlidingWindow

Un mecanismo de ventana deslizante

triggerTokens

int64

Cantidad de tokens (antes de ejecutar un turno) necesarios para activar la compresión de la ventana de contexto.

Esto se puede usar para equilibrar la calidad con la latencia, ya que las ventanas de contexto más cortas pueden generar respuestas más rápidas del modelo. Sin embargo, cualquier operación de compresión provocará un aumento temporal de la latencia, por lo que no se deben activar con frecuencia.

Si no se establece, el valor predeterminado es el 80% del límite de la ventana de contexto del modelo. Esto deja un 20% para la próxima solicitud del usuario o respuesta del modelo.

EndSensitivity

Determina cómo se detecta el final del discurso.

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

GoAway

Un aviso que indica que el servidor se desconectará pronto.

Campos
timeLeft

Duration

Es el tiempo restante antes de que la conexión finalice como ABORTED.

Esta duración nunca será inferior a un mínimo específico del modelo, que se especificará junto con los límites de frecuencia del modelo.

ProactivityConfig

Es la configuración de las funciones de proactividad.

Campos
proactiveAudio

bool

Opcional. Si está habilitado, el modelo puede rechazar la respuesta a la última instrucción. Por ejemplo, esto permite que el modelo ignore el habla fuera de contexto o que permanezca en silencio si el usuario aún no hizo una solicitud.

RealtimeInputConfig

Configura el comportamiento de entrada en tiempo real en BidiGenerateContent.

Campos
automaticActivityDetection

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.

activityHandling

ActivityHandling

Opcional. Define qué efecto tiene la actividad.

turnCoverage

TurnCoverage

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

SessionResumptionConfig

Es la configuración de la reanudación de sesión.

Este mensaje se incluye en la configuración de la sesión como BidiGenerateContentSetup.sessionResumption. Si se configura, el servidor enviará mensajes de SessionResumptionUpdate.

Campos
handle

string

Es el identificador de una sesión anterior. Si no está presente, se crea una sesión nueva.

Los identificadores de sesión provienen de los valores de SessionResumptionUpdate.token en conexiones anteriores.

SessionResumptionUpdate

Es la actualización del estado de reanudación de la sesión.

Solo se envía si se configuró BidiGenerateContentSetup.sessionResumption.

Campos
newHandle

string

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

resumable

bool

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

No se puede reanudar la sesión en algunos puntos. Por ejemplo, cuando el modelo ejecuta llamadas a funciones o genera contenido. Si se reanuda la sesión (con un token de sesión anterior) en ese estado, se perderán algunos datos. En estos casos, newHandle estará vacío y resumable será falso.

SlidingWindow

El método SlidingWindow descarta el contenido al principio de la ventana de contexto. El contexto resultante siempre comenzará al inicio de un turno de rol de USER. Las instrucciones del sistema y cualquier BidiGenerateContentSetup.prefixTurns siempre permanecerán al principio del resultado.

Campos
targetTokens

int64

Es la cantidad objetivo de tokens que se deben conservar. El valor predeterminado es trigger_tokens/2.

Descartar partes de la ventana de contexto provoca un aumento temporal de la latencia, por lo que este valor debe calibrarse para evitar operaciones de compresión frecuentes.

StartSensitivity

Determina cómo se detecta el inicio del habla.

Enums
START_SENSITIVITY_UNSPECIFIED El valor predeterminado es START_SENSITIVITY_HIGH.
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_ONLY_ACTIVITY.
TURN_INCLUDES_ONLY_ACTIVITY El turno de los usuarios solo incluye la actividad desde el último turno, sin incluir la inactividad (p.ej., silencio en la transmisión de audio). Este es el comportamiento predeterminado.
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).

UrlContextMetadata

Son los metadatos relacionados con la herramienta de recuperación del contexto de la URL.

Campos
urlMetadata[]

UrlMetadata

Es la lista del contexto de URL.

UsageMetadata

Son los metadatos de uso sobre las respuestas.

Campos
promptTokenCount

int32

Solo salida. Cantidad de tokens en la instrucción. Cuando se establece cachedContent, este sigue siendo el tamaño total efectivo de la instrucción, lo que significa que incluye la cantidad de tokens en el contenido almacenado en caché.

cachedContentTokenCount

int32

Cantidad de tokens en la parte almacenada en caché de la instrucción (el contenido almacenado en caché)

responseTokenCount

int32

Solo salida. Es la cantidad total de tokens en todos los candidatos de respuesta generados.

toolUsePromptTokenCount

int32

Solo salida. Cantidad de tokens presentes en las instrucciones de uso de herramientas.

thoughtsTokenCount

int32

Solo salida. Cantidad de tokens de pensamientos para los modelos de razonamiento.

totalTokenCount

int32

Solo salida. Es el recuento total de tokens para la solicitud de generación (instrucción + candidatos de respuesta).

promptTokensDetails[]

ModalityTokenCount

Solo salida. Es la lista de modalidades que se procesaron en la entrada de la solicitud.

cacheTokensDetails[]

ModalityTokenCount

Solo salida. Es la lista de modalidades del contenido almacenado en caché en la entrada de la solicitud.

responseTokensDetails[]

ModalityTokenCount

Solo salida. Es la lista de modalidades que se devolvieron en la respuesta.

toolUsePromptTokensDetails[]

ModalityTokenCount

Solo salida. Lista de las modalidades que se procesaron para las entradas de la solicitud de uso de herramientas.

Tokens de autenticación efímeros

Los tokens de autenticación efímeros se pueden obtener llamando a AuthTokenService.CreateToken y, luego, se pueden usar con GenerativeService.BidiGenerateContentConstrained. Para ello, se debe pasar el token en un parámetro de consulta access_token o en un encabezado HTTP Authorization con el prefijo "Token".

CreateAuthTokenRequest

Crea un token de autenticación efímero.

Campos
authToken

AuthToken

Obligatorio. Es el token que se creará.

AuthToken

Es una solicitud para crear un token de autenticación efímero.

Campos
name

string

Solo salida. Es el identificador. Es el token en sí.

expireTime

Timestamp

Opcional. Solo entrada. Inmutable. Es un período opcional después del cual, cuando se usa el token resultante, se rechazarán los mensajes en las sesiones de BidiGenerateContent. (Gemini puede cerrar la sesión de forma preventiva después de este tiempo).

Si no se configura, el valor predeterminado es 30 minutos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

newSessionExpireTime

Timestamp

Opcional. Solo entrada. Inmutable. Es la fecha y hora después de las cuales se rechazarán las nuevas sesiones de la API de Live que usen el token resultante de esta solicitud.

Si no se configura, el valor predeterminado es de 60 segundos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

fieldMask

FieldMask

Opcional. Solo entrada. Inmutable. Si field_mask está vacío y bidiGenerateContentSetup no está presente, el mensaje BidiGenerateContentSetup efectivo se toma de la conexión de la API en vivo.

Si field_mask está vacío y bidiGenerateContentSetup está presente, el mensaje BidiGenerateContentSetup efectivo se toma por completo de bidiGenerateContentSetup en esta solicitud. Se ignora el mensaje de configuración de la conexión a la API de Live.

Si field_mask no está vacío, los campos correspondientes de bidiGenerateContentSetup reemplazarán los campos del mensaje de configuración en la conexión de la API de Live.

Campo de unión config. Es la configuración específica del método para el token resultante. config puede ser solo uno de los parámetros siguientes:
bidiGenerateContentSetup

BidiGenerateContentSetup

Opcional. Solo entrada. Inmutable. Es la configuración específica de BidiGenerateContent.

uses

int32

Opcional. Solo entrada. Inmutable. Es la cantidad de veces que se puede usar el token. Si este valor es cero, no se aplica ningún límite. Reanudar una sesión de la API de Live no se considera un uso. Si no se especifica, el valor predeterminado es 1.

Más información sobre los tipos comunes

Para obtener más información sobre los tipos de recursos de la API que se usan con frecuencia: Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount y Tool, consulta Cómo generar contenido.