Gemini 3.8 Live è un modello conversazionale in tempo reale creato per interazioni vocali e video bidirezionali a bassa latenza e per la sintesi di avatar live faccia a faccia. Progettato per flussi di lavoro conversazionali continui, 3.8 Live fornisce dialogo empatico, filtro audio proattivo, strumenti di blocco con annullamento automatico e cambio lingua multilingue dinamico attivati per impostazione predefinita.
Questo documento tratta i seguenti argomenti:
- Come 3.8 Live si inserisce nella famiglia di modelli Gemini.
- Funzionalità principali di 3.8 Live.
- Integrazione con l'SDK Google Gen AI.
- Regole e convenzioni API richieste.
- Migrazione dai modelli API Gemini Live precedenti.
Ruolo nella famiglia Gemini
3.8 Live è progettato per interazioni di streaming in tempo reale. Opera su WebSocket bidirezionali, elaborando la voce, i feed della videocamera live e le trasmissioni dello schermo con una latenza inferiore al secondo durante la generazione di audio a 24 kHz e avatar video sincronizzati a 24 FPS.
Specifiche e confronti dei modelli
La tabella seguente confronta le specifiche tra 3.8 Live e i modelli API Gemini Live precedenti:
| Attributo | Gemini 3.8 Live | Gemini 2.5 Flash Live API Native Audio (baseline GA) |
|---|---|---|
| ID modello | gemini-3.8-live |
gemini-live-2.5-flash-native-audio |
| Fase di lancio | Disponibilità generale (GA) | Disponibilità generale (GA) |
| Modalità di input | Audio (PCM a 16 kHz), video (JPEG a 1 FPS), testo | Audio (PCM a 16 kHz), video (JPEG a 1 FPS), testo |
| Modalità di output | Audio (PCM a 24 kHz), video (avatar live MP4 a 24 FPS), testo | Audio (PCM a 24 kHz), testo |
| Sintesi di avatar live | Output video sincronizzato a 24 FPS | Non supportato |
| Dialogo empatico | Questa opzione è attiva per impostazione predefinita | Richiede una configurazione esplicita |
| Audio proattivo | Questa opzione è attiva per impostazione predefinita | Richiede una configurazione esplicita |
| Esecuzione della chiamata di funzione | Blocco asincrono non bloccante e con annullamento automatico (behavior="BLOCKING") |
Asincrono e sincrono |
| Gestione dell'interruzione | Riduzione dell'interruzione educata (attende quando l'utente parla) | Interruzione immediata (può sovrapporsi all'audio dell'utente) |
| Supporto linguistico | Cambio dinamico durante lo streaming tra le lingue supportate | Lingue supportate |
| Bias del dominio | Supporta custom_vocabulary in AudioTranscriptionConfig |
Trascrizione di base standard |
| Controllo dei token visivi | media_resolution configurabile (LOW, MEDIUM, HIGH) |
Budget di token fisso per frame |
Quando utilizzare Gemini 3.8 Live
Utilizza 3.8 Live nei seguenti scenari:
- Hai bisogno di una bassa latenza conversazionale, di un'alternanza naturale e di un ripristino rapido quando l'utente interrompe (interruzione).
- La tua app chiama strumenti esterni e richiede un'esecuzione non bloccante in modo che l'output audio continui mentre i sistemi di backend elaborano le richieste.
- Vuoi fare il rendering di avatar digitali parlanti con animazione facciale e playback a 24 FPS senza pipeline di rendering esterne.
- Gli utenti conversano in più lingue, il che richiede il rilevamento e il cambio della lingua durante lo streaming tra le lingue supportate.
- Hai bisogno di un bias del vocabolario specifico per il dominio per la terminologia tecnica, gli SKU o i nomi dei brand.
Per le specifiche complete e i limiti di quota, consulta la pagina del modello 3.8 Live.
Funzionalità principali di Gemini 3.8 Live
3.8 Live introduce le seguenti funzionalità:
Sintesi video di avatar live a 24 FPS: 3.8 Live genera stream video MP4 sincronizzati a 24 FPS (
response_modalities=["VIDEO"]) direttamente dall'output del modello. Le espressioni facciali e i movimenti delle labbra generati si allineano alla voce sintetizzata in tempo reale.Puoi utilizzare avatar stock predefiniti o fornire immagini di riferimento personalizzate per creare concierge digitali, agenti dell'assistenza clienti, tutor virtuali o personaggi interattivi. Per i dettagli sulla configurazione, consulta Configurare gli avatar live.
Dialogo empatico e audio proattivo attivati per impostazione predefinita:
- Dialogo empatico: attivato per impostazione predefinita in 3.8 Live. Il modello elabora la prosodia acustica, i segnali vocali, le pause e l'inflessione vocale nell'input audio dell'utente per regolare il tono vocale e il ritmo conversazionale.
- Audio proattivo: attivato per impostazione predefinita in 3.8 Live. Il modello filtra il rumore ambientale e la voce di sottofondo, generando risposte audio solo quando l'utente si rivolge a lui.
Chiamata di funzione di blocco asincrona e con annullamento automatico: 3.8 Live fornisce comportamenti di chiamata di strumenti progettati per la voce in tempo reale:
- Esecuzione asincrona non bloccante: quando il modello genera una chiamata di strumenti, la sessione audio rimane attiva in modo che l'agente possa eseguire lo streaming di riconoscimenti conversazionali ("Let me pull up your account details...") e gestire l'input di follow-up mentre l'app client chiama le API di backend.
- Chiamate di blocco con annullamento automatico (
behavior="BLOCKING"): quando una dichiarazione di funzione impostabehavior="BLOCKING", la generazione si mette in pausa fino all' arrivo della risposta dello strumento. Se arriva un nuovo input utente durante l'esecuzione della chiamata di blocco, il server API Gemini Live annulla la chiamata in attesa. - Gestione dell'interruzione educata: nei modelli precedenti, la restituzione di una risposta dello strumento
con
scheduling="INTERRUPT"mentre l'utente parlava si sovrapponeva all'audio dell'utente. In 3.8 Live, il server riduce la pianificazione aWHEN_IDLEquando la voce dell'utente è attiva e riproduce la risposta dopo che l'utente ha finito di parlare.
Cambio lingua multilingue dinamico e vocabolario personalizzato:
- Supporto multilingue: rileva e passa da una lingua supportata all'altra durante la sessione senza riavviare o riconfigurare la connessione.
- Bias del vocabolario personalizzato: accetta parole chiave specifiche del dominio, nomi propri, termini medici e codici prodotto in
AudioTranscriptionConfig(tramiteinput_audio_transcription) utilizzandocustom_vocabularyper migliorare l'accuratezza della trascrizione.
Grounding visivo multimodale con controllo
media_resolution: accetta stream video in tempo reale (frame JPEG a 1 FPS, risoluzione consigliata768x768) e consente di configuraremedia_resolution(MEDIA_RESOLUTION_LOW,MEDIA_RESOLUTION_MEDIUM,MEDIA_RESOLUTION_HIGH) per bilanciare l'utilizzo dei token per frame e i dettagli visivi.
Guida rapida
Prima di iniziare, esegui l'autenticazione a Cloud de Confiance by S3NS utilizzando le Credenziali predefinite dell'applicazione (ADC).
Nel seguente esempio di codice, sostituisci PROJECT_ID con
il tuo Cloud de Confiance ID progetto.
Installa l'SDK
Installa o aggiorna l'SDK Google Gen AI e le dipendenze audio:
pip install --upgrade google-genai websockets numpy
Avvia una sessione bidirezionale con chiamata di strumenti asincrona
L'esempio seguente stabilisce una sessione in tempo reale con gemini-3.8-live, configura il bias del vocabolario personalizzato ed esegue chiamate di funzione asincrone non bloccanti:
import asyncio
from google import genai
from google.genai import types
PROJECT_ID = "PROJECT_ID"
LOCATION = "us-central1"
MODEL_ID = "gemini-3.8-live"
# Initialize the Gen AI client for enterprise.
client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION)
# Define a tool for asynchronous execution.
order_lookup_tool = types.FunctionDeclaration(
name="lookup_order_status",
description="Fetches real-time shipping status for a customer order ID.",
parameters=types.Schema(
type="OBJECT",
properties={
"order_id": types.Schema(
type="STRING",
description="The order ID, for example, ORD-8472",
),
},
required=["order_id"],
),
)
# Configure the live connection.
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
system_instruction=types.Content(
parts=[
types.Part.from_text(
text=(
"You are an enterprise concierge. When you call a tool, "
"briefly acknowledge the request and tell the user what you're doing. "
"If a tool returns no results, inform the user before trying again. "
"Never issue more than two consecutive tool calls without speaking."
)
)
]
),
speech_config=types.SpeechConfig(
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Aoede")
),
),
input_audio_transcription=types.AudioTranscriptionConfig(
custom_vocabulary=["ORD-8472", "Gemini Live", "Express Shipping"]
),
output_audio_transcription=types.AudioTranscriptionConfig(),
tools=[types.Tool(function_declarations=[order_lookup_tool])],
)
async def handle_tool_call(session, function_call):
"""Executes backend calls asynchronously without blocking incoming audio."""
order_id = function_call.args.get("order_id", "")
await asyncio.sleep(2.0) # Simulate backend API latency.
if not order_id.startswith("ORD-"):
result = {
"status": "invalid_argument",
"retryable": False,
"message": f"Order ID '{order_id}' is invalid. Ask the user to verify.",
}
else:
result = {
"status": "ok",
"retryable": False,
"order_id": order_id,
"shipping_status": "Out for delivery by 4:00 PM",
}
# Send tool response matching the call ID.
await session.send_tool_response(
function_responses=[
types.FunctionResponse(
id=function_call.id,
name=function_call.name,
response=result,
)
]
)
async def main():
async with client.aio.live.connect(model=MODEL_ID, config=config) as session:
print(f"Connected to {MODEL_ID}")
# Send initial text or stream 16 kHz PCM audio chunks.
await session.send_realtime_input(
text="Hi! Can you check the status of order ORD-8472?"
)
async for message in session.receive():
# Handle asynchronous tool calls.
if message.tool_call:
for call in message.tool_call.function_calls:
asyncio.create_task(handle_tool_call(session, call))
# Process audio output chunks and transcriptions.
if message.server_content:
if (
message.server_content.output_transcription
and message.server_content.output_transcription.text
):
print(
f"Agent: {message.server_content.output_transcription.text}",
end="",
flush=True,
)
if __name__ == "__main__":
asyncio.run(main())
Regole e convenzioni API richieste
Quando crei con 3.8 Live, segui queste convenzioni API:
- Risposte di funzione informative: non restituire un dizionario vuoto (
{}) oNoneda un gestore di strumenti. Quando uno strumento restituisce un errore o un payload vuoto, 3.8 Live potrebbe generare chiamate di funzione ripetute con argomenti modificati, a meno che la risposta non includa campi di stato. Restituisci campi strutturati in ogni risposta dello strumento:status: una stringa di stato leggibile dalla macchina, ad esempio"ok","no_results"o"invalid_argument".retryable: impostalo sufalsequando la ripetizione della chiamata restituisce lo stesso risultato.messageoguidance: testo che specifica lo stato da segnalare all'utente.
- Limiti di ripetizione degli strumenti a livello di prompt: includi un limite di ripetizione in
system_instruction. Ad esempio: "Se una chiamata di strumenti non restituisce risultati, informa l'utente anziché eseguire ricerche ripetute con variazioni dei parametri. Non eseguire mai più di due chiamate di strumenti consecutive senza parlare con l'utente." - Corrispondenza rigorosa
FunctionResponse:- Ogni turno
FunctionResponsedeve fornire l'esattoiddelFunctionCallprecedente. - Passa gli oggetti di risposta direttamente in
FunctionResponse.response.
- Ogni turno
- Formati audio di streaming:
- Audio di input: PCM mono a 16 kHz, 16 bit, little-endian (
audio/pcm;rate=16000), trasmesso in streaming in blocchi da 20 ms a 100 ms. - Audio di output: PCM mono a 24 kHz.
- Audio di input: PCM mono a 16 kHz, 16 bit, little-endian (
- Parametri legacy rimossi: non passare
enable_affective_dialogoproactivitynella configurazione; queste funzionalità sono attivate per impostazione predefinita in 3.8 Live. - Inserimento della cronologia delle conversazioni: se inserisci la cronologia multi-turno utilizzando
send_client_content, attendi che l'app client riceva il frame del serversetup_completee configuraHistoryConfig(initial_history_in_client_content=True).
Esegui la migrazione a Gemini 3.8 Live
Per ulteriori informazioni sulla migrazione da
gemini-live-2.5-flash-native-audio a
gemini-3.8-live, consulta Eseguire la migrazione da
Gemini 2.5 Flash Live API Native Audio a
Gemini 3.8 Live.
Elenco di controllo per gli sviluppatori
Verifica i seguenti elementi prima di eseguire il deployment dell'app:
Risorse aggiuntive
Per maggiori informazioni, consulta le seguenti risorse: