Referência da API Live

A API Live permite interações bidirecionais de voz e vídeo com baixa latência com o Gemini. Com a API Live, pode oferecer aos utilizadores finais a experiência de conversas de voz naturais e semelhantes às de um ser humano, bem como a capacidade de interromper as respostas do modelo através de comandos de voz. A API Live pode processar texto, áudio e entrada de vídeo, e pode fornecer texto e áudio de saída.

Para mais informações sobre a API Live, consulte o artigo API Live.

Capacidades

A API Live inclui as seguintes capacidades principais:

  • Multimodalidade: o modelo pode ver, ouvir e falar.
  • Interação em tempo real com baixa latência: o modelo pode fornecer respostas rápidas.
  • Memória de sessão: o modelo retém a memória de todas as interações numa única sessão, recordando informações ouvidas ou vistas anteriormente.
  • Suporte para chamadas de funções, execução de código e Pesquisa como ferramenta: pode integrar o modelo com serviços externos e origens de dados.

A API Live foi concebida para comunicação servidor a servidor.

Para apps Web e para dispositivos móveis, recomendamos que use a integração dos nossos parceiros na Daily.

Modelos suportados

Começar

Para experimentar a API Live, aceda ao Vertex AI Studio e, de seguida, clique em Iniciar sessão.

A API Live é uma API com estado que usa WebSockets.

Esta secção mostra um exemplo de como usar a API Live para a geração de texto a partir de texto, usando o Python 3.9 ou superior.

Python

Instalação

pip install --upgrade google-genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com o 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?

Guia de integração

Esta secção descreve como funciona a integração com a API Live.

Sessões

Uma ligação WebSocket estabelece uma sessão entre o cliente e o servidor Gemini.

Depois de um cliente iniciar uma nova ligação, a sessão pode trocar mensagens com o servidor para:

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

A configuração da sessão é enviada na primeira mensagem após a ligação. Uma configuração de sessão inclui o modelo, os parâmetros de geração, as instruções do sistema e as ferramentas.

Veja a seguinte configuração de exemplo:


