Diálogo afetivo

O diálogo afetivo torna o agente consciente das emoções: ele capta o tom do usuário pela voz — frustração, entusiasmo, hesitação — e adapta sua própria forma de falar para corresponder. Um cliente frustrado ouve um agente mais calmo e cuidadoso; um cliente feliz ouve cordialidade de volta. É a diferença entre um roteiro e uma conversa.

Ativando-o

Uma chamada do builder em 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 (leia isto)

O diálogo afetivo é um recurso exclusivo do Gemini, com dois requisitos obrigatórios:

  1. Um modelo de áudio nativo. Ele não é compatível com o gemini-3.1-flash-live-preview de meia cascata. Use um modelo de áudio nativo, como models/gemini-live-2.5-flash-native-audio.
  2. O endpoint v1alpha. O GeminiLiveBackend::studio(...) do crate já se conecta por v1alpha, então isso é tratado automaticamente.

Se você definir with_affective_dialog(true) em um modelo que não oferece suporte a esse recurso, a configuração do Gemini será rejeitada com "Unknown name enableAffectiveDialog" e a sessão será encerrada. Portanto, troque o modelo ao ativá-lo:

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

Em OpenAI (e em modelos Gemini não nativos), with_affective_dialog(true) é uma no-op — inofensiva, simplesmente ignorada — portanto é seguro defini-la incondicionalmente e deixar o provedor decidir.

A compensação

Os modelos de áudio nativo oferecem a voz mais natural e expressiva, além da adaptação afetiva, mas chamam ferramentas com menos confiabilidade do que o modelo de meia cascata. Portanto, é uma escolha real:

  • Agente com uso intenso de ferramentas (reembolsos, consultas, ações) → meia cascata (gemini-3.1-flash-live-preview), sem diálogo afetivo.
  • Agente que prioriza a empatia (desescalada no suporte, companhia, orientação) → áudio nativo + diálogo afetivo.

O exemplo customer_service faz com que isso seja opcional exatamente por esse motivo: CS_AFFECTIVE=1 troca o Gemini para o modelo de áudio nativo e ativa a flag; caso contrário, mantém o modelo mais confiável para ferramentas.

Por baixo dos panos

with_affective_dialog(true) define RealtimeConfig.affective_dialog, e a configuração do Gemini emite enableAffectiveDialog: true dentro de generationConfig (não no nível superior da configuração — o endpoint v1alpha a rejeita nesse local). Você não precisa saber disso para usá-lo, mas é por isso que os requisitos de modelo + endpoint são rigorosos.

Empatia sem o sinalizador. Mesmo em OpenAI ou no modelo de meio-cascata, uma instrução bem escrita ("perceba o estado emocional do usuário e reconheça-o sinceramente") produz um comportamento significativamente empático. O diálogo afetivo adiciona uma correspondência de tom verdadeiramente acústica a isso, no áudio nativo do Gemini.

Próximo: Memória →