Live API - WebSockets API reference

L'API Live è un'API stateful che utilizza WebSockets. In questa sezione troverai ulteriori dettagli sull'API WebSockets.

Sessioni

Una connessione WebSocket stabilisce una sessione tra il client e il server Gemini. Dopo che un client avvia una nuova connessione, la sessione può scambiare messaggi con il server per:

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

Connessione WebSocket

Per avviare una sessione, connettiti a questo endpoint websocket:

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

Configurazione sessione

Il messaggio iniziale inviato dopo aver stabilito la connessione WebSocket imposta la configurazione della sessione, che include il modello, i parametri di generazione, le istruzioni di sistema e gli strumenti.

Non puoi aggiornare la configurazione mentre la connessione è aperta. Tuttavia, puoi modificare i parametri di configurazione, ad eccezione del modello, quando metti in pausa e riprendi tramite il meccanismo di ripresa della sessione.

Vedi la seguente configurazione di esempio. Tieni presente che la distinzione tra maiuscole e minuscole nei nomi negli SDK può variare. Puoi consultare le opzioni di configurazione dell'SDK Python qui.


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

Per saperne di più sul campo API, consulta generationConfig.

Inviare messaggi

Per scambiare messaggi tramite la connessione WebSocket, 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 dei clienti supportati

Consulta i messaggi del client supportati nella tabella seguente:

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

Ricevere messaggi

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

Vedi quanto segue:

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)

I messaggi del server potrebbero avere un campo usageMetadata, ma altrimenti includeranno esattamente uno degli altri campi del messaggio BidiGenerateContentServerMessage. L'unione messageType non è espressa in JSON, quindi il campo viene visualizzato nel livello superiore del messaggio.

Messaggi ed eventi

ActivityEnd

Questo tipo non contiene campi.

Indica la fine dell'attività 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à interromperà la risposta del modello (anche chiamata "interruzione"). La risposta corrente del modello verrà interrotta nel momento dell'interruzione. Questo è il comportamento predefinito.
NO_INTERRUPTION La risposta del modello non verrà interrotta.

ActivityStart

Questo tipo non contiene campi.

Indica l'inizio dell'attività utente.

AudioTranscriptionConfig

Questo tipo non contiene campi.

La configurazione della trascrizione audio.

AutomaticActivityDetection

Configura il rilevamento automatico dell'attività.

Campi
disabled

bool

Facoltativo. Se è attivata (impostazione predefinita), l'attività vocale e l'immissione di testo rilevate vengono conteggiate come attività. Se disabilitati, il cliente deve inviare indicatori di attività.

startOfSpeechSensitivity

StartSensitivity

Facoltativo. Determina la probabilità di rilevamento del parlato.

prefixPaddingMs

int32

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

endOfSpeechSensitivity

EndSensitivity

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

silenceDurationMs

int32

Facoltativo. La durata richiesta del non parlato rilevato (ad es. silenzio) prima che venga eseguito il commit della fine del parlato. Maggiore è questo valore, più lunghi possono essere i silenzi nel discorso senza interrompere l'attività dell'utente, ma ciò aumenterà la latenza del modello.

BidiGenerateContentClientContent

Aggiornamento incrementale della conversazione corrente inviata dal client. Tutti i contenuti qui vengono aggiunti in modo incondizionato 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 a un solo turno, si tratta di una singola istanza. Per le query multi-turno, questo è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta.

turnComplete

bool

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

BidiGenerateContentRealtimeInput

Input dell'utente inviato in tempo reale.

Le diverse modalità (audio, video e testo) vengono gestite come stream simultanei. L'ordine di questi stream non è garantito.

Si differenzia da BidiGenerateContentClientContent per alcuni aspetti:

  • Possono essere inviati continuamente senza interruzioni alla generazione del modello.
  • Se è necessario combinare i dati intercalati tra BidiGenerateContentClientContent e BidiGenerateContentRealtimeInput, il server tenta di ottimizzare la risposta migliore, ma non ci sono garanzie.
  • La fine del turno non è specificata in modo esplicito, ma deriva dall'attività dell'utente (ad esempio, la fine del discorso).
  • Ancora prima della fine del turno, i dati vengono elaborati in modo incrementale per ottimizzare l'inizio della risposta del modello.
Campi
mediaChunks[]

Blob

Facoltativo. Dati in linea in byte per l'input multimediale. Non sono supportati più mediaChunks, tutti tranne il primo verranno ignorati.

DEPRECATO: utilizza audio, video o text.

audio

Blob

Facoltativo. Questi formano il flusso di input audio in tempo reale.

video

Blob

Facoltativo. Questi formano lo stream di input video in tempo reale.

activityStart

ActivityStart

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

activityEnd

ActivityEnd

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

audioStreamEnd

bool