{
  "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 mais informações, consulte o artigo BidiGenerateContentSetup.

Enviar mensagens

As mensagens são objetos formatados em JSON trocados através da ligação WebSocket.

Para enviar uma mensagem, o cliente tem de enviar um objeto JSON através de uma ligação WebSocket aberta. O objeto JSON tem de ter exatamente um dos campos do seguinte conjunto de objetos:


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

Mensagens de cliente suportadas

Consulte as mensagens de cliente suportadas na seguinte tabela:

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

Receba mensagens

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

Veja o seguinte:

ws.addEventListener("message", async (evt) => {
  if (evt.data instanceof Blob) {
    // Process the received data (audio, video, etc.)
  } else {
    // Process JSON response
  }
});

As mensagens do servidor têm exatamente um dos campos do seguinte conjunto de objetos:


{
  "setupComplete": BidiGenerateContentSetupComplete,
  "serverContent": BidiGenerateContentServerContent,
  "toolCall": BidiGenerateContentToolCall,
  "toolCallCancellation": BidiGenerateContentToolCallCancellation
  "usageMetadata": UsageMetadata
  "goAway": GoAway
  "sessionResumptionUpdate": SessionResumptionUpdate
  "inputTranscription": BidiGenerateContentTranscription
  "outputTranscription": BidiGenerateContentTranscription
}

Mensagens de servidor suportadas

Consulte as mensagens de servidor suportadas na seguinte tabela:

Mensagem Descrição
BidiGenerateContentSetupComplete Uma mensagem BidiGenerateContentSetup do cliente, enviada quando a configuração estiver concluída
BidiGenerateContentServerContent Conteúdo gerado pelo modelo em resposta a uma mensagem do cliente
BidiGenerateContentToolCall Pedido para o cliente executar as chamadas de função e devolver as respostas com os IDs correspondentes
BidiGenerateContentToolCallCancellation Enviado quando uma chamada de função é cancelada porque o utilizador interrompeu a saída do modelo
UsageMetadata Um relatório do número de tokens usados pela sessão até agora
GoAway Um sinal de que a ligação atual vai ser terminada em breve
SessionResumptionUpdate Um ponto de verificação de sessão que pode ser retomado
BidiGenerateContentTranscription Uma transcrição da voz do utilizador ou do modelo

Atualizações de conteúdo incrementais

Use atualizações incrementais para enviar texto introduzido, estabelecer o contexto da sessão ou restaurar o contexto da sessão. Para contextos curtos, pode enviar interações passo a passo para representar a sequência exata de eventos. Para contextos mais longos, é recomendável fornecer um resumo de mensagem único para libertar o período de contexto para as interações de seguimento.

Veja a seguinte mensagem de contexto de exemplo:

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

Tenha em atenção que, embora as partes de conteúdo possam ser do tipo functionResponse, não deve usar BidiGenerateContentClientContent para fornecer uma resposta às chamadas de função emitidas pelo modelo. Em alternativa, deve usar o atributo BidiGenerateContentToolResponse. BidiGenerateContentClientContent só deve ser usado para estabelecer o contexto anterior ou fornecer texto introduzido à conversa.

Streaming de áudio e vídeo

Execução de código

Para saber mais sobre a execução de código, consulte o artigo Execução de código.

Chamada de funções

Todas as funções têm de ser declaradas no início da sessão através do envio de definições de ferramentas como parte da mensagem BidiGenerateContentSetup.

Define funções através de JSON, especificamente com um subconjunto selecionado do formato de esquema OpenAPI. Uma única declaração de função pode incluir os seguintes parâmetros:

  • name (string): o identificador exclusivo da função no âmbito da chamada API.

  • description (string): uma explicação abrangente do objetivo e das capacidades da função.

  • parameters (objeto): define os dados de entrada necessários pela função.

    • type (string): especifica o tipo de dados geral, como objecto.

    • properties (objeto): lista parâmetros individuais, cada um com:

      • type (string): o tipo de dados do parâmetro, como string, número inteiro ou Booleano.
      • description (string): uma explicação clara da finalidade do parâmetro e do formato esperado.
    • required (matriz): uma matriz de strings que indica os nomes dos parâmetros obrigatórios para o funcionamento da função.

Para ver exemplos de código de uma declaração de função com comandos curl, consulte o artigo Chamada de funções com a API Gemini. Para ver exemplos de como criar declarações de funções com os SDKs da API Gemini, consulte o tutorial de chamadas de funções.

A partir de um único comando, o modelo pode gerar várias chamadas de funções e o código necessário para encadear as respetivas saídas. Este código é executado num ambiente de teste, gerando mensagens BidiGenerateContentToolCall subsequentes. A execução é pausada até que os resultados de cada chamada de função estejam disponíveis, o que garante o processamento sequencial.

O cliente deve responder com BidiGenerateContentToolResponse.

Para saber mais, consulte o artigo Introdução à chamada de funções.

Formatos de áudio

Consulte a lista de formatos de áudio suportados.

Instruções do sistema

Pode fornecer instruções do sistema para controlar melhor o resultado do modelo e especificar o tom e o sentimento das respostas de áudio.

As instruções do sistema são adicionadas ao comando antes do início da interação e permanecem em vigor durante toda a sessão.

As instruções do sistema só podem ser definidas no início de uma sessão, imediatamente após a associação inicial. Para fornecer mais informações ao modelo durante a sessão, use atualizações de conteúdo incrementais.

Interrupções

Os utilizadores podem interromper a saída do modelo em qualquer altura. Quando a deteção de atividade de voz (VAD) deteta uma interrupção, a geração em curso é cancelada e rejeitada. Apenas as informações já enviadas ao cliente são retidas no histórico de sessões. Em seguida, o servidor envia uma mensagem BidiGenerateContentServerContent para comunicar a interrupção.

Além disso, o servidor do Gemini rejeita todas as chamadas de funções pendentes e envia uma mensagem BidiGenerateContentServerContent com os IDs das chamadas canceladas.

Vozes

Para especificar uma voz, defina o voiceName no objeto speechConfig, como parte da configuração da sessão.

Veja a seguinte representação JSON de um objeto speechConfig:

{
  "voiceConfig": {
    "prebuiltVoiceConfig": {
      "voiceName": "VOICE_NAME"
    }
  }
}

Para ver a lista de vozes suportadas, consulte o artigo Altere as definições de voz e idioma.

Limitações

Considere as seguintes limitações da API Live e do Gemini 2.0 quando planear o seu projeto.

Autenticação do cliente

A API Live só fornece autenticação de servidor para servidor e não é recomendada para utilização direta pelo cliente. A entrada do cliente deve ser encaminhada através de um servidor de aplicações intermédio para uma autenticação segura com a API Live.

Duração máxima da sessão

O comprimento máximo predefinido de uma sessão de conversa é de 10 minutos. Para mais informações, consulte o artigo Duração da sessão.

Velocidade de frames do vídeo

Quando faz streaming de vídeo para o modelo, este é processado a 1 frame por segundo (FPS). Isto torna a API inadequada para exemplos de utilização que requerem a análise de vídeos com mudanças rápidas, como a análise detalhada de desportos de alta velocidade.

Deteção de atividade de voz (VAD)

Por predefinição, o modelo realiza automaticamente a deteção de atividade de voz (VAD) num fluxo de entrada de áudio contínuo. O VAD pode ser configurado com o campo RealtimeInputConfig.AutomaticActivityDetection da mensagem de configuração.

Quando a stream de áudio é pausada durante mais de um segundo (por exemplo, quando o utilizador desativa o microfone), é enviado um evento AudioStreamEnd para limpar o áudio em cache. O cliente pode retomar o envio de dados de áudio em qualquer altura.

Em alternativa, pode desativar o VAD automático definindo RealtimeInputConfig.AutomaticActivityDetection.disabled como true na mensagem de configuração. Nesta configuração, o cliente é responsável por detetar a voz do utilizador e enviar mensagens ActivityStart e ActivityEnd nos momentos adequados. Não é enviado um AudioStreamEnd nesta configuração. Em vez disso, qualquer interrupção da stream é marcada por uma mensagem ActivityEnd.

Limitações adicionais

A definição de pontos finais manual não é suportada.

As entradas e as saídas de áudio afetam negativamente a capacidade do modelo de usar a chamada de funções.

Contagem de tokens

A contagem de tokens não é suportada.

Limites de taxas

Aplicam-se os seguintes limites de taxa:

  • 5000 sessões em simultâneo por projeto
  • 4 milhões de tokens por minuto

Mensagens e eventos

BidiGenerateContentClientContent

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

Uma mensagem aqui interrompe qualquer geração de modelo atual.

Campos
turns[]

Content

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

Para consultas de uma única interação, trata-se de uma única instância. Para consultas com várias interações, este é um campo repetido que contém o histórico de conversas e o pedido mais recente.

turn_complete

bool

Opcional. Se for verdadeiro, indica que a geração de conteúdo do servidor deve começar com o comando atualmente acumulado. Caso contrário, o servidor aguarda mensagens adicionais antes de iniciar a geração.

BidiGenerateContentRealtimeInput

Entrada do utilizador enviada em tempo real.

Isto é diferente de ClientContentUpdate de várias formas:

  • Podem ser enviados continuamente sem interrupções na geração de modelos.
  • Se for necessário misturar dados intercalados entre o ClientContentUpdate e o RealtimeUpdate, o servidor tenta otimizar para a melhor resposta, mas não existem garantias.
  • O fim da volta não é especificado explicitamente, mas é derivado da atividade do utilizador (por exemplo, o fim da fala).
  • Mesmo antes do fim da interação, os dados são processados de forma incremental para otimizar o início rápido da resposta do modelo.
  • É sempre considerado como a entrada do utilizador (não pode ser usado para preencher o histórico de conversas).
Campos
media_chunks[]

Blob

Opcional. Dados de bytes incorporados para entrada de multimédia.

activity_start

ActivityStart

Opcional. Marca o início da atividade do utilizador. Só pode ser enviado se a deteção automática de atividade (ou seja, do lado do servidor) estiver desativada.

activity_end

ActivityEnd

Opcional. Marca o fim da atividade do utilizador. Só pode ser enviado se a deteção automática de atividade (ou seja, do lado do servidor) estiver desativada.

ActivityEnd

Este tipo não tem campos.

Marca o fim da atividade do utilizador.

ActivityStart

Este tipo não tem campos.

Apenas um dos campos nesta mensagem tem de ser definido de cada vez. Marca o início da atividade do utilizador.

BidiGenerateContentServerContent

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

O conteúdo é gerado o mais rapidamente possível e não em tempo real. Os clientes podem optar por armazenar em buffer e reproduzir em tempo real.

Campos
turn_complete

bool

Apenas saída. Se for verdadeiro, indica que o modelo terminou a geração. A geração só é iniciada em resposta a mensagens adicionais do cliente. Pode ser definido juntamente com content, indicando que content é o último na curva.

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 a reproduzir o conteúdo em tempo real, este é um bom sinal para parar e esvaziar a fila atual. Se o cliente estiver a reproduzir o conteúdo em tempo real, este é um bom sinal para parar e esvaziar a fila de reprodução atual.

generation_complete

bool

Apenas saída. Se for verdadeiro, indica que o modelo terminou a geração.

Quando o modelo é interrompido durante a geração, não existe nenhuma mensagem "generation_complete" no turno interrompido. O processo é "interrupted > turn_complete".

Quando o modelo assume a reprodução em tempo real, existe um atraso entre generation_complete e turn_complete causado pela espera do modelo pela conclusão da reprodução.

grounding_metadata

GroundingMetadata

Apenas saída. Os metadados especificam as fontes usadas para fundamentar o conteúdo gerado.

input_transcription

Transcription

Opcional. Transcrição de entrada. A transcrição é independente da vez do modelo, o que significa que não implica qualquer ordem entre a transcrição e a vez do modelo.

output_transcription

Transcription

Opcional. Transcrição de saída. A transcrição é independente da vez do modelo, o que significa que não implica qualquer ordem entre a transcrição e a vez do modelo.

model_turn

Content

Apenas saída. O conteúdo que o modelo gerou como parte da conversa atual com o utilizador.

Transcrição

Mensagem de transcrição de áudio.

Campos
text

string

Opcional. Texto da transcrição.

finished

bool

Opcional. O valor booleano indica o fim da transcrição.

BidiGenerateContentSetup

Mensagem a ser enviada na primeira e única mensagem do cliente. Contém a configuração que se aplica durante a sessão de streaming.

Os clientes devem aguardar uma mensagem BidiGenerateContentSetupComplete antes de enviarem mensagens adicionais.

Campos
model

string

Obrigatório. O nome totalmente qualificado do modelo de publicador.

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

generation_config

GenerationConfig

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

Os seguintes campos não são suportados:

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

Content

Opcional. O utilizador forneceu instruções do sistema para o modelo. Nota: só deve usar texto nas partes, e o conteúdo de cada parte vai estar num parágrafo separado.

tools[]

Tool

Opcional. Uma lista de Toolselementos que o modelo pode usar para gerar a resposta seguinte.

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

session_resumption

SessionResumptionConfig

Opcional. Configura o mecanismo de retoma da sessão. Se estiver incluído, o servidor envia mensagens SessionResumptionUpdate periódicas ao cliente.

context_window_compression

ContextWindowCompressionConfig

Opcional. Configura o mecanismo de compressão da capacidade de resposta.

Se incluído, o servidor comprime a janela de contexto para se ajustar ao comprimento indicado.

realtime_input_config

RealtimeInputConfig

Opcional. Configura o processamento de entradas em tempo real.

input_audio_transcription

AudioTranscriptionConfig

Opcional. A transcrição da entrada está alinhada com o idioma do áudio de entrada.

output_audio_transcription

AudioTranscriptionConfig

Opcional. A transcrição da saída está alinhada com o código de idioma especificado para o áudio de saída.

AudioTranscriptionConfig

Este tipo não tem campos.

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

BidiGenerateContentSetupComplete

Este tipo não tem campos.

Enviada em resposta a uma mensagem BidiGenerateContentSetup do cliente.

BidiGenerateContentToolCall

Peça ao cliente para executar o function_calls e devolver as respostas com os ids correspondentes.

Campos
function_calls[]

FunctionCall

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

BidiGenerateContentToolCallCancellation

Notificação para o cliente de que um ToolCallMessage emitido anteriormente com os ids especificados não devia ter sido executado e deve ser cancelado. Se existirem efeitos secundários nessas chamadas de ferramentas, os clientes podem tentar anular as chamadas de ferramentas. Esta mensagem ocorre apenas nos casos em que os clientes interrompem as voltas do servidor.

Campos
ids[]

string

Apenas saída. Os IDs das chamadas de ferramentas a cancelar.

BidiGenerateContentToolResponse

Resposta gerada pelo cliente a um ToolCall recebido do servidor. Os objetos FunctionResponse individuais são associados aos objetos FunctionCall respetivos através do campo id.

Tenha em atenção que, nas APIs GenerateContent unárias e de streaming do servidor, a chamada de funções ocorre através da troca das partes Content, enquanto nas APIs GenerateContent bidirecionais, a chamada de funções ocorre através deste conjunto dedicado de mensagens.

Campos
function_responses[]

FunctionResponse

Opcional. A resposta às chamadas de funções.

RealtimeInputConfig

Configura o comportamento de introdução em tempo real no BidiGenerateContent.

Campos
automatic_activity_detection

AutomaticActivityDetection

Opcional. Se não estiver definida, a deteção automática de atividade está ativada por predefinição. Se a deteção automática de voz estiver desativada, o cliente tem de enviar sinais de atividade.

activity_handling

ActivityHandling

Opcional. Define o efeito que a atividade tem.

turn_coverage

TurnCoverage

Opcional. Define que entrada está incluída na vez do utilizador.

ActivityHandling

As diferentes formas de processar a atividade do utilizador.

Enumerações
ACTIVITY_HANDLING_UNSPECIFIED Se não for especificado, o comportamento predefinido é START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Se o valor for true, o início da atividade interrompe a resposta do modelo (também denominado "barge in"). A resposta atual do modelo é interrompida no momento da interrupção. Este é o comportamento predefinido.
NO_INTERRUPTION A resposta do modelo não é interrompida.

AutomaticActivityDetection

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

Campos
start_of_speech_sensitivity

StartSensitivity

Opcional. Determina a probabilidade de a voz ser detetada.

end_of_speech_sensitivity

EndSensitivity

Opcional. Determina a probabilidade de a voz detetada ter terminado.

prefix_padding_ms

int32

Opcional. A duração necessária da voz detetada antes de o início da voz ser confirmado. Quanto mais baixo for este valor, mais sensível é a deteção do início da fala e mais curta pode ser a fala reconhecida. No entanto, isto também aumenta a probabilidade de falsos positivos.

silence_duration_ms

int32

Opcional. A duração necessária do silêncio detetado (ou não voz) antes de o fim da voz ser confirmado. Quanto maior for este valor, mais longas podem ser as lacunas de voz sem interromper a atividade do utilizador, mas isto aumenta a latência do modelo.

disabled

bool

Opcional. Se estiver ativada, a voz detetada e a introdução de texto contam como atividade. Se estiver desativada, o cliente tem de enviar sinais de atividade.

EndSensitivity

Fim da sensibilidade da voz.

Enumerações
END_SENSITIVITY_UNSPECIFIED A predefinição é END_SENSITIVITY_LOW.
END_SENSITIVITY_HIGH A deteção automática termina a fala com maior frequência.
END_SENSITIVITY_LOW A deteção automática termina a fala com menos frequência.

StartSensitivity

Início da sensibilidade da voz.

Enumerações
START_SENSITIVITY_UNSPECIFIED A predefinição é START_SENSITIVITY_LOW.
START_SENSITIVITY_HIGH A deteção automática deteta o início da fala com mais frequência.
START_SENSITIVITY_LOW A deteção automática vai detetar o início da fala com menos frequência.

TurnCoverage

Opções sobre que entrada está incluída na vez do utilizador.

Enumerações
TURN_COVERAGE_UNSPECIFIED Se não for especificado, o comportamento predefinido é TURN_INCLUDES_ALL_INPUT.
TURN_INCLUDES_ONLY_ACTIVITY A vez do utilizador inclui apenas a atividade desde a última vez, excluindo a inatividade (por exemplo, silêncio no fluxo de áudio).
TURN_INCLUDES_ALL_INPUT A interação do utilizador inclui todas as entradas em tempo real desde a última interação, incluindo a inatividade (por exemplo, silêncio no fluxo de áudio). Este é o comportamento predefinido.

UsageMetadata

Metadados sobre a utilização do conteúdo em cache.

Campos
total_token_count

int32

O número total de tokens que o conteúdo em cache consome.

text_count

int32

Número de carateres de texto.

image_count

int32

Número de imagens.

video_duration_seconds

int32

Duração do vídeo em segundos.

audio_duration_seconds

int32

Duração do áudio em segundos.

GoAway

O servidor não vai poder servir o cliente em breve.

Campos
time_left

Duration

O tempo restante antes de a ligação ser terminada como ABORTED. O tempo mínimo devolvido aqui é especificado de forma diferente, juntamente com os limites de taxa para um determinado modelo.

SessionResumptionUpdate

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

Só é enviado se BidiGenerateContentSetup.session_resumption tiver sido definido.

Campos
new_handle

string

Novo identificador que representa o estado que pode ser retomado. Vazio se resumable=false.

resumable

bool

Verdadeiro se for possível retomar a sessão neste momento.

Pode não ser possível retomar a sessão em alguns momentos. Nesse caso, enviamos a atualização com new_handle vazio e resumable=false. Um exemplo de tal caso pode ser um modelo que executa chamadas de funções ou apenas gera. A retoma da sessão (com o token da sessão anterior) neste estado resulta na perda de alguns dados.

last_consumed_client_message_index

int64

Índice da última mensagem enviada pelo cliente que está incluída no estado representado por este SessionResumptionToken. Só é enviado quando SessionResumptionConfig.transparent está definido.

A presença deste índice permite que os utilizadores se voltem a ligar de forma transparente e evitem o problema de perder alguma parte da entrada de áudio/vídeo em tempo real. Se o cliente quiser desligar-se temporariamente (por exemplo, como resultado da receção de GoAway), pode fazê-lo sem perder o estado ao colocar em buffer as mensagens enviadas desde o último SessionResmumptionTokenUpdate. Este campo permite-lhes limitar o armazenamento em buffer (evitar manter todos os pedidos na RAM).

Não é usado para "retomar o estado de restauro" algum tempo depois. Nestes casos, é provável que não sejam necessários frames de áudio e vídeo parciais.

O que se segue?