Live API-Referenz

Die Live API ermöglicht bidirektionale Sprach- und Videointeraktionen mit geringer Latenz mit Gemini. Mit der Live API können Sie Endnutzern natürliche, menschenähnliche Sprachkonversationen ermöglichen und die Möglichkeit bieten, die Antworten des Modells mit Sprachbefehlen zu unterbrechen. Die Live API kann Text-, Audio- und Videoeingaben verarbeiten und Text- und Audioausgaben bereitstellen.

Weitere Informationen zur Live API finden Sie unter Live API.

Leistungsspektrum

Die Live API bietet die folgenden wichtigen Funktionen:

  • Multimodalität: Das Modell kann sehen, hören und sprechen.
  • Echtzeitinteraktion mit geringer Latenz: Das Modell kann schnelle Antworten liefern.
  • Sitzungsspeicher: Das Modell speichert alle Interaktionen innerhalb einer einzelnen Sitzung und ruft zuvor gehörte oder gesehene Informationen ab.
  • Unterstützung für Funktionsaufrufe, Codeausführung und die Suche als Tool: Sie können das Modell in externe Dienste und Datenquellen einbinden.

Die Live API ist für die Server-zu-Server-Kommunikation konzipiert.

Für Web- und mobile Apps empfehlen wir die Integration unserer Partner bei Daily.

Unterstützte Modelle

Jetzt starten

Wenn Sie die Live API ausprobieren möchten, rufen Sie Vertex AI Studio auf und klicken Sie auf Sitzung starten.

Die Live API ist eine zustandsbehaftete API, die WebSockets verwendet.

In diesem Abschnitt finden Sie ein Beispiel für die Verwendung der Live API für die Text-zu-Text-Generierung mit Python 3.9+.

Python

Installieren

pip install --upgrade google-genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# 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?

Integrationsleitfaden

In diesem Abschnitt wird beschrieben, wie die Integration mit der Live API funktioniert.

Sitzungen

Über eine WebSocket-Verbindung wird eine Sitzung zwischen dem Client und dem Gemini-Server hergestellt.

Nachdem ein Client eine neue Verbindung hergestellt hat, können in der Sitzung Nachrichten mit dem Server ausgetauscht werden, um:

  • Text, Audio oder Video an den Gemini-Server senden
  • Audio-, Text- oder Funktionsaufrufanfragen vom Gemini-Server empfangen.

Die Sitzungskonfiguration wird in der ersten Nachricht nach der Verbindung gesendet. Eine Sitzungskonfiguration umfasst das Modell, die Generierungsparameter, die Systemanweisungen und die Tools.

Hier sehen Sie eine Beispielkonfiguration:


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

Weitere Informationen finden Sie unter BidiGenerateContentSetup.

Nachrichten senden

Nachrichten sind JSON-formatierte Objekte, die über die WebSocket-Verbindung ausgetauscht werden.

Um eine Nachricht zu senden, muss der Client ein JSON-Objekt über eine offene WebSocket-Verbindung senden. Das JSON-Objekt muss genau eines der Felder aus der folgenden Objektgruppe enthalten:


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

Unterstützte Clientnachrichten

Die unterstützten Clientnachrichten sind in der folgenden Tabelle aufgeführt:

Nachricht Beschreibung
BidiGenerateContentSetup Sitzungskonfiguration, die in der ersten Nachricht gesendet werden soll
BidiGenerateContentClientContent Inkrementelles Inhaltsupdate der aktuellen Unterhaltung, das vom Client bereitgestellt wird
BidiGenerateContentRealtimeInput Audio- oder Videoeingabe in Echtzeit
BidiGenerateContentToolResponse Antwort auf ein ToolCallMessage, das vom Server empfangen wurde

Nachrichten empfangen

Wenn Sie Nachrichten von Gemini empfangen möchten, müssen Sie auf das WebSocket-Ereignis „message“ warten und das Ergebnis dann gemäß der Definition der unterstützten Servernachrichten parsen.

Weitere Informationen finden Sie hier:

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

Servernachrichten enthalten genau eines der Felder aus der folgenden Objektgruppe:


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

Unterstützte Servermeldungen