Facoltativo. Indica che lo stream audio è terminato, ad esempio perché il microfono è stato disattivato.

Questo deve essere inviato solo quando è attivato il rilevamento automatico dell'attività (impostazione predefinita).

Il cliente può riaprire il flusso inviando un messaggio audio.

text

string

Facoltativo. Questi formano lo stream di input di Real-Time Text.

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 memorizzarlo nel buffer e riprodurlo in tempo reale.

Campi
generationComplete

bool

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

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

Quando il modello presuppone la riproduzione in tempo reale, si verifica un ritardo tra generation_complete e turn_complete causato dall'attesa del modello per il completamento della riproduzione.

turnComplete

bool

Solo output. Se true, indica che il modello ha completato il suo turno. La generazione inizierà solo in risposta a ulteriori messaggi del client.

interrupted

bool

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

groundingMetadata

GroundingMetadata

Solo output. Metadati di base per i contenuti generati.

inputTranscription

BidiGenerateContentTranscription

Solo output. Inserisci la trascrizione audio. La trascrizione viene inviata indipendentemente dagli altri messaggi del server e non è garantito un ordine.

outputTranscription

BidiGenerateContentTranscription

Solo output. Trascrizione audio di output. La trascrizione viene inviata indipendentemente dagli altri messaggi del server e non è garantito un ordine, in particolare tra serverContent e questo outputTranscription.

urlContextMetadata

UrlContextMetadata

modelTurn

Content

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

BidiGenerateContentServerMessage

Messaggio di risposta per la chiamata BidiGenerateContent.

Campi
usageMetadata

UsageMetadata

Solo output. Metadati di utilizzo relativi alla risposta o alle risposte.

Campo unione messageType. Il tipo di messaggio. messageType può essere solo uno dei seguenti tipi:
setupComplete

BidiGenerateContentSetupComplete

Solo output. Inviato in risposta a un messaggio BidiGenerateContentSetup del cliente al termine della configurazione.

serverContent

BidiGenerateContentServerContent

Solo output. Contenuti generati dal modello in risposta ai messaggi del cliente.

toolCall

BidiGenerateContentToolCall

Solo output. Richiedi al cliente di eseguire functionCalls e restituire le risposte con i id corrispondenti.

toolCallCancellation

BidiGenerateContentToolCallCancellation

Solo output. Notifica al cliente che un ToolCallMessage precedentemente emesso con i id specificati deve essere annullato.

goAway

GoAway

Solo output. Un avviso che indica che il server verrà disconnesso a breve.

sessionResumptionUpdate

SessionResumptionUpdate

Solo output. Aggiornamento dello stato di ripresa della sessione.

BidiGenerateContentSetup

Messaggio da inviare nel primo (e solo nel primo) BidiGenerateContentClientMessage. Contiene la configurazione che verrà applicata per la durata della RPC di streaming.

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

Campi
model

string

Obbligatorio. Il nome della risorsa del modello. che funge da ID per il modello.

Formato: models/{model}

generationConfig

GenerationConfig

Facoltativo. Configurazione della generazione.

I seguenti campi non sono supportati:

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

Content

Facoltativo. L'utente ha fornito istruzioni di sistema per il modello.

Nota: devono essere utilizzati solo testi nelle parti e i contenuti di ogni parte saranno in un paragrafo separato.

tools[]

Tool

Facoltativo. Un elenco di Tools che il modello può 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 delle conoscenze e dell'ambito del modello.

realtimeInputConfig

RealtimeInputConfig

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

sessionResumption

SessionResumptionConfig

Facoltativo. Configura il meccanismo di ripresa della sessione.

Se incluso, il server invierà SessionResumptionUpdate messaggi.

contextWindowCompression

ContextWindowCompressionConfig

Facoltativo. Configura un meccanismo di compressione della finestra contestuale.

Se incluso, il server ridurrà automaticamente le dimensioni del contesto quando superano la lunghezza configurata.

inputAudioTranscription

AudioTranscriptionConfig

Facoltativo. Se impostata, attiva la trascrizione dell'input vocale. La trascrizione è allineata alla lingua dell'audio di input, se configurata.

outputAudioTranscription

AudioTranscriptionConfig

Facoltativo. Se impostata, attiva la trascrizione dell'output audio del modello. La trascrizione è allineata al codice della lingua specificato per l'audio di output, se configurato.

proactivity

ProactivityConfig

Facoltativo. Configura la proattività del modello.

In questo modo, il modello può rispondere in modo proattivo all'input e ignorare gli input irrilevanti.

BidiGenerateContentSetupComplete

Questo tipo non contiene campi.

Inviato in risposta a un messaggio BidiGenerateContentSetup del cliente.

BidiGenerateContentToolCall

Richiedi al cliente di eseguire functionCalls e restituire le risposte con i id corrispondenti.

