Riferimento API Live

L'API Live consente interazioni vocali e video bidirezionali a bassa latenza con Gemini. Con l'API Live, puoi offrire agli utenti finali l'esperienza di conversazioni vocali naturali e simili a quelle umane, nonché la possibilità di interrompere le risposte del modello utilizzando i comandi vocali. L'API Live può elaborare input di testo, audio e video e fornire output di testo e audio.

Per ulteriori informazioni sull'API Live, consulta API Live.

Funzionalità

L'API Live include le seguenti funzionalità principali:

  • Multimodalità: il modello può vedere, sentire e parlare.
  • Interazione in tempo reale a bassa latenza: il modello può fornire risposte rapide.
  • Memoria di sessione: il modello conserva la memoria di tutte le interazioni all'interno di un'unica sessione, richiamando le informazioni ascoltate o viste in precedenza.
  • Supporto per la chiamata di funzioni, l'esecuzione di codice e la Ricerca come strumento: puoi integrare il modello con servizi e origini dati esterni.

L'API Live è progettata per la comunicazione server-to-server.

Per le app web e mobile, ti consigliamo di utilizzare l'integrazione dei nostri partner su Daily.

Modelli supportati

Inizia

Per provare l'API Live, vai a Vertex AI Studio, quindi fai clic su Avvia sessione.

L'API Live è un'API stateful che utilizza WebSockets.

Questa sezione mostra un esempio di come utilizzare l'API Live per la generazione di testo in testo utilizzando Python 3.9 e versioni successive.

Gen AI SDK for Python

Installa

pip install --upgrade google-genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI 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,
    LiveConnectConfig,
    HttpOptions,
    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?

Guida all'integrazione

Questa sezione descrive il funzionamento dell'integrazione con l'API Live.

Sessioni

Una connessione WebSocket stabilisce una sessione tra il client e il server Gemini.

Dopo che un client ha avviato una nuova connessione, la sessione può scambiare messaggi con il server per:

  • Invia testo, audio o video al server Gemini.
  • Ricevere richieste di chiamate audio, di testo o di funzione dal server Gemini.

La configurazione della sessione viene inviata nel primo messaggio dopo la connessione. Una configurazione della sessione include il modello, i parametri di generazione, le istruzioni di sistema e gli strumenti.

Vedi la seguente configurazione di esempio:


{
  "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]
}

Per ulteriori informazioni, consulta BidiGenerateContentSetup.

Inviare messaggi

I messaggi sono oggetti in formato JSON scambiati tramite la connessione WebSocket.

Per inviare un messaggio, il client deve inviare un oggetto JSON tramite una connessione WebSocket aperta. L'oggetto JSON deve avere esattamente uno dei campi del seguente insieme di oggetti:


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

Messaggi client supportati

Consulta i messaggi client supportati nella tabella seguente:

Messaggio Descrizione
BidiGenerateContentSetup Configurazione della sessione da inviare nel primo messaggio
BidiGenerateContentClientContent Aggiornamento incrementale dei contenuti della conversazione corrente inviati dal client
BidiGenerateContentRealtimeInput Input audio o video in tempo reale
BidiGenerateContentToolResponse Risposta a un ToolCallMessage ricevuto dal server

Ricevere messaggi

Per ricevere messaggi da Gemini, ascolta l'evento WebSocket "message" e poi analizza il risultato in base alla definizione dei messaggi del server supportati.

Consulta quanto segue:

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

I messaggi del server avranno esattamente uno dei campi del seguente insieme di oggetti:


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

Messaggi del server supportati

Consulta i messaggi del server supportati nella tabella seguente:

Messaggio Descrizione
BidiGenerateContentSetupComplete Un messaggio BidiGenerateContentSetup inviato dal cliente al termine della configurazione
BidiGenerateContentServerContent Contenuti generati dal modello in risposta a un messaggio del cliente
BidiGenerateContentToolCall Richiesta al client di eseguire le chiamate di funzione e restituire le risposte con gli ID corrispondenti
BidiGenerateContentToolCallCancellation Inviata quando una chiamata di funzione viene annullata perché l'utente ha interrotto l'output del modello
UsageMetadata Un report sul numero di token utilizzati dalla sessione fino a quel momento
GoAway Un indicatore che indica che la connessione attuale verrà interrotta a breve
SessionResumptionUpdate Un checkpoint della sessione che può essere ripreso
BidiGenerateContentTranscription Una trascrizione della voce dell'utente o del modello

