Live API - WebSockets API reference

A API Live é uma API com estado que usa WebSockets. Nesta seção, você vai encontrar mais detalhes sobre a API WebSockets.

Sessões

Uma conexão WebSocket estabelece uma sessão entre o cliente e o servidor do Gemini. Depois que um cliente inicia uma nova conexão, a sessão pode trocar mensagens com o servidor para:

  • Enviar texto, áudio ou vídeo para o servidor do Gemini.
  • Receber solicitações de áudio, texto ou chamada de função do servidor do Gemini.

Conexão WebSocket

Para iniciar uma sessão, conecte-se a este endpoint websocket:

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

Configuração da sessão

A mensagem inicial enviada após o estabelecimento da conexão WebSocket define a configuração da sessão, que inclui o modelo, os parâmetros de geração, as instruções do sistema e as ferramentas.

Não é possível atualizar a configuração enquanto a conexão está aberta. No entanto, é possível mudar os parâmetros de configuração, exceto o modelo, ao pausar e retomar pelo mecanismo de retomada de sessão.

Confira o exemplo de configuração a seguir. A capitalização do nome nos SDKs pode variar. Confira as opções de configuração do SDK do Python.


{
  "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 mais informações sobre o campo da API, consulte generationConfig.

Enviar mensagens

Para trocar mensagens pela conexão WebSocket, o cliente precisa enviar um objeto JSON por uma conexão WebSocket aberta. O objeto JSON precisa ter exatamente um dos campos do seguinte conjunto de objetos:


{
  "setup": BidiGenerateContentSetup,
  "clientContent": BidiGenerateContentClientContent,
  "realtimeInput": BidiGenerateContentRealtimeInput,
  "toolResponse": BidiGenerateContentToolResponse
}

Mensagens de clientes compatíveis

Confira as mensagens do cliente compatíveis na tabela a seguir:

Mensagem Descrição
BidiGenerateContentSetup Configuração da sessão a ser enviada na primeira mensagem
BidiGenerateContentClientContent Atualização incremental do conteúdo da conversa atual enviada pelo cliente
BidiGenerateContentRealtimeInput Entrada de áudio, vídeo ou texto em tempo real
BidiGenerateContentToolResponse Resposta a um ToolCallMessage recebido do servidor

Receber mensagens

Para receber mensagens do Gemini, ouça o evento "message" do WebSocket e analise o resultado de acordo com a definição das mensagens compatíveis do servidor.

Confira estes guias:

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)

As mensagens do servidor podem ter um campo usageMetadata, mas vão incluir exatamente um dos outros campos da mensagem BidiGenerateContentServerMessage. A união messageType não é expressa em JSON, então o campo aparece no nível superior da mensagem.

Mensagens e eventos

ActivityEnd

Esse tipo não tem campos.

Marca o fim da atividade do usuário.

ActivityHandling

As diferentes maneiras de lidar com a atividade do usuário.

Tipos enumerados
ACTIVITY_HANDLING_UNSPECIFIED Se não for especificado, o comportamento padrão será START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Se for verdadeiro, o início da atividade vai interromper a resposta do modelo (também chamada de "interrupção"). A resposta atual do modelo será interrompida no momento da interrupção. Esse é o comportamento padrão.
NO_INTERRUPTION A resposta do modelo não será interrompida.

ActivityStart

Esse tipo não tem campos.

Marca o início da atividade do usuário.

AudioTranscriptionConfig

Esse tipo não tem campos.

A configuração de transcrição de áudio.

AutomaticActivityDetection

Configura a detecção automática de atividade.

Campos
disabled

bool

Opcional. Se ativada (como é o padrão), a entrada de voz e texto detectada conta como atividade. Se estiver desativado, o cliente precisará enviar indicadores de atividade.

startOfSpeechSensitivity

StartSensitivity

Opcional. Determina a probabilidade de a fala ser detectada.

prefixPaddingMs

int32

Opcional. A duração necessária da fala detectada antes do início da fala ser confirmado. Quanto menor esse valor, mais sensível é a detecção do início da fala, e falas mais curtas podem ser reconhecidas. No entanto, isso também aumenta a probabilidade de falsos positivos.

endOfSpeechSensitivity

EndSensitivity

Opcional. Determina a probabilidade de a fala detectada ter terminado.

silenceDurationMs

int32

Opcional. A duração necessária do silêncio detectado antes do fim da fala. Quanto maior esse valor, mais longos podem ser os intervalos de fala sem interromper a atividade do usuário, mas isso aumenta a latência do modelo.

BidiGenerateContentClientContent