Campi
functionCalls[]

FunctionCall

Solo output. La chiamata di funzione da eseguire.

BidiGenerateContentToolCallCancellation

Notifica al cliente che un ToolCallMessage emesso in precedenza con i id specificati non avrebbe dovuto essere eseguito e deve essere annullato. Se si sono verificati effetti collaterali a seguito di queste chiamate di strumenti, i client potrebbero tentare di annullarle. Questo messaggio viene visualizzato solo nei casi in cui i client interrompono i turni del server.

Campi
ids[]

string

Solo output. Gli ID delle chiamate di strumenti da annullare.

BidiGenerateContentToolResponse

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

Tieni presente che nelle API GenerateContent unarie e di streaming lato server la chiamata di funzione avviene tramite lo scambio delle parti Content, mentre nelle API GenerateContent bidirezionali la chiamata di funzione avviene tramite questo insieme dedicato di messaggi.

Campi
functionResponses[]

FunctionResponse

Facoltativo. La risposta alle chiamate di funzione.

BidiGenerateContentTranscription

Trascrizione dell'audio (input o output).

Campi
text

string

Testo della trascrizione.

ContextWindowCompressionConfig

Attiva la compressione della finestra contestuale, un meccanismo per gestire la finestra contestuale del modello in modo che non superi una determinata lunghezza.

Campi
Campo unione compressionMechanism. Il meccanismo di compressione della finestra contestuale utilizzato. compressionMechanism può essere solo uno dei seguenti tipi:
slidingWindow

SlidingWindow

Un meccanismo di finestra scorrevole.

triggerTokens

int64

Il numero di token (prima di eseguire un turno) necessario per attivare una compressione della finestra contestuale.

Può essere utilizzato per bilanciare la qualità rispetto alla latenza, poiché finestre contestuali più brevi possono comportare risposte del modello più rapide. Tuttavia, qualsiasi operazione di compressione causerà un aumento temporaneo della latenza, pertanto non devono essere attivate di frequente.

Se non viene impostato, il valore predefinito è l'80% del limite della finestra contestuale del modello. Il 20% rimane disponibile per la successiva richiesta dell'utente/risposta del modello.

EndSensitivity

Determina come viene rilevata la fine della conversazione.

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

GoAway

Un avviso che indica che il server verrà disconnesso a breve.

Campi
timeLeft

Duration

Il tempo rimanente prima che la connessione venga terminata come INTERROTTA.

Questa durata non sarà mai inferiore a un minimo specifico del modello, che verrà specificato insieme ai limiti di frequenza per il modello.

ProactivityConfig

Configurazione delle funzionalità proattive.

Campi
proactiveAudio

bool

Facoltativo. Se l'opzione è abilitata, il modello può rifiutarsi di rispondere all'ultimo prompt. Ad esempio, ciò consente al modello di ignorare i discorsi fuori contesto o di rimanere in silenzio se l'utente non ha ancora fatto una richiesta.

RealtimeInputConfig

Configura il comportamento di input in tempo reale in BidiGenerateContent.

Campi
automaticActivityDetection

AutomaticActivityDetection

Facoltativo. Se non è impostato, il rilevamento automatico dell'attività è abilitato per impostazione predefinita. Se il rilevamento vocale automatico è disattivato, il client deve inviare segnali di attività.

activityHandling

ActivityHandling

Facoltativo. Definisce l'effetto dell'attività.

turnCoverage

TurnCoverage

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

SessionResumptionConfig

Configurazione della ripresa delle sessioni.

Questo messaggio è incluso nella configurazione della sessione come BidiGenerateContentSetup.sessionResumption. Se configurato, il server invierà SessionResumptionUpdate messaggi.

Campi
handle

string

L'handle di una sessione precedente. Se non è presente, viene creata una nuova sessione.

Gli handle di sessione provengono dai valori SessionResumptionUpdate.token delle connessioni precedenti.

SessionResumptionUpdate

Aggiornamento dello stato di ripresa della sessione.

Inviato solo se è stato impostato BidiGenerateContentSetup.sessionResumption.

Campi
newHandle

string

Nuovo handle che rappresenta uno stato che può essere ripristinato. Vuoto se resumable=false.

resumable

bool

True se la sessione corrente può essere ripresa a questo punto.

La ripresa non è possibile in alcuni punti della sessione. Ad esempio, quando il modello esegue chiamate di funzioni o genera. La ripresa della sessione (utilizzando un token di sessione precedente) in questo stato comporterà una perdita di dati. In questi casi, newHandle sarà vuoto e resumable sarà false.

SlidingWindow

Il metodo SlidingWindow funziona eliminando i contenuti all'inizio della finestra contestuale. Il contesto risultante inizierà sempre all'inizio del turno di un ruolo UTENTE. Le istruzioni di sistema e qualsiasi BidiGenerateContentSetup.prefixTurns rimarranno sempre all'inizio del risultato.