Aggiornamenti incrementali dei contenuti

Utilizza gli aggiornamenti incrementali per inviare input di testo, stabilire il contesto della sessione o ripristinare il contesto della sessione. Per contesti brevi, puoi inviare interazioni passo passo per rappresentare la sequenza esatta di eventi. Per contesti più lunghi, è consigliabile fornire un riepilogo di un singolo messaggio per liberare la finestra di contesto per le interazioni successive.

Vedi il seguente esempio di messaggio contestuale:

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

Tieni presente che, anche se le parti di contenuto possono essere di tipo functionResponse, BidiGenerateContentClientContent non deve essere utilizzato per fornire una risposta alle chiamate di funzione emesse dal modello. Dovresti utilizzare BidiGenerateContentToolResponse. BidiGenerateContentClientContent deve essere utilizzato solo per stabilire il contesto precedente o fornire input di testo alla conversazione.

Riproduzione in streaming di audio e video

Esecuzione del codice

Per scoprire di più sull'esecuzione del codice, consulta Esecuzione del codice.

Chiamata di funzione

Tutte le funzioni devono essere dichiarate all'inizio della sessione inviando le definizioni degli strumenti come parte del messaggio BidiGenerateContentSetup.

Le funzioni vengono definite utilizzando JSON, in particolare con un sottoinsieme selezionato del formato dello schema OpenAPI. Una singola dichiarazione di funzione può includere i seguenti parametri:

  • name (stringa): l'identificatore univoco della funzione all'interno della chiamata API.

  • description (stringa): una spiegazione completa scopo e funzionalità della funzione.

  • parameters (oggetto): definisce i dati di input richiesti dalla funzione.

    • type (stringa): specifica il tipo di dati complessivo, ad esempio object.

    • properties (oggetto): elenca i singoli parametri, ciascuno con:

      • type (stringa): il tipo di dati del parametro, come stringa, numero intero, booleano.
      • description (stringa): una spiegazione chiara dello scopo e del formato previsto del parametro.
    • required (array): un array di stringhe che elenca i nomi dei parametri obbligatori per il funzionamento della funzione.

Per esempi di codice di una dichiarazione di funzione che utilizza i comandi curl, consulta Chiamata di funzione con l'API Gemini. Per esempi su come creare dichiarazioni di funzioni utilizzando gli SDK dell'API Gemini, consulta il tutorial sulle chiamate di funzione.

Da un singolo prompt, il modello può generare più chiamate di funzione e il codice necessario per collegarne gli output. Questo codice viene eseguito in un ambiente sandbox, generando messaggi BidiGenerateContentToolCall successivi. L'esecuzione viene messa in pausa fino a quando non sono disponibili i risultati di ogni chiamata di funzione, il che garantisce l'elaborazione sequenziale.

Il cliente deve rispondere con BidiGenerateContentToolResponse.

Per scoprire di più, consulta Introduzione alle chiamate di funzioni.

Formati audio

Consulta l'elenco dei formati audio supportati.

Istruzioni di sistema

Puoi fornire istruzioni di sistema per controllare meglio l'output del modello e specificare il tono e il sentiment delle risposte audio.

Le istruzioni di sistema vengono aggiunte al prompt prima dell'inizio dell'interazione e rimangono in vigore per l'intera sessione.

Le istruzioni di sistema possono essere impostate solo all'inizio di una sessione, subito dopo la connessione iniziale. Per fornire ulteriori input al modello durante la sessione, utilizza gli aggiornamenti incrementali dei contenuti.

Interruzioni