Atualização incremental da conversa atual entregue pelo cliente. Todo o conteúdo aqui é adicionado incondicionalmente ao histórico de conversas e usado como parte do comando para o modelo gerar conteúdo.

Uma mensagem aqui vai interromper qualquer geração de modelo em andamento.

Campos
turns[]

Content

Opcional. O conteúdo anexado à conversa atual com o modelo.

Para consultas de turno único, esta é uma instância única. Para consultas com várias interações, esse é um campo repetido que contém o histórico da conversa e a solicitação mais recente.

turnComplete

bool

Opcional. Se for "true", indica que a geração de conteúdo do servidor deve começar com o comando acumulado no momento. Caso contrário, o servidor aguarda mais mensagens antes de iniciar a geração.

BidiGenerateContentRealtimeInput

Entrada do usuário enviada em tempo real.

As diferentes modalidades (áudio, vídeo e texto) são processadas como streams simultâneos. A ordenação entre esses fluxos não é garantida.

Isso é diferente de BidiGenerateContentClientContent de algumas maneiras:

  • Podem ser enviados continuamente sem interrupção para a geração de modelos.
  • Se for necessário misturar dados intercalados entre BidiGenerateContentClientContent e BidiGenerateContentRealtimeInput, o servidor tentará otimizar para a melhor resposta, mas não há garantias.
  • O fim da vez não é especificado explicitamente, mas é derivado da atividade do usuário (por exemplo, fim da fala).
  • Mesmo antes do fim da vez, os dados são processados de forma incremental para otimizar o início rápido da resposta do modelo.
Campos
mediaChunks[]

Blob

Opcional. Dados de bytes inline para entrada de mídia. Não há suporte para vários mediaChunks. Todos, exceto o primeiro, serão ignorados.

OBSOLETO: use audio, video ou text.

audio

Blob

Opcional. Esses elementos formam o stream de entrada de áudio em tempo real.

video

Blob

Opcional. Esses dados formam o stream de entrada de vídeo em tempo real.

activityStart

ActivityStart

Opcional. Marca o início da atividade do usuário. Isso só pode ser enviado se a detecção automática de atividade (ou seja, do lado do servidor) estiver desativada.

activityEnd

ActivityEnd

Opcional. Marca o fim da atividade do usuário. Isso só pode ser enviado se a detecção automática de atividade (ou seja, do lado do servidor) estiver desativada.

audioStreamEnd

bool

Opcional. Indica que o fluxo de áudio foi encerrado, por exemplo, porque o microfone foi desativado.

Isso só deve ser enviado quando a detecção automática de atividade estiver ativada (que é o padrão).

O cliente pode reabrir o stream enviando uma mensagem de áudio.

text

string

Opcional. Eles formam o fluxo de entrada de texto em tempo real.

BidiGenerateContentServerContent

Atualização incremental do servidor gerada pelo modelo em resposta às mensagens do cliente.

O conteúdo é gerado o mais rápido possível, e não em tempo real. Os clientes podem armazenar em buffer e reproduzir em tempo real.

Campos
generationComplete

bool

Apenas saída. Se for verdadeiro, indica que o modelo terminou de gerar.

Quando o modelo é interrompido durante a geração, não há uma mensagem "generation_complete" na vez interrompida. Ela passa por "interrupted > turn_complete".

Quando o modelo assume a reprodução em tempo real, há um atraso entre generation_complete e turn_complete causado pela espera do modelo para que a reprodução termine.

turnComplete

bool

Apenas saída. Se for "true", indica que o modelo concluiu a vez dele. A geração só vai começar em resposta a outras mensagens do cliente.

interrupted

bool

Apenas saída. Se for "true", indica que uma mensagem do cliente interrompeu a geração do modelo atual. Se o cliente estiver reproduzindo o conteúdo em tempo real, esse é um bom sinal para interromper e esvaziar a fila de reprodução atual.

groundingMetadata

GroundingMetadata

Apenas saída. Metadados de embasamento para o conteúdo gerado.

inputTranscription

BidiGenerateContentTranscription

Apenas saída. Entrada de transcrição de áudio. A transcrição é enviada independente das outras mensagens do servidor, e não há uma ordem garantida.

outputTranscription

BidiGenerateContentTranscription

Apenas saída. Gerar transcrição de áudio. A transcrição é enviada independentemente das outras mensagens do servidor, e não há uma ordem garantida, principalmente entre serverContent e outputTranscription.

urlContextMetadata

UrlContextMetadata

modelTurn

Content

Apenas saída. O conteúdo gerado pelo modelo como parte da conversa atual com o usuário.

BidiGenerateContentServerMessage