Campi
targetTokens

int64

Il numero target di token da conservare. Il valore predefinito è trigger_tokens/2.

L'eliminazione di parti della finestra contestuale causa un aumento temporaneo della latenza, pertanto questo valore deve essere calibrato per evitare operazioni di compressione frequenti.

StartSensitivity

Determina come viene rilevato l'inizio della conversazione.

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

TurnCoverage

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

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

UrlContextMetadata

Metadati relativi allo strumento di recupero del contesto dell'URL.

Campi
urlMetadata[]

UrlMetadata

Elenco del contesto URL.

UsageMetadata

Metadati di utilizzo relativi alla risposta o alle risposte.

Campi
promptTokenCount

int32

Solo output. Numero di token nel prompt. Quando cachedContent è impostato, questa è comunque la dimensione effettiva totale del prompt, il che significa che include il numero di token nei contenuti memorizzati nella cache.

cachedContentTokenCount

int32

Numero di token nella parte memorizzata nella cache del prompt (i contenuti memorizzati nella cache)

responseTokenCount

int32

Solo output. Numero totale di token in tutte le risposte candidate generate.

toolUsePromptTokenCount

int32

Solo output. Numero di token presenti nei prompt di utilizzo degli strumenti.

thoughtsTokenCount

int32

Solo output. Numero di token di pensieri per i modelli di ragionamento.

totalTokenCount

int32

Solo output. Il numero totale di token per la richiesta di generazione (prompt + candidati di risposta).

promptTokensDetails[]

ModalityTokenCount

Solo output. Elenco delle modalità elaborate nell'input della richiesta.

cacheTokensDetails[]

ModalityTokenCount

Solo output. Elenco delle modalità dei contenuti memorizzati nella cache nell'input della richiesta.

responseTokensDetails[]

ModalityTokenCount

Solo output. Elenco delle modalità restituite nella risposta.

toolUsePromptTokensDetails[]

ModalityTokenCount

Solo output. Elenco delle modalità elaborate per gli input delle richieste di utilizzo degli strumenti.

Token di autenticazione effimeri

I token di autenticazione effimeri possono essere ottenuti chiamando AuthTokenService.CreateToken e poi utilizzati con GenerativeService.BidiGenerateContentConstrained, passando il token in un parametro di query access_token o in un'intestazione HTTP Authorization con il prefisso "Token".

CreateAuthTokenRequest

Crea un token di autenticazione temporaneo.

Campi
authToken

AuthToken

Obbligatorio. Il token da creare.

AuthToken

Una richiesta per creare un token di autenticazione effimero.

Campi
name

string

Solo output. Identificatore. Il token stesso.

expireTime

Timestamp

Facoltativo. Solo input. Immutabile. Un orario facoltativo dopo il quale, quando si utilizza il token risultante, i messaggi nelle sessioni BidiGenerateContent verranno rifiutati. Gemini potrebbe chiudere la sessione in anticipo dopo questo periodo di tempo.

Se non viene impostato, il valore predefinito è 30 minuti nel futuro. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

newSessionExpireTime

Timestamp

Facoltativo. Solo input. Immutabile. Il periodo di tempo dopo il quale le nuove sessioni dell'API Live che utilizzano il token risultante da questa richiesta verranno rifiutate.

Se non viene impostato, il valore predefinito sarà 60 secondi in futuro. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

fieldMask

FieldMask

Facoltativo. Solo input. Immutabile. Se field_mask è vuoto e bidiGenerateContentSetup non è presente, il messaggio BidiGenerateContentSetup effettivo viene preso dalla connessione API live.

Se field_mask è vuoto e bidiGenerateContentSetup è presente, il messaggio BidiGenerateContentSetup effettivo viene preso interamente da bidiGenerateContentSetup in questa richiesta. Il messaggio di configurazione della connessione API Live viene ignorato.

Se field_mask non è vuoto, i campi corrispondenti di bidiGenerateContentSetup sovrascriveranno i campi del messaggio di configurazione nella connessione API Live.

Campo unione config. La configurazione specifica del metodo per il token risultante. config può essere solo uno dei seguenti tipi:
bidiGenerateContentSetup

BidiGenerateContentSetup

Facoltativo. Solo input. Immutabile. Configurazione specifica per BidiGenerateContent.

uses

int32

Facoltativo. Solo input. Immutabile. Il numero di volte in cui è possibile utilizzare il token. Se questo valore è zero, non viene applicato alcun limite. La ripresa di una sessione dell'API Live non viene conteggiata come utilizzo. Se non specificato, il valore predefinito è 1.

Scopri di più sui tipi comuni

Per saperne di più sui tipi di risorse API di uso comune Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount e Tool, vedi Generazione di contenuti.