إضافة فئات متعددة إلى روبوت الأسئلة الشائعة

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء مشروع وعلامة أزواج الإجابة على السؤال في فئات متميزة مع بيانات التعريف
  • إنشاء مشروع منفصل لكل مجال
  • إنشاء مورد لغة منفصل لكل مجال

عند إنشاء روبوت الإجابة على الأسئلة المتداولة، قد تواجه حالات استخدام تتطلب منك معالجة الاستعلامات عبر مجالات متعددة. لنفترض أن فريق التسويق في Microsoft يريد إنشاء بوت لدعم العملاء يجيب على استعلامات المستخدم الشائعة على منتجات Surface متعددة. من أجل البساطة هنا، سوف نستخدم عنواني URL للأسئلة الشائعة، Surface Pen وSurface Earbuds لإنشاء المشروع.

إنشاء مشروع باستخدام بيانات تعريف خاصة بالمجال

يمكن لمؤلفي المحتوى استخدام المستندات لاستخراج أزواج إجابات الأسئلة أو إضافة أزواج إجابات الأسئلة المخصصة إلى المشروع. من أجل تجميع هذه الأسئلة والأجوبة في مجالات أو فئات محددة، يمكنك إضافة بيانات تعريف.

بالنسبة إلى الروبوت على منتجات Surface، يمكنك اتخاذ الخطوات التالية لإنشاء روبوت يجيب على الاستعلامات لكلا النوعين من المنتجات:

  1. اضف عناوين URL للأسئلة المتداولة كمصادر بتحديد Add source>URLs> ثم Add all بمجرد إضافتك لكل من عناوين URL المذكورة أدناه:

    الأسئلة المتداولة لـ Surface Pen
    الأسئلة المتداولة حول لسماعات أذن Surface

    Screenshot of add URL UI.

  2. في هذا المشروع، لدينا أزواج إجابات الأسئلة على منتجين ونود التمييز بينهما بحيث يمكننا البحث عن إجابات بين الأسئلة والأجوبة لمنتج معين. للقيام بذلك، يمكننا تحديث حقل بيانات التعريف لأزواج الإجابات على الأسئلة.

    كما ترون في المثال أدناه، أضفنا بيانات تعريف مع المنتج كمفتاح وsurface_pen أو surface_earbuds كقيم حيثما ينطبق ذلك. يمكنك توسيع هذا المثال لاستخراج البيانات على منتجات متعددة وإضافة قيمة مختلفة لكل منتج.

    Screenshot of metadata example.

  3. الآن، من أجل تقييد النظام للبحث عن الاستجابة عبر منتج معين، ستحتاج إلى تمرير هذا المنتج كعامل تصفية في السؤال المخصص الذي يجيب على REST API.

    يمكن استرداد عنوان URL للتنبؤ بواجهة برمجة تطبيقات REST من جزء نشر المشروع:

    Screenshot of the Deploy project page with the prediction URL displayed.

    في نص JSON لاستدعاء API، لقد مررنا surface_pen كقيمة لمنتجبيانات التعريف. لذلك، فإن النظام يبحث فقط عن الاستجابة بين أزواج الأسئلة والأجوبة مع نفس بيانات التعريف.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    يمكنك الحصول على قيمة بيانات التعريف استناداً إلى إدخال المستخدم بالطرق التالية:

    • تأخذ المجال صراحة كمدخل من المستخدم من خلال عميل بوت. على سبيل المثال، كما هو موضح أدناه، يمكنك أخذ فئة المنتج كمدخل من المستخدم عند بدء المحادثة.

      Take metadata input

    • تعريف المجال ضمنياً استناداً إلى سياق البوت. على سبيل المثال، في حال كان السؤال السابق على منتج معين لـ Surface، فيمكن حفظه كذلك سياق من قبل العميل. إذا لم يحدد المستخدم المنتج في الاستعلام التالي، يمكنك تمرير سياق البوت كبيانات التعريف إلى Generate Answer API.

      Pass context

    • استخراج الكيان من استعلام المستخدم لتعريف المجال الذي سيتم استخدامه لتصفية بيانات التعريف. يمكنك استخدام خدمات Azure الذكاء الاصطناعي الأخرى مثل التعرف على الكيان المسمى (NER)وفهم لغة المحادثة لاستخراج الكيان.

      Extract metadata from query

ما هو حجم مشاريعنا؟

يمكنك إضافة ما يصل إلى 50000 زوج من إجابات الأسئلة إلى مشروع واحد. إذا تجاوزت بياناتك 50,000 زوج من إجابات الأسئلة، يجب أن تفكر في تقسيم المشروع.

إنشاء مشروع منفصل لكل مجال

يمكنك أيضا إنشاء مشروع منفصل لكل مجال والحفاظ على المشاريع بشكل منفصل. تتطلب جميع واجهات برمجة التطبيقات للمستخدم تمرير اسم المشروع لإجراء أي تحديث للمشروع أو إحضار إجابة على سؤال المستخدم.

عند تلقي سؤال المستخدم بواسطة الخدمة، ستحتاج إلى تمرير projectName في نقطة نهاية REST API الموضحة لجلب استجابة من المشروع ذي الصلة. يمكنك تحديد موقع URL في صفحة نشر المشروع ضمن الحصول على عنوان URL للتنبؤ:

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

إنشاء مورد لغة منفصل لكل مجال

لنفترض أن فريق التسويق في Microsoft يريد إنشاء بوت لدعم العملاء بحيث يجيب على استفسارات المستخدمين عن منتجات Surface وXbox. إنهم يخططون لتعيين فرق مميزة للوصول إلى المشاريع على Surface وXbox. في هذه الحالة، ينصح بإنشاء موردين مخصصين للإجابة على الأسئلة - أحدهما لجهاز Surface والآخر ل Xbox. ومع ذلك، يمكنك تحديد أدوار مميزة للمستخدمين الذين يصلون إلى نفس المورد.