Die unterstützten Servernachrichten sind in der folgenden Tabelle aufgeführt:

Nachricht Beschreibung
BidiGenerateContentSetupComplete Eine BidiGenerateContentSetup-Nachricht vom Client, die gesendet wird, wenn die Einrichtung abgeschlossen ist
BidiGenerateContentServerContent Inhalte, die vom Modell als Reaktion auf eine Clientnachricht generiert werden
BidiGenerateContentToolCall Bitte den Client, die Funktionsaufrufe auszuführen und die Antworten mit den entsprechenden IDs zurückzugeben.
BidiGenerateContentToolCallCancellation Wird gesendet, wenn ein Funktionsaufruf abgebrochen wird, weil der Nutzer die Modellausgabe unterbricht.
UsageMetadata Ein Bericht über die Anzahl der bisher in der Sitzung verwendeten Tokens
GoAway Ein Signal, dass die aktuelle Verbindung bald beendet wird
SessionResumptionUpdate Ein Sitzungsprüfpunkt, der fortgesetzt werden kann
BidiGenerateContentTranscription Eine Transkription der Sprache des Nutzers oder des Modells

Inkrementelle Inhaltsupdates

Verwenden Sie inkrementelle Updates, um Texteingaben zu senden, Sitzungskontext zu erstellen oder wiederherzustellen. Bei kurzen Kontexten können Sie Turn-by-Turn-Interaktionen senden, um die genaue Abfolge der Ereignisse darzustellen. Bei längeren Kontexten empfiehlt es sich, eine einzelne Nachrichtenzusammenfassung bereitzustellen, um das Kontextfenster für die Folgeinteraktionen freizugeben.

Hier ein Beispiel für eine Kontextnachricht:

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

Inhaltsabschnitte können zwar vom Typ functionResponse sein, BidiGenerateContentClientContent sollte jedoch nicht verwendet werden, um eine Antwort auf die vom Modell ausgegebenen Funktionsaufrufe zu geben. Verwenden Sie stattdessen BidiGenerateContentToolResponse. BidiGenerateContentClientContent sollte nur verwendet werden, um vorherigen Kontext herzustellen oder Texteingaben für die Unterhaltung bereitzustellen.

Audio- und Videostreaming

Codeausführung

Weitere Informationen zur Codeausführung finden Sie unter Codeausführung.

Funktionsaufrufe

Alle Funktionen müssen zu Beginn der Sitzung deklariert werden, indem Tool-Definitionen als Teil der BidiGenerateContentSetup-Nachricht gesendet werden.

Sie definieren Funktionen mit JSON, insbesondere mit einer ausgewählten Teilmenge des OpenAPI-Schemaformats. Eine einzelne Funktionsdeklaration kann die folgenden Parameter enthalten:

  • name (string): Die eindeutige Kennung für die Funktion im API-Aufruf.

  • description (string): Eine umfassende Erklärung des Zwecks und der Funktionen der Funktion.

  • parameters (Objekt): Definiert die Eingabedaten, die für die Funktion erforderlich sind.

    • type (string): Gibt den allgemeinen Datentyp an, z. B. „object“.

    • properties (Objekt): Hier werden die einzelnen Parameter mit folgenden Attributen aufgeführt:

      • type (string): Der Datentyp des Parameters, z. B. „string“, „integer“ oder „boolean“.
      • description (string): Eine klare Erläuterung des Zwecks und des erwarteten Formats des Parameters.
    • required (Array): Ein Array von Strings mit den Parameternamen, die für die Funktion erforderlich sind.

Codebeispiele für eine Funktionsdeklaration mit curl-Befehlen finden Sie unter Funktionsaufrufe mit der Gemini API. Beispiele für das Erstellen von Funktionsdeklarationen mit den Gemini API SDKs finden Sie im Tutorial zu Funktionsaufrufen.

Aus einem einzelnen Prompt kann das Modell mehrere Funktionsaufrufe und den Code generieren, der zum Verketten ihrer Ausgaben erforderlich ist. Dieser Code wird in einer Sandbox-Umgebung ausgeführt und generiert nachfolgende BidiGenerateContentToolCall-Nachrichten. Die Ausführung wird angehalten, bis die Ergebnisse jedes Funktionsaufrufs verfügbar sind. So wird eine sequenzielle Verarbeitung sichergestellt.

Der Client sollte mit BidiGenerateContentToolResponse antworten.

Weitere Informationen finden Sie unter Einführung in Funktionsaufrufe.

Audioformate

Liste der unterstützten Audioformate

Systemanweisungen

Sie können Systemanweisungen verwenden, um die Ausgabe des Modells besser zu steuern und den Ton und die Stimmung von Audioantworten festzulegen.

Systemanweisungen werden dem Prompt vor Beginn der Interaktion hinzugefügt und bleiben für die gesamte Sitzung in Kraft.

Systemanweisungen können nur zu Beginn einer Sitzung festgelegt werden, unmittelbar nach der ersten Verbindung. Wenn Sie dem Modell während der Sitzung weitere Eingaben zur Verfügung stellen möchten, verwenden Sie inkrementelle Inhaltsaktualisierungen.

Unterbrechungen

Nutzer können die Ausgabe des Modells jederzeit unterbrechen. Wenn durch die Spracherkennung (Voice Activity Detection, VAD) eine Unterbrechung erkannt wird, wird die laufende Generierung abgebrochen und verworfen. Im Sitzungsverlauf werden nur die Informationen gespeichert, die bereits an den Client gesendet wurden. Der Server sendet dann eine BidiGenerateContentServerContent-Nachricht, um die Unterbrechung zu melden.

Außerdem verwirft der Gemini-Server alle ausstehenden Funktionsaufrufe und sendet eine BidiGenerateContentServerContent-Nachricht mit den IDs der abgebrochenen Aufrufe.

Stimmen

Wenn Sie eine Stimme angeben möchten, legen Sie voiceName im Objekt speechConfig als Teil Ihrer Sitzungskonfiguration fest.

Hier sehen Sie die JSON-Darstellung eines speechConfig-Objekts:

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

Eine Liste der unterstützten Stimmen finden Sie unter Sprach- und Spracherkennungseinstellungen ändern.

Beschränkungen

Beachten Sie bei der Planung Ihres Projekts die folgenden Einschränkungen der Live API und von Gemini 2.0.

Clientauthentifizierung

Die Live API bietet nur die Server-zu-Server-Authentifizierung und wird nicht für die direkte Clientnutzung empfohlen. Die Clienteingabe sollte über einen Zwischenanwendungsserver weitergeleitet werden, um eine sichere Authentifizierung bei der Live API zu ermöglichen.

Maximale Sitzungsdauer

Die maximale Länge einer Unterhaltungssitzung beträgt standardmäßig 10 Minuten. Weitere Informationen finden Sie unter Sitzungslänge.

Erkennung von Sprachaktivitäten (Voice Activity Detection, VAD)

Standardmäßig führt das Modell automatisch die Spracherkennung (Voice Activity Detection, VAD) für einen kontinuierlichen Audioeingabestream durch. VAD kann mit dem Feld RealtimeInputConfig.AutomaticActivityDetection der Einrichtungsnachricht konfiguriert werden.

Wenn der Audiostream länger als eine Sekunde pausiert wird (z. B. wenn der Nutzer das Mikrofon ausschaltet), wird ein AudioStreamEnd-Ereignis gesendet, um zwischengespeicherte Audiodaten zu leeren. Der Client kann das Senden von Audiodaten jederzeit fortsetzen.

Alternativ kann die automatische VAD deaktiviert werden, indem in der Einrichtungsnachricht RealtimeInputConfig.AutomaticActivityDetection.disabled auf true gesetzt wird. In dieser Konfiguration ist der Client dafür verantwortlich, die Sprache des Nutzers zu erkennen und ActivityStart- und ActivityEnd-Nachrichten zu den entsprechenden Zeiten zu senden. In dieser Konfiguration wird kein AudioStreamEnd gesendet. Stattdessen wird jede Unterbrechung des Streams durch eine ActivityEnd-Meldung gekennzeichnet.

Zusätzliche Einschränkungen

Manuelle Endpunkte werden nicht unterstützt.

Audioeingaben und ‑ausgaben beeinträchtigen die Fähigkeit des Modells, Funktionsaufrufe zu verwenden.

