Dialogue affectif
Le dialogue affectif rend lâagent sensible aux Ă©motions : il dĂ©tecte le ton de lâutilisateur Ă partir de sa voix â frustration, enthousiasme, hĂ©sitation â et adapte sa propre façon de sâexprimer en consĂ©quence. Un client frustrĂ© entend un agent plus calme et plus attentif ; un client heureux retrouve de la chaleur dans la rĂ©ponse. Câest la diffĂ©rence entre un script et une conversation.
Lâactiver
Un seul appel du constructeur sur 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
Conditions requises (Ă lire)
Le dialogue affectif est une fonctionnalité réservée à Gemini qui impose deux conditions :
- Un modĂšle audio natif. Il nâest pas pris en charge par le modĂšle en demi-cascade
gemini-3.1-flash-live-preview. Utilisez un modĂšle audio natif tel quemodels/gemini-live-2.5-flash-native-audio. - Le point de terminaison
v1alpha. LeGeminiLiveBackend::studio(...)de la crate se connecte déjà viav1alpha; cette configuration est donc gérée pour vous.
Si vous définissez with_affective_dialog(true) sur un modÚle qui ne le prend pas en charge, la
configuration Gemini est rejetée avec « Unknown name enableAffectiveDialog » et la
session se ferme. Changez donc de modÚle lorsque vous activez cette fonctionnalité :
let (default_model, voice) = if affective {
("models/gemini-live-2.5-flash-native-audio", "Kore")
} else {
("models/gemini-3.1-flash-live-preview", "Kore")
};
Sur OpenAI (ainsi que sur les modĂšles Gemini non natifs), with_affective_dialog(true) est une
opĂ©ration sans effet â inoffensive, simplement ignorĂ©e â ; il est donc possible de
la définir systématiquement et de laisser le fournisseur décider.
Le compromis
Les modĂšles audio natifs offrent la voix la plus naturelle et expressive ainsi que lâadaptation aux Ă©motions, mais ils appellent les outils de maniĂšre moins fiable que le modĂšle en demi-cascade. Le choix est donc rĂ©el :
- Agent utilisant beaucoup les outils (remboursements, recherches, actions) â demi-cascade
(
gemini-3.1-flash-live-preview), sans dialogue affectif. - Agent privilĂ©giant lâempathie (dĂ©sescalade du support, accompagnement, coaching) â audio natif + dialogue affectif.
Lâexemple customer_service rend cette fonctionnalitĂ© activable
précisément pour cette raison : CS_AFFECTIVE=1 bascule Gemini vers le modÚle audio natif
et active lâoption ; sinon, il conserve le modĂšle plus fiable avec les outils.
Sous le capot
with_affective_dialog(true) dĂ©finit RealtimeConfig.affective_dialog, et la configuration Gemini Ă©met enableAffectiveDialog: true Ă lâintĂ©rieur de generationConfig
(et non au niveau supĂ©rieur de la configuration â le point de terminaison v1alpha le rejette Ă cet endroit). Vous nâavez pas
besoin de le savoir pour lâutiliser, mais câest la raison pour laquelle les exigences concernant le modĂšle et le point de terminaison sont strictes.
De lâempathie sans lâindicateur. MĂȘme avec OpenAI ou le modĂšle en demi-cascade, une instruction bien rĂ©digĂ©e (« remarquez lâĂ©tat Ă©motionnel de lâutilisateur et reconnaissez-le sincĂšrement ») produit un comportement sensiblement empathique. Le dialogue affectif ajoute une vĂ©ritable correspondance de ton acoustique par-dessus cela, avec lâaudio natif de Gemini.
Suivant : MĂ©moire â