Gli utenti possono interrompere l'output del modello in qualsiasi momento. Quando il rilevamento dell'attività vocale (VAD) rileva un'interruzione, la generazione in corso viene annullata e ignorata. Nella cronologia della sessione vengono conservate solo le informazioni già inviate al client. Il server invia quindi un messaggio BidiGenerateContentServerContent per segnalare l'interruzione.

Inoltre, il server Gemini ignora tutte le chiamate di funzione in attesa e invia un messaggio BidiGenerateContentServerContent con gli ID delle chiamate annullate.

Voci

Per specificare una voce, imposta voiceName all'interno dell'oggetto speechConfig, come parte della configurazione della sessione.

Consulta la seguente rappresentazione JSON di un oggetto speechConfig:

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

Per visualizzare l'elenco delle voci supportate, consulta Modificare le impostazioni di lingua e voce.

Limitazioni

Tieni presente le seguenti limitazioni dell'API Live e di Gemini 2.0 quando pianifichi il tuo progetto.

Autenticazione client

L'API Live fornisce solo l'autenticazione da server a server e non è consigliata per l'utilizzo diretto del client. L'input del client deve essere instradato tramite un server di applicazioni intermedio per l'autenticazione sicura con l'API Live.

Durata massima della sessione

La durata massima predefinita di una sessione di conversazione è 10 minuti. Per maggiori informazioni, consulta Durata della sessione.

Rilevamento attività vocale (VAD)

Per impostazione predefinita, il modello esegue automaticamente il rilevamento dell'attività vocale (VAD) su un flusso di input audio continuo. La VAD può essere configurata con il RealtimeInputConfig.AutomaticActivityDetection campo del messaggio di configurazione.