Tokenanzahl

Die Anzahl der Tokens wird nicht unterstützt.

Ratenlimits

Es gelten die folgenden Ratenbegrenzungen:

  • 5.000 gleichzeitige Sitzungen pro API-Schlüssel
  • 4 Millionen Tokens pro Minute

Nachrichten und Ereignisse

BidiGenerateContentClientContent

Inkrementelles Update der aktuellen Unterhaltung, das vom Client bereitgestellt wird. Alle Inhalte hier werden bedingungslos an den Unterhaltungsverlauf angehängt und als Teil des Prompts für das Modell verwendet, um Inhalte zu generieren.

Eine Nachricht hier unterbricht die aktuelle Modellgenerierung.

Felder
turns[]

Content

Optional. Die Inhalte, die der aktuellen Unterhaltung mit dem Modell angehängt werden.

Bei Einzelabfragen ist dies eine einzelne Instanz. Bei Mehrfachabfragen ist dies ein wiederkehrendes Feld, das den Unterhaltungsverlauf und die letzte Anfrage enthält.

turn_complete

bool

Optional. Wenn „true“, wird die Serverinhaltsgenerierung mit dem aktuell angesammelten Prompt gestartet. Andernfalls wartet der Server auf weitere Nachrichten, bevor er mit der Generierung beginnt.

BidiGenerateContentRealtimeInput

Nutzereingaben, die in Echtzeit gesendet werden.

ClientContentUpdate unterscheidet sich in einigen Punkten von ClientContentUpdate:

  • Kann kontinuierlich ohne Unterbrechung an die Modellgenerierung gesendet werden.
  • Wenn Daten aus ClientContentUpdate und RealtimeUpdate kombiniert werden müssen, versucht der Server, die Antwort zu optimieren. Es gibt jedoch keine Garantien.
  • Das Ende des Zuges wird nicht explizit angegeben, sondern aus der Nutzeraktivität abgeleitet (z. B. Ende der Spracheingabe).
  • Die Daten werden schon vor dem Ende des Turns inkrementell verarbeitet, um einen schnellen Beginn der Antwort des Modells zu ermöglichen.
  • Wird immer als Eingabe des Nutzers angenommen (kann nicht zum Auffüllen des Unterhaltungsverlaufs verwendet werden).
Felder
media_chunks[]

Blob

Optional. Inline-Byte-Daten für Media-Eingabe.

activity_start

ActivityStart

Optional. Markiert den Beginn der Nutzeraktivität. Diese kann nur gesendet werden, wenn die automatische (d.h. serverseitige) Aktivitätserkennung deaktiviert ist.

activity_end

ActivityEnd

Optional. Markiert das Ende der Nutzeraktivität. Diese kann nur gesendet werden, wenn die automatische (d.h. serverseitige) Aktivitätserkennung deaktiviert ist.

ActivityEnd

Dieser Typ hat keine Felder.

Markiert das Ende der Nutzeraktivität.

ActivityStart

Dieser Typ hat keine Felder.

Es darf jeweils nur eines der Felder in dieser Nachricht festgelegt werden. Markiert den Beginn der Nutzeraktivität.

BidiGenerateContentServerContent

Inkrementelles Server-Update, das vom Modell als Reaktion auf Clientnachrichten generiert wird.

Inhalte werden so schnell wie möglich generiert, aber nicht in Echtzeit. Clients können die Daten puffern und in Echtzeit wiedergeben.

Felder
turn_complete

bool

Nur Ausgabe. Bei „true“ gibt an, dass das Modell die Generierung abgeschlossen hat. Die Generierung beginnt erst als Reaktion auf zusätzliche Clientnachrichten. Kann zusammen mit content festgelegt werden, um anzugeben, dass content der letzte Schritt im Zug ist.

interrupted

bool

Nur Ausgabe. Bei „true“ wird angegeben, dass die aktuelle Modellgenerierung durch eine Clientnachricht unterbrochen wurde. Wenn der Client die Inhalte in Echtzeit wiedergibt, ist dies ein gutes Signal, die aktuelle Warteschlange zu beenden und zu leeren. Wenn der Client die Inhalte in Echtzeit wiedergibt, ist dies ein gutes Signal, die aktuelle Wiedergabewarteschlange zu beenden und zu leeren.

