Diálogo Afectivo
El diálogo afectivo hace que el agent sea consciente de las emociones: capta el tono del usuario de su voz —frustración, emoción, duda— y adapta su propia entrega para que coincida. Un cliente frustrado escucha a un agent más tranquilo y cuidadoso; uno contento escucha 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 (lea esto)
El diálogo afectivo es una característica Gemini-only con dos requisitos estrictos:
- Un modelo de audio nativo. NO es compatible con la cascada parcial
gemini-3.1-flash-live-preview. Utilice un modelo de audio nativo comomodels/gemini-2.5-flash-native-audio-preview-12-2025. - El
v1alphapunto final. ElcratedeGeminiLiveBackend::studio(...)ya se conecta a través dev1alpha, por lo que esto se gestiona automáticamente.
Si establece with_affective_dialog(true) en un modelo que no lo admite, la
configuración de Gemini es rechazada con "Unknown name enableAffectiveDialog" y la
session se cierra. Así que cambie el modelo cuando lo habilite:
let (default_model, voice) = if affective {
("models/gemini-2.5-flash-native-audio-preview-12-2025", "Kore")
} else {
("models/gemini-3.1-flash-live-preview", "Kore")
};
En OpenAI (y en modelos Gemini no nativos) with_affective_dialog(true) es una
no-op — inofensiva, simplemente ignorada — por lo que es seguro establecerla incondicionalmente y dejar que
el proveedor decida.
La compensación
Los modelos de audio nativo ofrecen la voz más natural y expresiva y la adaptación afectiva, pero llaman a las tools con menos fiabilidad que el modelo de media cascada. Así que es una elección genuina:
- Agent con muchas tools (reembolsos, búsquedas, acciones) → media cascada
(
gemini-3.1-flash-live-preview), sin diálogo afectivo. - Agent que prioriza la empatía (desescalada de soporte, compañía, coaching) → audio nativo + diálogo afectivo.
El ejemplo customer_service lo hace opcional precisamente por esta razón: CS_AFFECTIVE=1 cambia Gemini al modelo native-audio y activa la bandera; de lo contrario, mantiene el modelo tool-reliable.
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 + endpoint son estrictos.
Empatía sin la bandera. Incluso con OpenAI o el modelo de media cascada, una instrucción bien escrita ("observa el estado emocional del usuario y reconócelo sinceramente") produce un comportamiento significativamente empático. El diálogo afectivo añade una verdadera coincidencia de tono acústico a eso, en Gemini native-audio.
Siguiente: Memoria →