Mensagem de resposta para a chamada BidiGenerateContent.

Campos
usageMetadata

UsageMetadata

Apenas saída. Metadados de uso sobre as respostas.

Campo de união messageType. Tipo da mensagem. messageType pode ser apenas de um dos tipos a seguir:
setupComplete

BidiGenerateContentSetupComplete

Apenas saída. Enviada em resposta a uma mensagem BidiGenerateContentSetup do cliente quando a configuração é concluída.

serverContent

BidiGenerateContentServerContent

Apenas saída. Conteúdo gerado pelo modelo em resposta às mensagens do cliente.

toolCall

BidiGenerateContentToolCall

Apenas saída. Solicitação para o cliente executar o functionCalls e retornar as respostas com os ids correspondentes.

toolCallCancellation

BidiGenerateContentToolCallCancellation

Apenas saída. Notificação para o cliente de que um ToolCallMessage emitido anteriormente com os ids especificados precisa ser cancelado.

goAway

GoAway

Apenas saída. Um aviso de que o servidor será desconectado em breve.

sessionResumptionUpdate

SessionResumptionUpdate

Apenas saída. Atualização do estado de retomada da sessão.

BidiGenerateContentSetup

Mensagem a ser enviada no primeiro (e apenas no primeiro) BidiGenerateContentClientMessage. Contém a configuração que será aplicada durante a RPC de streaming.

Os clientes precisam aguardar uma mensagem BidiGenerateContentSetupComplete antes de enviar outras mensagens.

Campos
model

string

Obrigatório. O nome do recurso do modelo. Ele serve como um ID para o modelo usar.

Formato: models/{model}

generationConfig

GenerationConfig

Opcional. Configuração de geração.

Os seguintes campos não são compatíveis:

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

Content

Opcional. O usuário forneceu instruções do sistema para o modelo.

Observação: use apenas texto em partes, e o conteúdo de cada parte ficará em um parágrafo separado.

tools[]

Tool

Opcional. Uma lista de Tools que o modelo pode usar para gerar a próxima resposta.

Uma Tool é uma parte do código que permite ao sistema interagir com sistemas externos para realizar uma ação ou conjunto de ações fora do conhecimento e do escopo do modelo.

realtimeInputConfig

RealtimeInputConfig

Opcional. Configura o processamento de entradas em tempo real.

sessionResumption

SessionResumptionConfig

Opcional. Configura o mecanismo de retomada de sessão.

Se incluído, o servidor vai enviar mensagens SessionResumptionUpdate.

contextWindowCompression

ContextWindowCompressionConfig

Opcional. Configura um mecanismo de compactação de janela de contexto.

Se incluído, o servidor vai reduzir automaticamente o tamanho do contexto quando ele exceder o comprimento configurado.

inputAudioTranscription

AudioTranscriptionConfig

Opcional. Se definido, ativa a transcrição da entrada de voz. A transcrição é alinhada ao idioma do áudio de entrada, se configurado.

outputAudioTranscription

AudioTranscriptionConfig

Opcional. Se definido, permite a transcrição da saída de áudio do modelo. A transcrição se alinha ao código de idioma especificado para o áudio de saída, se configurado.

proactivity

ProactivityConfig

Opcional. Configura a proatividade do modelo.

Isso permite que o modelo responda de forma proativa à entrada e ignore informações irrelevantes.

BidiGenerateContentSetupComplete

Esse tipo não tem campos.

Enviado em resposta a uma mensagem BidiGenerateContentSetup do cliente.

BidiGenerateContentToolCall

Solicitação para o cliente executar o functionCalls e retornar as respostas com os ids correspondentes.

Campos
functionCalls[]

FunctionCall

Apenas saída. A chamada de função a ser executada.

BidiGenerateContentToolCallCancellation

Notificação para o cliente de que um ToolCallMessage emitido anteriormente com os ids especificados não deveria ter sido executado e precisa ser cancelado. Se houver efeitos colaterais nessas chamadas de função, os clientes poderão tentar desfazer as chamadas. Essa mensagem aparece apenas quando os clientes interrompem as ações do servidor.

Campos
ids[]

string

Apenas saída. Os IDs das chamadas de função a serem canceladas.

BidiGenerateContentToolResponse

Resposta gerada pelo cliente a um ToolCall recebido do servidor. Os objetos FunctionResponse individuais são correspondidos aos objetos FunctionCall respectivos pelo campo id.

Nas APIs GenerateContent unárias e de streaming do servidor, a chamada de função acontece trocando as partes Content. Já nas APIs GenerateContent bidirecionais, a chamada de função acontece com esse conjunto dedicado de mensagens.