generation_complete

bool

Nur Ausgabe. Bei „true“ gibt an, dass das Modell die Generierung abgeschlossen hat.

Wenn die Modellgenerierung unterbrochen wird, gibt es keine „generation_complete“-Meldung im unterbrochenen Zug. Stattdessen wird „interrupted > turn_complete“ durchlaufen.

Wenn das Modell die Wiedergabe in Echtzeit annimmt, kommt es zu einer Verzögerung zwischen „generation_complete“ und „turn_complete“, da das Modell auf das Ende der Wiedergabe wartet.

grounding_metadata

GroundingMetadata

Nur Ausgabe. In den Metadaten werden die Quellen angegeben, die zur Fundierung generierter Inhalte verwendet wurden.

input_transcription

Transcription

Optional. Transkription eingeben. Die Transkription ist unabhängig vom Modellzug, d. h. es gibt keine bestimmte Reihenfolge zwischen Transkription und Modellzug.

output_transcription

Transcription

Optional. Ausgabetranskript. Die Transkription ist unabhängig vom Modellzug, d. h. es gibt keine bestimmte Reihenfolge zwischen Transkription und Modellzug.

model_turn

Content

Nur Ausgabe. Die Inhalte, die das Modell im Rahmen der aktuellen Unterhaltung mit dem Nutzer generiert hat.

Sprache-zu-Text

Meldung zum Audiotranskript.

Felder
text

string

Optional. Transkripttext.

finished

bool

Optional. Der boolesche Wert gibt das Ende der Transkription an.

BidiGenerateContentSetup

Nachricht, die in der ersten und einzigen ersten Client-Nachricht gesendet werden soll. Enthält die Konfiguration, die für die Dauer der Streaming-Sitzung gilt.

Clients sollten auf eine BidiGenerateContentSetupComplete-Nachricht warten, bevor sie weitere Nachrichten senden.

Felder
model

string

Pflichtangabe. Der vollständig qualifizierte Name des Publisher-Modells.

Format des Publisher-Modells: projects/{project}/locations/{location}/publishers/\*/models/\*

generation_config

GenerationConfig

Optional. Generierungskonfiguration.

Die folgenden Felder werden nicht unterstützt:

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

Content

Optional. Die vom Nutzer bereitgestellten Systemanweisungen für das Modell. Hinweis: In den Teilen sollte nur Text verwendet werden. Der Inhalt jedes Teils wird in einem separaten Absatz dargestellt.

tools[]

Tool

Optional. Eine Liste der Tools, die das Modell zum Generieren der nächsten Antwort verwenden kann.

Eine Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Modells auszuführen.

session_resumption

SessionResumptionConfig

Optional. Konfiguriert den Mechanismus zur Wiederaufnahme von Sitzungen. Falls enthalten, sendet der Server regelmäßig SessionResumptionUpdate-Nachrichten an den Client.

context_window_compression

ContextWindowCompressionConfig

Optional. Konfiguriert den Mechanismus zur Komprimierung des Kontextfensters.

Falls enthalten, komprimiert der Server das Kontextfenster, damit es in die angegebene Länge passt.

realtime_input_config

RealtimeInputConfig

Optional. Konfiguriert die Verarbeitung von Echtzeiteingaben.

input_audio_transcription

AudioTranscriptionConfig

Optional. Die Transkription der Eingabe entspricht der Sprache des Audioeingabeinhalts.

output_audio_transcription

AudioTranscriptionConfig

Optional. Die Transkription der Ausgabe entspricht dem Sprachcode, der für das Ausgabesignal angegeben wurde.

AudioTranscriptionConfig

Dieser Typ hat keine Felder.

Die Konfiguration für die Audiotranskription.

BidiGenerateContentSetupComplete

Dieser Typ hat keine Felder.

Wird als Antwort auf eine BidiGenerateContentSetup-Nachricht vom Client gesendet.

BidiGenerateContentToolCall

Bitte den Client, function_calls auszuführen und die Antworten mit den entsprechenden id zurückzugeben.

Felder
function_calls[]

