Affektiver Dialog

Affektiver Dialog macht den Agenten emotionsbewusst: Er erkennt den Tonfall des Benutzers anhand seiner Stimme — Frustration, Begeisterung, Zögern — und passt seine eigene Ausdrucksweise daran an. Ein frustrierter Kunde hört einen ruhigeren, bedachteren Agenten; ein glücklicher Kunde hört Wärme zurück. Das ist der Unterschied zwischen einem Skript und einem Gespräch.

Aktivierung

Ein Aufruf des Builders für RealtimeConfig:

let config = RealtimeConfig::default()
    .with_instruction("You are a warm, empathetic support agent.")
    .with_voice("Kore")
    .with_audio_only()
    .with_vad(VadConfig::server_vad())
    .with_transcription()
    .with_affective_dialog(true);   // ← emotion-aware responses

Anforderungen (bitte lesen)

Affektiver Dialog ist eine Funktion nur für Gemini mit zwei zwingenden Anforderungen:

  1. Ein Native-Audio-Modell. Es wird von gemini-3.1-flash-live-preview nicht unterstützt. Verwenden Sie ein Native-Audio-Modell wie models/gemini-live-2.5-flash-native-audio.
  2. Der Endpunkt v1alpha. GeminiLiveBackend::studio(...) der Crate verbindet sich bereits über v1alpha, daher wird dies für Sie erledigt.

Wenn Sie with_affective_dialog(true) für ein Modell festlegen, das dies nicht unterstützt, wird die Gemini-Konfiguration mit „Unknown name enableAffectiveDialog“ abgelehnt und die Sitzung beendet. Wechseln Sie daher beim Aktivieren die Modellkonfiguration:

let (default_model, voice) = if affective {
    ("models/gemini-live-2.5-flash-native-audio", "Kore")
} else {
    ("models/gemini-3.1-flash-live-preview", "Kore")
};

Bei OpenAI (und bei nicht nativen Gemini-Modellen) ist with_affective_dialog(true) ein No-op — harmlos und wird einfach ignoriert — daher kann es sicher bedingungslos festgelegt werden, sodass der Anbieter die Entscheidung trifft.

Der Kompromiss

Native-Audio-Modelle bieten die natürlichste, ausdrucksstärkste Stimme und die Affektanpassung, rufen Tools jedoch weniger zuverlässig auf als das Half-Cascade-Modell. Es handelt sich also um eine echte Entscheidung:

  • Tool-lastiger Agent (Rückerstattungen, Abfragen, Aktionen) → Half-Cascade (gemini-3.1-flash-live-preview), kein affektiver Dialog.
  • Empathieorientierter Agent (Deeskalation im Support, Begleitung, Coaching) → Native Audio + affektiver Dialog.

Das Beispiel customer_service macht dies genau aus diesem Grund optional: CS_AFFECTIVE=1 wechselt Gemini zum Native-Audio-Modell und aktiviert das Flag; andernfalls bleibt das Tool-zuverlässige Modell erhalten.

Unter der Haube

with_affective_dialog(true) setzt RealtimeConfig.affective_dialog, und die Gemini-Einrichtung gibt enableAffectiveDialog: true innerhalb von generationConfig aus (nicht auf der obersten Einrichtungsebene – der v1alpha-Endpunkt weist es dort zurück). Das musst du für die Verwendung nicht wissen, aber deshalb sind die Anforderungen an Modell und Endpunkt strikt.

Empathie ohne die Markierung. Selbst bei OpenAI oder dem Halb-Cascade-Modell erzeugt eine gut formulierte Anweisung („Beachte den emotionalen Zustand des Benutzers und erkenne ihn aufrichtig an“) ein deutlich einfühlsames Verhalten. Affektiver Dialog fügt bei Gemini native-audio zusätzlich echte akustische Tonfallanpassung hinzu.

Als Nächstes: Erinnerung →

Affektiver Dialog - ADK-Rust Dokumentation | ADK-Rust