Quando lo stream audio viene messo in pausa per più di un secondo (ad esempio quando l'utente disattiva il microfono), viene inviato un evento AudioStreamEnd per svuotare la cache dell'audio. Il client può riprendere l'invio di dati audio in qualsiasi momento.

In alternativa, la VAD automatica può essere disattivata impostando RealtimeInputConfig.AutomaticActivityDetection.disabled su true nel messaggio di configurazione. In questa configurazione, il client è responsabile del rilevamento della voce dell'utente e dell'invio di messaggi ActivityStart e ActivityEnd al momento opportuno. In questa configurazione non viene inviato un AudioStreamEnd. Invece, qualsiasi interruzione dello stream viene contrassegnata da un messaggio ActivityEnd.

Limitazioni aggiuntive

L'endpointing manuale non è supportato.

Gli input e gli output audio influiscono negativamente sulla capacità del modello di utilizzare le chiamate di funzione.

Conteggio token

Il conteggio dei token non è supportato.

Limiti di frequenza

Si applicano i seguenti limiti di frequenza:

  • 3 sessioni simultanee per chiave API
  • 4 milioni di token al minuto

Messaggi ed eventi

BidiGenerateContentClientContent

Aggiornamento incrementale della conversazione corrente inviata dal client. Tutti i contenuti qui presenti vengono aggiunti incondizionatamente alla cronologia delle conversazioni e utilizzati come parte del prompt per il modello per generare contenuti.

Un messaggio qui interromperà qualsiasi generazione di modelli in corso.

Campi
turns[]

Content

Facoltativo. I contenuti aggiunti alla conversazione corrente con il modello.

Per le query con un solo tratto, si tratta di una singola istanza. Per le query con più turni, si tratta di un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta.

turn_complete

bool

Facoltativo. Se true, indica che la generazione dei contenuti del server deve iniziare con il prompt attualmente accumulato. In caso contrario, il server attenderà altri messaggi prima di avviare la generazione.

BidiGenerateContentRealtimeInput

Input utente inviati in tempo reale.

È diverso da ClientContentUpdate in alcuni modi:

  • Possono essere inviati continuamente senza interruzioni per la generazione del modello.
  • Se è necessario combinare i dati interlacciati tra ClientContentUpdate e RealtimeUpdate, il server tenta di ottimizzare per ottenere la risposta migliore, ma non ci sono garanzie.
  • La fine del turno non è specificata esplicitamente, ma deriva dall'attività dell'utente (ad esempio, la fine del discorso).
  • Anche prima della fine del turno, i dati vengono elaborati in modo incrementale per ottimizzare l'avvio rapido della risposta del modello.
  • Si presume sempre che sia l'input dell'utente (non può essere utilizzato per compilare la cronologia delle conversazioni).
Campi
media_chunks[]

Blob

Facoltativo. Dati in linea in byte per l'input multimediale.

activity_start

ActivityStart

Facoltativo. Indica l'inizio dell'attività utente. Questo valore può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato.

activity_end

ActivityEnd

Facoltativo. Indica la fine dell'attività utente. Questo valore può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato.

ActivityEnd

Questo tipo non contiene campi.

Indica la fine dell'attività utente.

ActivityStart

Questo tipo non contiene campi.

È possibile impostare un solo campo di questo messaggio alla volta. Indica l'inizio dell'attività utente.

BidiGenerateContentServerContent

Aggiornamento incrementale del server generato dal modello in risposta ai messaggi del client.

I contenuti vengono generati il più rapidamente possibile e non in tempo reale. I client possono scegliere di mettere in buffer e riprodurre i contenuti in tempo reale.

Campi
turn_complete

bool

Solo output. Se true, indica che la generazione del modello è stata completata. La generazione inizierà solo in risposta a ulteriori messaggi del client. Può essere impostato insieme a content, a indicare che content è l'ultimo della svolta.

interrupted

bool

Solo output. Se true, indica che un messaggio del client ha interrotto la generazione del modello corrente. Se il cliente riproduce i contenuti in tempo reale, è un buon segnale per interrompere e svuotare la coda corrente. Se il client riproduce i contenuti in tempo reale, è un buon segnale per interrompere e svuotare la coda di riproduzione corrente.

generation_complete

bool

Solo output. Se true, indica che la generazione del modello è stata completata.

Quando il modello viene interrotto durante la generazione, non verrà visualizzato il messaggio "generation_complete" nel turno interrotto, ma verrà visualizzato "interrupted > turn_complete".

Quando il modello presuppone la riproduzione in tempo reale, si verificherà un ritardo tra generation_complete e turn_complete causato dal fatto che il modello attende il termine della riproduzione.

grounding_metadata

GroundingMetadata

Solo output. I metadati specificano le fonti utilizzate per basare i contenuti generati.

input_transcription

Transcription

Facoltativo. Inserisci la trascrizione. La trascrizione è indipendente dal turno del modello, il che significa che non implica alcun ordinamento tra la trascrizione e il turno del modello.

output_transcription

Transcription

Facoltativo. Trascrizione dell'output. La trascrizione è indipendente dal turno del modello, il che significa che non implica alcun ordinamento tra la trascrizione e il turno del modello.

model_turn

Content

Solo output. I contenuti generati dal modello nell'ambito della conversazione in corso con l'utente.

Trascrizione

Messaggio di trascrizione audio.

Campi
text

string

Facoltativo. Testo della trascrizione.

finished

bool

Facoltativo. Il valore booleano indica la fine della trascrizione.

BidiGenerateContentSetup

Messaggio da inviare nel primo e unico messaggio del cliente. Contiene la configurazione che verrà applicata per tutta la durata della sessione di streaming.

I client devono attendere un messaggio BidiGenerateContentSetupComplete prima di inviare altri messaggi.

Campi
model

string

Obbligatorio. Il nome completo del modello dell'editore.

Formato del modello del publisher: projects/{project}/locations/{location}/publishers/\*/models/\*

generation_config

GenerationConfig

Facoltativo. Configurazione della generazione.

I seguenti campi non sono supportati:

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

Content

Facoltativo. L'utente ha fornito le istruzioni di sistema per il modello. Nota: nelle parti deve essere utilizzato solo il testo e i contenuti di ogni parte saranno in un paragrafo separato.

tools[]

Tool

Facoltativo. Un elenco di Tools che il modello potrebbe utilizzare per generare la risposta successiva.

Un Tool è un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori della conoscenza e dell'ambito del modello.

session_resumption

SessionResumptionConfig

Facoltativo. Configura il meccanismo di ripresa della sessione. Se incluso, il server invierà messaggi SessionResumptionUpdate periodici al client.

context_window_compression

ContextWindowCompressionConfig

Facoltativo. Configura il meccanismo di compressione della finestra di contesto.

Se incluso, il server comprimerà la finestra di contesto in modo che rientri nella durata specificata.

realtime_input_config

RealtimeInputConfig

Facoltativo. Configura la gestione dell'input in tempo reale.

input_audio_transcription

AudioTranscriptionConfig

Facoltativo. La trascrizione dell'input è in linea con la lingua dell'audio di input.

output_audio_transcription

AudioTranscriptionConfig

Facoltativo. La trascrizione dell'output è in linea con il codice lingua specificato per l'audio di output.

AudioTranscriptionConfig

Questo tipo non contiene campi.

La configurazione della trascrizione audio.

BidiGenerateContentSetupComplete

Questo tipo non contiene campi.

Inviato in risposta a un messaggio BidiGenerateContentSetup del cliente.

BidiGenerateContentToolCall

Chiedi al client di eseguire il function_calls e di restituire le risposte con i id corrispondenti.

Campi
function_calls[]

FunctionCall

Solo output. La chiamata di funzione da eseguire.

BidiGenerateContentToolCallCancellation

Notifica al cliente che un ToolCallMessage emesso in precedenza con i id specificati non deve essere stato eseguito e deve essere annullato. Se le chiamate allo strumento hanno avuto effetti collaterali, i client potrebbero tentare di annullarle. Questo messaggio si verifica solo nei casi in cui i client interrompono i turni del server.

Campi
ids[]

string

Solo output. Gli ID delle chiamate dello strumento da annullare.

BidiGenerateContentToolResponse

Risposta generata dal client a un ToolCall ricevuto dal server. I singoli oggetti FunctionResponse vengono associati ai rispettivi oggetti FunctionCall in base al campo id.

Tieni presente che nelle API GenerateContent con streaming lato server e con un solo parametro la chiamata di funzione avviene scambiando le parti Content, mentre nelle API GenerateContent bidirezionali la chiamata di funzione avviene tramite questo insieme di messaggi dedicato.

Campi
function_responses[]

FunctionResponse

Facoltativo. La risposta alle chiamate di funzione.

RealtimeInputConfig

Configura il comportamento dell'input in tempo reale in BidiGenerateContent.

Campi
automatic_activity_detection

AutomaticActivityDetection

Facoltativo. Se non è impostato, il rilevamento automatico delle attività è abilitato per impostazione predefinita. Se il rilevamento automatico della voce è disattivato, il cliente deve inviare indicatori di attività.

activity_handling

ActivityHandling

Facoltativo. Definisce l'effetto dell'attività.

turn_coverage

TurnCoverage

Facoltativo. Definisce quale input è incluso nel turno dell'utente.

ActivityHandling

I diversi modi di gestire l'attività utente.

Enum
ACTIVITY_HANDLING_UNSPECIFIED Se non specificato, il comportamento predefinito è START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Se il valore è true, l'inizio dell'attività interrompe la risposta del modello (chiamato anche "interruzione"). La risposta corrente del modello verrà interrotta nel momento dell'interruzione. Questo è il comportamento standard.
NO_INTERRUPTION La risposta del modello non verrà interrotta.

AutomaticActivityDetection

Configura il rilevamento automatico delle attività.

Campi
start_of_speech_sensitivity

StartSensitivity

Facoltativo. Determina la probabilità che il parlato venga rilevato.

end_of_speech_sensitivity

EndSensitivity

Facoltativo. Determina la probabilità che il parlato rilevato sia terminato.

prefix_padding_ms

int32

Facoltativo. La durata richiesta del parlato rilevato prima dell'inserimento dell'indicatore inizio parlato. Più basso è questo valore, più sensibile è il rilevamento dell'inizio del parlato e più breve può essere il parlato riconosciuto. Tuttavia, aumenta anche la probabilità di falsi positivi.

silence_duration_ms

int32

Facoltativo. La durata richiesta del silenzio (o assenza di parlato) rilevato prima dell'inserimento del comando di fine parlato. Maggiore è questo valore, più lunghi possono essere gli intervalli di parlato senza interrompere l'attività dell'utente, ma aumenterà la latenza del modello.

disabled

bool

Facoltativo. Se questa impostazione è attiva, l'input vocale e di testo rilevato viene conteggiato come attività. Se è disattivato, il client deve inviare indicatori di attività.

EndSensitivity

Fine della sensibilità vocale.

Enum
END_SENSITIVITY_UNSPECIFIED Il valore predefinito è END_SENSITIVITY_LOW.
END_SENSITIVITY_HIGH Il rilevamento automatico termina più spesso il parlato.
END_SENSITIVITY_LOW Il rilevamento automatico termina il parlato meno spesso.

StartSensitivity

Inizio della sensibilità vocale.

Enum
START_SENSITIVITY_UNSPECIFIED Il valore predefinito è START_SENSITIVITY_LOW.
START_SENSITIVITY_HIGH Il rilevamento automatico rileverà l'inizio della voce più spesso.
START_SENSITIVITY_LOW Il rilevamento automatico rileverà l'inizio della voce meno spesso.

TurnCoverage

Opzioni relative all'input incluso nel turno dell'utente.

Enum
TURN_COVERAGE_UNSPECIFIED Se non specificato, il comportamento predefinito è TURN_INCLUDES_ALL_INPUT.
TURN_INCLUDES_ONLY_ACTIVITY Il turno dell'utente include solo le attività dall'ultimo turno, esclusa l'inattività (ad es. il silenzio nello stream audio).
TURN_INCLUDES_ALL_INPUT Il turno dell'utente include tutti gli input in tempo reale dall'ultimo turno, inclusa l'inattività (ad es. silenzio nello stream audio). Questo è il comportamento standard.

UsageMetadata

Metadati sull'utilizzo dei contenuti memorizzati nella cache.

Campi
total_token_count

int32

Numero totale di token consumati dai contenuti memorizzati nella cache.

text_count

int32

Numero di caratteri di testo.

image_count

int32

Numero di immagini.

video_duration_seconds

int32

Durata del video in secondi.

audio_duration_seconds

int32

Durata dell'audio in secondi.

GoAway

A breve il server non potrà più fornire assistenza al client.

Campi
time_left

Duration

Il tempo rimanente prima che la connessione venga interrotta come ABORTED. Il tempo minimo restituito qui è specificato in modo diverso insieme ai limiti di frequenza per un determinato modello.

SessionResumptionUpdate

Aggiornamento dello stato di ripresa della sessione.

Viene inviato solo se è stato impostato BidiGenerateContentSetup.session_resumption.

Campi
new_handle

string

Nuovo handle che rappresenta lo stato che può essere ripreso. Vuoto se resumable=false.

resumable

bool

True se la sessione può essere ripresa in questo momento.

In alcuni punti potrebbe non essere possibile riprendere la sessione. In questo caso, inviamo un aggiornamento con new_handle vuoto e resumable=false. Un esempio di questo caso potrebbe essere il modello che esegue chiamate di funzione o semplicemente genera. La ripresa della sessione (utilizzando il token della sessione precedente) in questo stato comporterà una perdita di dati.

last_consumed_client_message_index

int64

Indice dell'ultimo messaggio inviato dal client incluso nello stato rappresentato da questo SessionResumptionToken. Viene inviato solo quando è impostato SessionResumptionConfig.transparent.

La presenza di questo indice consente agli utenti di ricollegarsi in modo trasparente ed evitare di perdere parte dell'input audio/video in tempo reale. Se il client vuole disconnettersi temporaneamente (ad esempio a seguito della ricezione di GoAway), può farlo senza perdere lo stato mettendo in buffer i messaggi inviati dall'ultimo SessionResmumptionTokenUpdate. Questo campo consente di limitare il buffering (evitare di mantenere tutte le richieste in RAM).

Non verrà utilizzato per la "ripresa per ripristinare lo stato" in un secondo momento, in quanto in questi casi probabilmente non sono necessari frame audio e video parziali.

Passaggi successivi