FunctionCall

Nur Ausgabe. Der auszuführende Funktionsaufruf.

BidiGenerateContentToolCallCancellation

Benachrichtigung für den Client, dass ein zuvor ausgestelltes ToolCallMessage mit den angegebenen ids nicht ausgeführt und storniert werden sollte. Wenn die Tool-Aufrufe Nebenwirkungen hatten, versuchen Clients möglicherweise, sie rückgängig zu machen. Diese Meldung wird nur angezeigt, wenn Clients Server-Turns unterbrechen.

Felder
ids[]

string

Nur Ausgabe. Die IDs der abzubrechenden Tool-Aufrufe.

BidiGenerateContentToolResponse

Vom Client generierte Antwort auf ein ToolCall, das vom Server empfangen wurde. Einzelne FunctionResponse-Objekte werden über das Feld id den entsprechenden FunctionCall-Objekten zugeordnet.

Bei den unären und Server-Streaming-GenerateContent-APIs erfolgt der Funktionsaufruf durch den Austausch der Content-Teile, während er bei den bidirektionalen GenerateContent-APIs über diese dedizierten Nachrichten erfolgt.

Felder
function_responses[]

FunctionResponse

Optional. Die Antwort auf die Funktionsaufrufe.

RealtimeInputConfig

Konfiguriert das Echtzeit-Eingabeverhalten in BidiGenerateContent.

Felder
automatic_activity_detection

AutomaticActivityDetection

Optional. Wenn nichts anderes festgelegt ist, ist die automatische Aktivitätserkennung standardmäßig aktiviert. Wenn die automatische Spracherkennung deaktiviert ist, muss der Client Aktivitätssignale senden.

activity_handling

ActivityHandling

Optional. Definiert die Auswirkungen von Aktivität.

turn_coverage

TurnCoverage

Optional. Definiert, welche Eingabe in den Zug des Nutzers einbezogen wird.

ActivityHandling

Die verschiedenen Möglichkeiten, Nutzeraktivitäten zu verarbeiten.

Enums
ACTIVITY_HANDLING_UNSPECIFIED Wenn keine Angabe erfolgt, ist das Standardverhalten START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Bei „true“ wird die Antwort des Modells durch den Beginn einer Aktivität unterbrochen (auch „Barge-in“ genannt). Die aktuelle Antwort des Modells wird im Moment der Unterbrechung abgeschnitten. Das ist das Standardverhalten.
NO_INTERRUPTION Die Antwort des Modells wird nicht unterbrochen.

AutomaticActivityDetection

Konfiguriert die automatische Erkennung von Aktivitäten.

Felder
start_of_speech_sensitivity

StartSensitivity

Optional. Bestimmt, wie wahrscheinlich es ist, dass Sprache erkannt wird.

end_of_speech_sensitivity

EndSensitivity

Optional. Bestimmt, wie wahrscheinlich es ist, dass die erkannte Sprache beendet wurde.

prefix_padding_ms

int32

Optional. Die erforderliche Dauer der erkannten Sprache, bevor der Sprechbeginn festgelegt wird. Je niedriger dieser Wert ist, desto empfindlicher ist die Erkennung des Sprechbeginns und desto kürzer kann die Sprache erkannt werden. Dadurch erhöht sich aber auch die Wahrscheinlichkeit von falsch positiven Ergebnissen.

silence_duration_ms

int32

Optional. Die erforderliche Dauer der erkannten Stille (oder des erkannten Tons ohne Sprache), bevor das Ende der Sprache erkannt wird. Je größer dieser Wert ist, desto länger können Sprachlücken sein, ohne die Aktivität des Nutzers zu unterbrechen. Dadurch erhöht sich jedoch die Latenz des Modells.

disabled

bool

Optional. Wenn diese Option aktiviert ist, werden erkannte Sprach- und Texteingaben als Aktivität gezählt. Wenn diese Option deaktiviert ist, muss der Client Aktivitätssignale senden.

EndSensitivity

Empfindlichkeit zum Erkennen des Redeendes.