Campos
functionResponses[]

FunctionResponse

Opcional. A resposta às chamadas de função.

BidiGenerateContentTranscription

Transcrição de áudio (entrada ou saída).

Campos
text

string

Texto da transcrição.

ContextWindowCompressionConfig

Ativa a compressão da janela de contexto, um mecanismo para gerenciar a janela de contexto do modelo para que ela não exceda um determinado comprimento.

Campos
Campo de união compressionMechanism. O mecanismo de compactação da janela de contexto usado. compressionMechanism pode ser apenas de um dos tipos a seguir:
slidingWindow

SlidingWindow

Um mecanismo de janela deslizante.

triggerTokens

int64

O número de tokens (antes de executar um turno) necessários para acionar uma compactação da janela de contexto.

Isso pode ser usado para equilibrar a qualidade e a latência, já que janelas de contexto mais curtas podem resultar em respostas mais rápidas do modelo. No entanto, qualquer operação de compactação causa um aumento temporário na latência, então elas não devem ser acionadas com frequência.

Se não for definido, o padrão será 80% do limite da janela de contexto do modelo. Isso deixa 20% para a próxima solicitação do usuário/resposta do modelo.

EndSensitivity

Determina como o fim da fala é detectado.

Tipos enumerados
END_SENSITIVITY_UNSPECIFIED O padrão é END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH A detecção automática encerra a fala com mais frequência.
END_SENSITIVITY_LOW A detecção automática encerra a fala com menos frequência.

GoAway

Um aviso de que o servidor será desconectado em breve.

Campos
timeLeft

Duration

O tempo restante antes de a conexão ser encerrada como ABORTED.

Essa duração nunca será menor que um mínimo específico do modelo, que será especificado junto com os limites de taxa do modelo.

ProactivityConfig

Configuração para recursos de proatividade.

Campos
proactiveAudio

bool

Opcional. Se ativada, a opção permite que o modelo se recuse a responder ao último comando. Por exemplo, isso permite que o modelo ignore falas fora de contexto ou fique em silêncio se o usuário ainda não tiver feito uma solicitação.

RealtimeInputConfig

Configura o comportamento de entrada em tempo real em BidiGenerateContent.

Campos
automaticActivityDetection

AutomaticActivityDetection

Opcional. Se não for definido, a detecção automática de atividade será ativada por padrão. Se a detecção automática de voz estiver desativada, o cliente precisará enviar indicadores de atividade.

activityHandling

ActivityHandling

Opcional. Define o efeito da atividade.

turnCoverage

TurnCoverage

Opcional. Define qual entrada é incluída na vez do usuário.

SessionResumptionConfig

Configuração de retomada da sessão.

Essa mensagem é incluída na configuração da sessão como BidiGenerateContentSetup.sessionResumption. Se configurado, o servidor vai enviar mensagens SessionResumptionUpdate.

Campos
handle

string

O identificador de uma sessão anterior. Se não estiver presente, uma nova sessão será criada.

Os identificadores de sessão vêm de valores SessionResumptionUpdate.token em conexões anteriores.

SessionResumptionUpdate

Atualização do estado de retomada da sessão.

Enviado apenas se BidiGenerateContentSetup.sessionResumption foi definido.

Campos
newHandle

string

Novo identificador que representa um estado que pode ser retomado. Fica vazio se resumable=false.

resumable

bool

Verdadeiro se a sessão atual puder ser retomada neste ponto.

Não é possível retomar em alguns pontos da sessão. Por exemplo, quando o modelo está executando chamadas de função ou gerando. Retomar a sessão (usando um token de sessão anterior) nesse estado vai resultar em perda de dados. Nesses casos, newHandle vai estar vazio e resumable será "false".

SlidingWindow

O método SlidingWindow descarta o conteúdo no início da janela de contexto. O contexto resultante sempre começa no início de uma interação com a função USER. As instruções do sistema e qualquer BidiGenerateContentSetup.prefixTurns sempre vão ficar no início do resultado.

Campos
targetTokens

int64

O número de destino de tokens a serem mantidos. O valor padrão é trigger_tokens/2.

Descartar partes da janela de contexto causa um aumento temporário na latência. Por isso, esse valor precisa ser calibrado para evitar operações de compactação frequentes.

StartSensitivity

Determina como o início da fala é detectado.

Tipos enumerados
START_SENSITIVITY_UNSPECIFIED O padrão é START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH A detecção automática vai detectar o início da fala com mais frequência.
START_SENSITIVITY_LOW A detecção automática vai detectar o início da fala com menos frequência.

TurnCoverage

