الحوار العاطفي

الحوار العاطفي يجعل الوكيل واعيًا بالمشاعر: فهو يلتقط نبرة المستخدم من صوته — الإحباط، والحماس، والتردد — ويكيّف أسلوبه الخاص ليتوافق معها. يسمع العميل المحبط وكيلًا أكثر هدوءًا وحرصًا؛ بينما يسمع العميل السعيد دفئًا مماثلًا. وهذا هو الفرق بين النص الجاهز والمحادثة.

تفعيله

استدعاء واحد للمنشئ على 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

المتطلبات (اقرأ هذا)

الحوار العاطفي ميزة خاصة بـ Gemini فقط وتتطلب شرطين أساسيين:

  1. نموذج صوتي أصلي. لا يُدعم على gemini-3.1-flash-live-preview ذي التدفق النصفي. استخدم نموذجًا صوتيًا أصليًا مثل models/gemini-live-2.5-flash-native-audio.
  2. نقطة النهاية v1alpha. تتصل GeminiLiveBackend::studio(...) الخاصة بالحزمة بالفعل عبر v1alpha، لذا يُتولى هذا الأمر نيابةً عنك.

إذا عيّنت with_affective_dialog(true) على نموذج لا يدعمها، فسيُرفض إعداد Gemini مع ظهور "Unknown name enableAffectiveDialog" وتُغلق الجلسة. لذا بدّل النموذج عند تفعيلها:

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

على OpenAI (وعلى نماذج Gemini غير الأصلية) تكون with_affective_dialog(true) بلا تأثير — لا ضرر منها، إذ يتم تجاهلها ببساطة — لذلك من الآمن تعيينها دون شروط وترك القرار لموفر الخدمة.

المفاضلة

توفر النماذج الصوتية الأصلية صوتًا هو الأكثر طبيعية وتعبيرًا، إلى جانب تكيّف المشاعر، لكنها تستدعي الأدوات بموثوقية أقل من النموذج ذي التدفق النصفي. لذلك فهذا اختيار حقيقي:

  • وكيل يعتمد بكثافة على الأدوات (المبالغ المستردة، وعمليات البحث، والإجراءات) ← التدفق النصفي (gemini-3.1-flash-live-preview)، من دون حوار عاطفي.
  • وكيل يضع التعاطف أولًا (تهدئة التصعيد في الدعم، والرفقة، والتدريب) ← صوت أصلي + حوار عاطفي.

يجعل المثال customer_service هذه الميزة اختيارية لهذا السبب تحديدًا: إذ يبدّل CS_AFFECTIVE=1 Gemini إلى النموذج الصوتي الأصلي ويفعّل العلامة؛ وإلا فإنه يُبقي على النموذج الموثوق في استخدام الأدوات.

ما وراء الكواليس

تضبط with_affective_dialog(true) قيمة RealtimeConfig.affective_dialog، ويُصدر إعداد Gemini ‏enableAffectiveDialog: true داخل generationConfig (وليس في المستوى الأعلى من الإعداد — إذ ترفضه نقطة نهاية v1alpha هناك). لا تحتاج إلى معرفة ذلك لاستخدامه، لكنه يفسّر سبب صرامة متطلبات النموذج + نقطة النهاية.

التعاطف من دون الراية. حتى على OpenAI أو نموذج half-cascade، ينتج توجيه مكتوب جيدًا («لاحظ الحالة العاطفية للمستخدم وأقرّ بها بصدق») سلوكًا متعاطفًا بدرجة ملحوظة. يضيف الحوار الوجداني مطابقة حقيقية للنبرة الصوتية فوق ذلك، على Gemini native-audio.

التالي: الذاكرة →