Enums
END_SENSITIVITY_UNSPECIFIED Der Standardwert ist END_SENSITIVITY_LOW.
END_SENSITIVITY_HIGH Die automatische Erkennung beendet die Sprache häufiger.
END_SENSITIVITY_LOW Bei der automatischen Erkennung wird die Sprache seltener beendet.

StartSensitivity

Empfindlichkeit zum Erkennen des Redebeginns.

Enums
START_SENSITIVITY_UNSPECIFIED Der Standardwert ist START_SENSITIVITY_LOW.
START_SENSITIVITY_HIGH Durch die automatische Erkennung wird der Beginn der Sprache häufiger erkannt.
START_SENSITIVITY_LOW Die automatische Erkennung erkennt den Beginn der Sprache seltener.

TurnCoverage

Optionen dazu, welche Eingabe in den Zug des Nutzers einbezogen wird.

Enums
TURN_COVERAGE_UNSPECIFIED Wenn keine Angabe erfolgt, ist das Standardverhalten TURN_INCLUDES_ALL_INPUT.
TURN_INCLUDES_ONLY_ACTIVITY Die Nutzerrunde umfasst nur Aktivitäten seit der letzten Runde, Inaktivität (z.B. Stille im Audio-Stream) wird nicht berücksichtigt.
TURN_INCLUDES_ALL_INPUT Der Nutzerzug umfasst alle Echtzeiteingaben seit dem letzten Zug, einschließlich Inaktivität (z.B. Stille im Audiostream). Das ist das Standardverhalten.

UsageMetadata

Metadaten zur Nutzung der im Cache gespeicherten Inhalte.

Felder
total_token_count

int32

Gesamtzahl der Tokens, die durch die Inhalte im Cache verbraucht werden.

text_count

int32

Anzahl der Textzeichen.

image_count

int32

Anzahl der Bilder.

video_duration_seconds

int32

Dauer des Videos in Sekunden.

audio_duration_seconds

int32

Dauer des Audioinhalts in Sekunden.

GoAway

Der Server kann den Client in Kürze nicht mehr bedienen.

Felder
time_left

Duration

Die verbleibende Zeit, bevor die Verbindung als ABORTED beendet wird. Die hier zurückgegebene Mindestzeit wird zusammen mit den Ratenlimits für ein bestimmtes Modell unterschiedlich angegeben.

SessionResumptionUpdate

Aktualisierung des Status der Sitzungswiederaufnahme.

Wird nur gesendet, wenn BidiGenerateContentSetup.session_resumption festgelegt wurde.

Felder
new_handle

string

Neuer Handle, der einen Status darstellt, der fortgesetzt werden kann. Leer, wenn resumable=false.

resumable

bool

„True“, wenn die Sitzung an dieser Stelle fortgesetzt werden kann.

An einigen Stellen ist es möglicherweise nicht möglich, die Sitzung fortzusetzen. In diesem Fall senden wir ein Update mit leerem „new_handle“ und „resumable=false“. Ein Beispiel für einen solchen Fall ist, wenn das Modell Funktionsaufrufe ausführt oder nur generiert. Wenn Sie die Sitzung in diesem Zustand fortsetzen (mit dem Token der vorherigen Sitzung), kommt es zu Datenverlusten.

last_consumed_client_message_index

int64

Index der letzten vom Client gesendeten Nachricht, die im durch dieses SessionResumptionToken dargestellten Status enthalten ist. Wird nur gesendet, wenn SessionResumptionConfig.transparent festgelegt ist.

Durch das Vorhandensein dieses Index können Nutzer die Verbindung transparent wiederherstellen und vermeiden, dass ein Teil der Echtzeit-Audioeingabe oder des Videos verloren geht. Wenn der Client die Verbindung vorübergehend trennen möchte (z. B. aufgrund des Empfangs von GoAway), kann er dies tun, ohne den Status zu verlieren, indem er Nachrichten puffert, die seit dem letzten SessionResmumptionTokenUpdate gesendet wurden. Mit diesem Feld können sie das Puffern einschränken (um zu vermeiden, dass alle Anfragen im RAM gespeichert werden).

Es wird nicht für die Wiederaufnahme zum Wiederherstellen des Status verwendet. In diesen Fällen sind partielle Audio- und Videoframes wahrscheinlich nicht erforderlich.

Nächste Schritte