Opções sobre qual entrada está incluída na vez do usuário.

Tipos enumerados
TURN_COVERAGE_UNSPECIFIED Se não for especificado, o comportamento padrão será TURN_INCLUDES_ONLY_ACTIVITY.
TURN_INCLUDES_ONLY_ACTIVITY A vez dos usuários inclui apenas a atividade desde a última vez, excluindo a inatividade (por exemplo, silêncio no fluxo de áudio). Esse é o comportamento padrão.
TURN_INCLUDES_ALL_INPUT A vez do usuário inclui todas as entradas em tempo real desde a última vez, incluindo inatividade (por exemplo, silêncio no fluxo de áudio).

UrlContextMetadata

Metadados relacionados à ferramenta de recuperação de contexto de URL.

Campos
urlMetadata[]

UrlMetadata

Lista de contextos de URL.

UsageMetadata

Metadados de uso sobre respostas.

Campos
promptTokenCount

int32

Apenas saída. Número de tokens no comando. Quando cachedContent é definido, esse ainda é o tamanho total efetivo do comando, o que significa que inclui o número de tokens no conteúdo armazenado em cache.

cachedContentTokenCount

int32

Número de tokens na parte em cache do comando (o conteúdo em cache)

responseTokenCount

int32

Apenas saída. Número total de tokens em todos os candidatos de resposta gerados.

toolUsePromptTokenCount

int32

Apenas saída. Número de tokens presentes nos comandos de uso da ferramenta.

thoughtsTokenCount

int32

Apenas saída. Número de tokens de ideias para modelos de pensamento crítico.

totalTokenCount

int32

Apenas saída. Contagem total de tokens para a solicitação de geração (comando + candidatos de resposta).

promptTokensDetails[]

ModalityTokenCount

Apenas saída. Lista de modalidades processadas na entrada da solicitação.

cacheTokensDetails[]

ModalityTokenCount

Apenas saída. Lista de modalidades do conteúdo em cache na entrada da solicitação.

responseTokensDetails[]

ModalityTokenCount

Apenas saída. Lista de modalidades retornadas na resposta.

toolUsePromptTokensDetails[]

ModalityTokenCount

Apenas saída. Lista de modalidades processadas para entradas de solicitação de uso de ferramentas.

Tokens de autenticação efêmeros

Tokens de autenticação efêmeros podem ser obtidos chamando AuthTokenService.CreateToken e usados com GenerativeService.BidiGenerateContentConstrained, transmitindo o token em um parâmetro de consulta access_token ou em um cabeçalho HTTP Authorization com "Token" como prefixo.

CreateAuthTokenRequest

Crie um token de autenticação efêmero.

Campos
authToken

AuthToken

Obrigatório. O token a ser criado.

AuthToken

Uma solicitação para criar um token de autenticação temporário.

Campos
name

string

Apenas saída. Identificador. O próprio token.

expireTime

Timestamp

Opcional. Somente entrada. Imutável. Um tempo opcional após o qual, ao usar o token resultante, as mensagens em sessões BidiGenerateContent serão rejeitadas. O Gemini pode fechar a sessão de forma preventiva após esse período.

Se não for definido, o padrão será 30 minutos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

newSessionExpireTime

Timestamp

Opcional. Somente entrada. Imutável. O período após o qual novas sessões da API Live usando o token resultante desta solicitação serão rejeitadas.

Se não for definido, o padrão será 60 segundos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

fieldMask

FieldMask

Opcional. Somente entrada. Imutável. Se field_mask estiver vazio e bidiGenerateContentSetup não estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída da conexão da API Live.

Se field_mask estiver vazio e bidiGenerateContentSetup estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída inteiramente de bidiGenerateContentSetup nesta solicitação. A mensagem de configuração da conexão da API Live é ignorada.

Se field_mask não estiver vazio, os campos correspondentes de bidiGenerateContentSetup vão substituir os campos da mensagem de configuração na conexão da API Live.

Campo de união config. A configuração específica do método para o token resultante. config pode ser apenas de um dos tipos a seguir:
bidiGenerateContentSetup

BidiGenerateContentSetup

Opcional. Somente entrada. Imutável. Configuração específica para BidiGenerateContent.

uses

int32

Opcional. Somente entrada. Imutável. O número de vezes que o token pode ser usado. Se esse valor for zero, nenhum limite será aplicado. Retomar uma sessão da API Live não conta como um uso. Se não for especificado, o padrão será 1.

Mais informações sobre tipos comuns

Para mais informações sobre os tipos de recursos de API usados com frequência Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount e Tool, consulte Gerar conteúdo.