Gemini 3.8 Live ist ein Konversationsmodell für Echtzeitinteraktionen, das für bidirektionale Sprach- und Videointeraktionen mit niedriger Latenz und für die Live-Avatarsynthese in persönlichen Gesprächen entwickelt wurde. 3.8 Live wurde für kontinuierliche Konversationsabläufe entwickelt und bietet standardmäßig aktivierte Funktionen wie empathischen Dialog, proaktive Audiofilterung, automatische Deaktivierung von Blockierungstools und dynamische mehrsprachige Umschaltung.
In diesem Dokument werden folgende Themen behandelt:
- Wie sich 3.8 Live in die Gemini-Modellfamilie einfügt
- Hauptfunktionen von 3.8 Live
- Integration mit dem Google Gen AI SDK
- Erforderliche API-Regeln und ‑Konventionen
- Migration von früheren Gemini Live API-Modellen
Rolle in der Gemini-Familie
3.8 Live wurde für Streaming-Interaktionen in Echtzeit entwickelt. Es funktioniert über bidirektionale WebSockets und verarbeitet Sprache, Live-Kamerafeeds und Bildschirmübertragungen mit einer Latenz von weniger als einer Sekunde. Dabei werden 24-kHz-Audio und synchronisierte 24-fps-Videoavatare generiert.
Modellspezifikationen und Vergleiche
In der folgenden Tabelle werden die Spezifikationen von 3.8 Live mit denen früherer Gemini Live API-Modelle verglichen:
| Attribut | Gemini 3.8 Live | Gemini 2.5 Flash Live API Native Audio (GA-Baseline) |
|---|---|---|
| Modell-ID | gemini-3.8-live |
gemini-live-2.5-flash-native-audio |
| Startphase | General Availability (GA) | General Availability (GA) |
| Eingabemodalitäten | Audio (16 kHz PCM), Video (1 FPS JPEG), Text | Audio (16 kHz PCM), Video (1 FPS JPEG), Text |
| Ausgabemodalitäten | Audio (24 kHz PCM), Video (24 FPS MP4 Live Avatar), Text | Audio (24 kHz PCM), Text |
| Live-Avatarsynthese | Synchronisierte Videoausgabe mit 24 FPS | Nicht unterstützt |
| Empathischer Dialog | Standardmäßig aktiviert | Erfordert explizite Konfiguration |
| Proaktives Audio | Standardmäßig aktiviert | Erfordert explizite Konfiguration |
| Ausführung von Funktionsaufrufen | Asynchron, nicht blockierend und automatische Deaktivierung von Blockierungstools (behavior="BLOCKING") |
Asynchron und synchron |
| Umgang mit Unterbrechungen | Herabstufung der Unterbrechung (wartet, wenn der Nutzer spricht) | Sofortige Unterbrechung (kann Audio des Nutzers überlappen) |
| Sprachunterstützung | Dynamische Umschaltung zwischen unterstützten Sprachen während des Streams | Unterstützte Sprachen |
| Domain-Bias | Unterstützt custom_vocabulary in AudioTranscriptionConfig |
Standard-Baseline-Transkription |
| Visuelle Token-Steuerung | Konfigurierbare media_resolution (LOW, MEDIUM, HIGH) |
Festes Token-Budget pro Frame |
Wann sollte Gemini 3.8 Live verwendet werden?
Verwenden Sie 3.8 Live in den folgenden Szenarien:
- Sie benötigen eine niedrige Konversationslatenz, natürliche Gesprächsabläufe und eine schnelle Wiederherstellung, wenn der Nutzer unterbricht (Barge-in).
- Ihre App ruft externe Tools auf und erfordert eine nicht blockierende Ausführung, damit die Audioausgabe fortgesetzt werden kann, während Backend-Systeme Anfragen verarbeiten.
- Sie möchten sprechende digitale Avatare mit synchronisierter Gesichtsanimation und Lip Sync mit 24 FPS ohne externe Rendering-Pipelines rendern.
- Ihre Nutzer unterhalten sich in mehreren Sprachen. Daher ist eine Spracherkennung und ‑umschaltung zwischen unterstützten Sprachen während des Streams erforderlich.
- Sie benötigen einen domainspezifischen Bias für Fachbegriffe, Artikelnummern oder Markennamen.
Vollständige Spezifikationen und Kontingentlimits finden Sie auf der 3.8 Live Modellseite.
Hauptfunktionen von Gemini 3.8 Live
3.8 Live bietet die folgenden Funktionen:
Live-Avatarsynthese mit 24 FPS: 3.8 Live generiert synchronisierte MP4-Videostreams mit 24 FPS (
response_modalities=["VIDEO"]) direkt aus der Modellausgabe. Generierte Gesichtsausdrücke und Lippenbewegungen werden in Echtzeit mit der synthetisierten Sprache synchronisiert.Sie können vorgefertigte Stock-Avatare verwenden oder benutzerdefinierte Referenzbilder bereitstellen, um digitale Concierges, Kundenservicemitarbeiter, virtuelle Tutoren oder interaktive Charaktere zu erstellen. Details zur Einrichtung finden Sie unter Live Avatare konfigurieren.
Standardmäßig aktivierter empathischer Dialog und proaktives Audio:
- Empathischer Dialog: In 3.8 Live standardmäßig aktiviert. Das Modell verarbeitet akustische Prosodie, stimmliche Hinweise, Pausen und Sprachmelodie in der Audioeingabe des Nutzers, um den Stimmton und das Gesprächstempo anzupassen.
- Proaktives Audio: In 3.8 Live standardmäßig aktiviert. Das Modell filtert Umgebungsgeräusche und Hintergrundgespräche und generiert nur dann Audioantworten, wenn es vom Nutzer angesprochen wird.
Asynchrone und automatische Deaktivierung von Blockierungstools: 3.8 Live bietet Tool-Aufrufverhalten, das für Echtzeit-Sprache entwickelt wurde:
- Nicht blockierende asynchrone Ausführung: Wenn das Modell einen Tool Aufruf generiert, bleibt die Audiositzung aktiv, sodass der Agent Konversationsbestätigungen streamen kann ("Ich rufe Ihre Kontodetails auf...") und Folgeeingaben verarbeiten kann, während Ihre Client-App Backend-APIs aufruft.
- Automatische Deaktivierung von Blockierungstools (
behavior="BLOCKING"): Wenn in einer Funktionsdeklarationbehavior="BLOCKING"festgelegt ist, wird die Generierung angehalten, bis die Tool-Antwort eintrifft. Wenn während des Blockierungsaufrufs eine neue Nutzereingabe eingeht, bricht der Gemini Live API-Server den ausstehenden Aufruf ab. - Umgang mit Unterbrechungen: In früheren Modellen wurde die Audioausgabe des Nutzers überlappt, wenn eine Tool
Antwort mit
scheduling="INTERRUPT"zurückgegeben wurde, während der Nutzer sprach. In 3.8 Live stuft der Server den Zeitplan aufWHEN_IDLEherab, wenn der Nutzer spricht, und gibt die Antwort aus, nachdem der Nutzer aufgehört hat zu sprechen.
Dynamische mehrsprachige Umschaltung und benutzerdefiniertes Vokabular:
- Mehrsprachige Unterstützung: Erkennt und wechselt während der Sitzung zwischen unterstützten Sprachen, ohne die Verbindung neu zu starten oder neu zu konfigurieren.
- Bias für benutzerdefiniertes Vokabular: Akzeptiert domainspezifische Keywords, Eigennamen, medizinische Begriffe und Produktcodes in
AudioTranscriptionConfig(überinput_audio_transcription) mitcustom_vocabulary, um die Transkriptionsgenauigkeit zu verbessern.
Multimodale visuelle Verankerung mit
media_resolutionSteuerung: Akzeptiert Videostreams in Echtzeit (JPEG-Frames mit 1 FPS, empfohlene Auflösung768x768) und ermöglicht Ihnen,media_resolution(MEDIA_RESOLUTION_LOW,MEDIA_RESOLUTION_MEDIUM,MEDIA_RESOLUTION_HIGH) zu konfigurieren, um die Token-Nutzung pro Frame und die visuellen Details auszubalancieren.
Kurzanleitung
Authentifizieren Sie sich zuerst Cloud de Confiance by S3NS mit den Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC).
Ersetzen Sie im folgenden Codebeispiel PROJECT_ID durch
Ihre Cloud de Confiance Projekt-ID.
SDK installieren
Installieren oder aktualisieren Sie das Google Gen AI SDK und die Audioabhängigkeiten:
pip install --upgrade google-genai websockets numpy
Bidirektionale Sitzung mit asynchronen Tool-Aufrufen starten
Im folgenden Beispiel wird eine Echtzeitsitzung mit gemini-3.8-live eingerichtet, ein Bias für benutzerdefiniertes Vokabular konfiguriert und nicht blockierende asynchrone Funktionsaufrufe ausgeführt:
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())
Erforderliche API-Regeln und ‑Konventionen
Halten Sie sich bei der Entwicklung mit 3.8 Live an die folgenden API-Konventionen:
- Informative Funktionsantworten: Geben Sie kein leeres Wörterbuch (
{}) oderNonevon einem Tool-Handler zurück. Wenn ein Tool einen Fehler oder eine leere Nutzlast zurückgibt, kann 3.8 Live wiederholte Funktionsaufrufe mit geänderten Argumenten generieren, es sei denn, die Antwort enthält Statusfelder. Geben Sie in jeder Tool-Antwort strukturierte Felder zurück:status: Ein maschinenlesbarer Statusstring wie"ok","no_results", oder"invalid_argument".retryable: Auffalsesetzen, wenn die Wiederholung des Aufrufs dasselbe Ergebnis zurückgibt.messageoderguidance: Text, der den Status angibt, der dem Nutzer gemeldet werden soll.
- Limits für Tool-Wiederholungen auf Promptebene: Fügen Sie in Ihre
system_instructionein Limit für Wiederholungen ein. Beispiel: "Wenn ein Tool-Aufruf keine Ergebnisse zurückgibt, informieren Sie den Nutzer, anstatt wiederholt mit Parameteränderungen zu suchen. Führen Sie niemals mehr als zwei aufeinanderfolgende Tool-Aufrufe aus, ohne mit dem Nutzer zu sprechen." - Strikte
FunctionResponseÜbereinstimmung:- Jede
FunctionResponse-Wendung muss die genaueidaus dem vorherigenFunctionCallenthalten. - Übergeben Sie Antwortobjekte direkt in
FunctionResponse.response.
- Jede
- Streaming-Audioformate:
- Audioeingabe: 16 kHz, 16 Bit, Little-Endian, Mono-PCM (
audio/pcm;rate=16000), in Blöcken von 20 bis 100 ms gestreamt. - Audioausgabe: 24 kHz Mono-PCM.
- Audioeingabe: 16 kHz, 16 Bit, Little-Endian, Mono-PCM (
- Entfernte Legacy-Parameter: Übergeben Sie in Ihrer Konfiguration nicht
enable_affective_dialogoderproactivity. Diese Funktionen sind in 3.8 Live standardmäßig aktiviert. - Konversationsverlauf vorbereiten: Wenn Sie den Verlauf für mehrere Wendungen mit
send_client_contentvorbereiten, warten Sie, bis die Client-App densetup_completeServer-Frame empfängt, und konfigurieren SieHistoryConfig(initial_history_in_client_content=True).
Zu Gemini 3.8 Live migrieren
Weitere Informationen zur Migration von
gemini-live-2.5-flash-native-audio zu
gemini-3.8-live finden Sie unter Von
Gemini 2.5 Flash Live API Native Audio zu
Gemini 3.8 Live migrieren.
Checkliste für Entwickler
Prüfen Sie die folgenden Punkte, bevor Sie Ihre App bereitstellen:
Zusätzliche Ressourcen
Weitere Informationen finden Sie in den folgenden Ressourcen: