Diálogo afectivo
El diálogo afectivo hace que el agente sea consciente de las emociones: capta el tono del usuario a partir de su voz —frustración, entusiasmo, duda— y adapta su propia forma de expresarse para coincidir. Un cliente frustrado escucha a un agente más calmado y cuidadoso; uno feliz recibe calidez a cambio. Es la diferencia entre un guion y una conversación.
Cómo habilitarlo
Una llamada al constructor en 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
Requisitos (lee esto)
El diálogo afectivo es una función exclusiva de Gemini con dos requisitos estrictos:
- Un modelo de audio nativo. No es compatible con
gemini-3.1-flash-live-previewde cascada parcial. Usa un modelo de audio nativo comomodels/gemini-live-2.5-flash-native-audio. - El endpoint
v1alpha.GeminiLiveBackend::studio(...)de la crate ya se conecta mediantev1alpha, así que esto se gestiona automáticamente.
Si estableces with_affective_dialog(true) en un modelo que no lo admite, la
configuración de Gemini se rechaza con "Unknown name enableAffectiveDialog" y la
sesión se cierra. Así que cambia el modelo cuando lo habilites:
let (default_model, voice) = if affective {
("models/gemini-live-2.5-flash-native-audio", "Kore")
} else {
("models/gemini-3.1-flash-live-preview", "Kore")
};
En OpenAI (y en modelos de Gemini que no sean de audio nativo), with_affective_dialog(true) es una
operación nula: no causa problemas, simplemente se ignora; por eso es seguro
establecerlo siempre y dejar que el proveedor decida.
La contrapartida
Los modelos de audio nativo ofrecen la voz más natural y expresiva, además de la adaptación afectiva, pero invocan herramientas de forma menos fiable que el modelo de cascada parcial. Por tanto, es una elección real:
- Agente con muchas herramientas (reembolsos, consultas, acciones) → cascada parcial
(
gemini-3.1-flash-live-preview), sin diálogo afectivo. - Agente centrado en la empatía (desescalada en soporte, compañía, orientación) → audio nativo + diálogo afectivo.
El ejemplo customer_service lo hace opcional
precisamente por este motivo: CS_AFFECTIVE=1 cambia Gemini al modelo de audio nativo
y activa la marca; de lo contrario, mantiene el modelo más fiable con las herramientas.
Bajo el capó
with_affective_dialog(true) establece RealtimeConfig.affective_dialog, y la configuración de
Gemini emite enableAffectiveDialog: true dentro de generationConfig
(no en el nivel superior de la configuración; el endpoint v1alpha lo rechaza allí). No
necesitas saber esto para usarlo, pero es la razón por la que los requisitos del modelo y del endpoint son estrictos.
Empatía sin la marca. Incluso con OpenAI o con el modelo de media cascada, una instrucción bien redactada («observa el estado emocional del usuario y reconócelo sinceramente») produce un comportamiento significativamente empático. El diálogo afectivo añade una verdadera correspondencia del tono acústico a lo anterior, en Gemini native-audio.
Siguiente: Memoria →