L'API Live è un'API con stato che utilizza WebSockets. In questa sezione sono riportati ulteriori dettagli sull'API WebSockets.
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.
Connessione WebSocket
Per avviare una sessione, connettiti a questo endpoint WebSocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
Configurazione della sessione
Il messaggio iniziale dopo la connessione imposta la configurazione della sessione, che include il modello, i parametri di generazione, le istruzioni di sistema e gli strumenti.
Durante la sessione puoi modificare i parametri di configurazione, ad eccezione del modello.
Consulta la seguente configurazione di esempio. Tieni presente che le maiuscole dei nomi negli SDK possono variare. Puoi trovare 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 ulteriori informazioni 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 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, 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, quindi analizza il risultato in base alla definizione dei messaggi del server supportati.
Consulta 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 possono avere un campo usageMetadata
, ma in caso contrario includeranno esattamente uno degli altri campi del messaggio BidiGenerateContentServerMessage
. L'unione messageType
non è espressa in JSON, pertanto il campo verrà visualizzato al primo livello 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à interrompe la risposta del modello (chiamato anche "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 delle attività.
Campi | |
---|---|
disabled |
Facoltativo. Se è attivata (impostazione predefinita), l'input vocale e di testo rilevato viene conteggiato come attività. Se è disattivato, il client deve inviare indicatori di attività. |
startOfSpeechSensitivity |
Facoltativo. Determina la probabilità che il parlato venga rilevato. |
prefixPaddingMs |
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. |
endOfSpeechSensitivity |
Facoltativo. Determina la probabilità che il parlato rilevato sia terminato. |
silenceDurationMs |
Facoltativo. La durata richiesta di parti non vocali rilevate (ad es. silenzio) prima che venga eseguito il commit del segnale di fine vocale. Maggiore è questo valore, più lunghi possono essere gli intervalli di parlato senza interrompere l'attività dell'utente, ma la latenza del modello aumenterà. |
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[] |
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. |
turnComplete |
Facoltativo. Se true, indica che la generazione dei 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 utente inviati in tempo reale.
Le diverse modalità (audio, video e testo) vengono gestite come stream simultanei. L'ordine in questi stream non è garantito.
È diverso da BidiGenerateContentClientContent
in alcuni modi:
- Possono essere inviati continuamente senza interruzioni per la generazione del modello.
- Se è necessario combinare i dati interlacciati in
BidiGenerateContentClientContent
eBidiGenerateContentRealtimeInput
, il server tenta di ottimizzare per 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.
Campi | |
---|---|
mediaChunks[] |
Facoltativo. Dati in linea in byte per l'input multimediale. Non sono supportati più DEPRECATO: utilizza uno dei valori |
audio |
Facoltativo. Questi formano lo stream di input audio in tempo reale. |
video |
Facoltativo. Questi formano lo stream di input video in tempo reale. |
activityStart |
Facoltativo. Indica l'inizio dell'attività utente. Questo valore può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato. |
activityEnd |
Facoltativo. Indica la fine dell'attività utente. Questo valore può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato. |
audioStreamEnd |
Facoltativo. Indica che lo stream audio è terminato, ad esempio perché il microfono è stato disattivato. Questo valore deve essere inviato solo quando è attivato il rilevamento automatico delle attività (impostazione predefinita). Il client può riaprire lo stream inviando un messaggio audio. |
text |
Facoltativo. Questi formano lo stream di input di testo in tempo reale. |
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 | |
---|---|
generationComplete |
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. |
turnComplete |
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 |
Solo output. Se true, indica che un messaggio del client ha interrotto la generazione del modello corrente. Se il client riproduce i contenuti in tempo reale, è un buon segnale per interrompere e svuotare la coda di riproduzione corrente. |
groundingMetadata |
Solo output. Metadati di base per i contenuti generati. |
outputTranscription |
Solo output. Consente di riprodurre la trascrizione audio. La trascrizione viene inviata indipendentemente dagli altri messaggi del server e non è garantito l'ordine, in particolare non tra |
modelTurn |
Solo output. I contenuti generati dal modello nell'ambito della conversazione in corso con l'utente. |
BidiGenerateContentServerMessage
Messaggio di risposta per la chiamata BidiGenerateContent.
Campi | |
---|---|
usageMetadata |
Solo output. Metadati di utilizzo relativi alle risposte. |
Campo unione messageType . Il tipo di messaggio. messageType può essere solo uno dei seguenti: |
|
setupComplete |
Solo output. Inviata in risposta a un messaggio |
serverContent |
Solo output. Contenuti generati dal modello in risposta ai messaggi del cliente. |
toolCall |
Solo output. Chiedi al client di eseguire il |
toolCallCancellation |
Solo output. Notifica al cliente che un |
goAway |
Solo output. Un avviso che indica che il server si disconnetterà a breve. |
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 dell'RPC in streaming.
I client devono attendere un messaggio BidiGenerateContentSetupComplete
prima di inviare altri messaggi.
Campi | |
---|---|
model |
Obbligatorio. Il nome della risorsa del modello. che funge da ID per il modello. Formato: |
generationConfig |
Facoltativo. Configurazione della generazione. I seguenti campi non sono supportati:
|
systemInstruction |
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[] |
Facoltativo. Un elenco di Un |
realtimeInputConfig |
Facoltativo. Configura la gestione dell'input in tempo reale. |
sessionResumption |
Facoltativo. Configura il meccanismo di ripresa della sessione. Se incluso, il server invierà messaggi |
contextWindowCompression |
Facoltativo. Configura un meccanismo di compressione della finestra di contesto. Se incluso, il server ridurrà automaticamente le dimensioni del contesto quando supera la lunghezza configurata. |
outputAudioTranscription |
Facoltativo. Se impostato, attiva la trascrizione dell'output audio del modello. La trascrizione è in linea con il codice lingua specificato per l'audio di output, se configurato. |
BidiGenerateContentSetupComplete
Questo tipo non contiene campi.
Inviato in risposta a un messaggio BidiGenerateContentSetup
del cliente.
BidiGenerateContentToolCall
Chiedi al client di eseguire il functionCalls
e di restituire le risposte con i id
corrispondenti.
Campi | |
---|---|
functionCalls[] |
Solo output. La chiamata di funzione da eseguire. |
BidiGenerateContentToolCallCancellation
Notifica al cliente che un ToolCallMessage
emesso in precedenza con i id
specificati non doveva essere 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[] |
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 | |
---|---|
functionResponses[] |
Facoltativo. La risposta alle chiamate di funzione. |
BidiGenerateContentTranscription
Trascrizione di audio (input o output).
Campi | |
---|---|
text |
Testo della trascrizione. |
ContextWindowCompressionConfig
Attiva la compressione della finestra di contesto, un meccanismo per gestire la finestra di contesto del modello in modo che non superi una determinata lunghezza.
Campi | |
---|---|
Campo unione compressionMechanism . Il meccanismo di compressione della finestra di contesto utilizzato. compressionMechanism può essere solo uno dei seguenti: |
|
slidingWindow |
Un meccanismo a finestra mobile. |
triggerTokens |
Il numero di token (prima di eseguire un turno) necessari per attivare una compressione della finestra di contesto. Questo può essere utilizzato per bilanciare la qualità con la latenza, poiché finestre di contesto più brevi possono comportare risposte più rapide del modello. Tuttavia, qualsiasi operazione di compressione causerà un aumento temporaneo della latenza, pertanto non deve essere attivata di frequente. Se non viene impostato, il valore predefinito è l'80% del limite della finestra di contesto del modello. Rimane il 20% per la successiva richiesta dell'utente/risposta del modello. |
EndSensitivity
Determina in che modo viene rilevato il termine della conversazione.
Enum | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
Il valore predefinito è END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH |
Il rilevamento automatico termina più spesso il parlato. |
END_SENSITIVITY_LOW |
Il rilevamento automatico termina il parlato meno spesso. |
GoAway
Un avviso che indica che il server si disconnetterà a breve.
Campi | |
---|---|
timeLeft |
Il tempo rimanente prima che la connessione venga interrotta come ABORTED. Questa durata non sarà mai inferiore a un valore minimo specifico del modello, che verrà specificato insieme ai limiti di frequenza per il modello. |
RealtimeInputConfig
Configura il comportamento di inserimento in tempo reale in BidiGenerateContent
.
Campi | |
---|---|
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à. |
activityHandling |
Facoltativo. Definisce l'effetto dell'attività. |
turnCoverage |
Facoltativo. Definisce quale input è incluso nel turno dell'utente. |
SessionResumptionConfig
Configurazione della ripresa della sessione.
Questo messaggio è incluso nella configurazione della sessione come BidiGenerateContentSetup.sessionResumption
. Se configurato, il server invierà messaggi SessionResumptionUpdate
.
Campi | |
---|---|
handle |
L'handle di una sessione precedente. In caso contrario, viene creata una nuova sessione. Gli handle delle sessioni provengono dai valori |
SessionResumptionUpdate
Aggiornamento dello stato di ripresa della sessione.
Viene inviato solo se è stato impostato BidiGenerateContentSetup.sessionResumption
.
Campi | |
---|---|
newHandle |
Nuovo handle che rappresenta uno stato che può essere ripreso. Vuoto se |
resumable |
True se la sessione corrente può essere ripresa in questo momento. 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, |
SlidingWindow
Il metodo SlidingWindow opera ignorando i contenuti all'inizio della finestra di contesto. Il contesto risultante inizierà sempre all'inizio di un turno del ruolo USER. Le istruzioni di sistema e eventuali BidiGenerateContentSetup.prefixTurns
rimarranno sempre all'inizio del risultato.
Campi | |
---|---|
targetTokens |
Il numero target di token da conservare. Il valore predefinito è trigger_tokens/2. L'eliminazione di parti della finestra di contesto causa un aumento temporaneo della latenza, pertanto questo valore deve essere calibrato per evitare frequenti operazioni di compressione. |
StartSensitivity
Determina in che modo viene rilevato l'inizio della voce.
Enum | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
Il valore predefinito è START_SENSITIVITY_HIGH. |
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_ONLY_ACTIVITY . |
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). 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 nello stream audio). |
UsageMetadata
Metadati di utilizzo relativi alle risposte.
Campi | |
---|---|
promptTokenCount |
Solo output. Numero di token nel prompt. Quando è impostato |
cachedContentTokenCount |
Numero di token nella parte memorizzata nella cache del prompt (i contenuti memorizzati nella cache) |
responseTokenCount |
Solo output. Numero totale di token in tutte le risposte candidate generate. |
toolUsePromptTokenCount |
Solo output. Numero di token presenti nei prompt per l'utilizzo dello strumento. |
thoughtsTokenCount |
Solo output. Numero di token di pensieri per i modelli di pensiero. |
totalTokenCount |
Solo output. Numero totale di token per la richiesta di generazione (prompt + candidati per la risposta). |
promptTokensDetails[] |
Solo output. Elenco delle modalità elaborate nell'input della richiesta. |
cacheTokensDetails[] |
Solo output. Elenco delle modalità dei contenuti memorizzati nella cache nell'input della richiesta. |
responseTokensDetails[] |
Solo output. Elenco delle modalità restituite nella risposta. |
toolUsePromptTokensDetails[] |
Solo output. Elenco delle modalità elaborate per gli input delle richieste di utilizzo dello strumento. |
Ulteriori informazioni sui tipi comuni
Per saperne di più sui tipi di risorse API di uso comune Blob
,
Content
, FunctionCall
, FunctionResponse
, GenerationConfig
,
GroundingMetadata
, ModalityTokenCount
e Tool
, consulta
Generare contenuti.