إضافة مهارة مخصصة إلى مسار إثراء Azure الذكاء الاصطناعي Search

يمكن أن يتضمن مسار الإثراء الذكاء الاصطناعي كلا من المهاراتالمضمنة والمهارات المخصصة التي تقوم بإنشائها ونشرها شخصيا. يتم تنفيذ التعليمات البرمجية المخصصة خارجيا من خدمة البحث (على سبيل المثال، كدالة Azure)، ولكنها تقبل المدخلات وترسل المخرجات إلى مجموعة المهارات تماما مثل أي مهارة أخرى.

قد تبدو المهارات المخصصة معقدة ولكن يمكن أن تكون بسيطة ومباشرة من حيث التنفيذ. إذا كانت لديك حزم موجودة توفر نماذج مطابقة للنمط أو تصنيف، يمكن تمرير المحتوى الذي تستخرجه من الكائنات الثنائية كبيرة الحجم إلى هذه النماذج للمعالجة. نظرا لأن الإثراء الذكاء الاصطناعي يستند إلى Azure، يجب أن يكون نموذجك على Azure أيضا. تتضمن بعض منهجيات الاستضافة الشائعة استخدام Azure Functions أو Containers.

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

فوائد المهارات المخصصة

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

تعيين نقطة النهاية والفاصل الزمني للمهلة

يتم تحديد واجهة مهارة مخصصة من خلال مهارة واجهة برمجة تطبيقات الويب المخصصة.

"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "This skill has a 230 second timeout",
"uri": "https://[your custom skill uri goes here]",
"authResourceId": "[for managed identity connections, your app's client ID goes here]",
"timeout": "PT230S",

URI هو نقطة نهاية HTTPS لدالتك أو تطبيقك. عند تعيين URI، تأكد من أن URI آمن (HTTPS). إذا كانت التعليمات البرمجية الخاصة بك مستضافة في تطبيق دالة Azure، يجب أن يتضمن URI مفتاح API في الرأس أو كمعلمة URI لتخويل الطلب.

إذا كانت الدالة أو التطبيق يستخدم بدلا من ذلك الهويات المدارة من Azure وأدوار Azure للمصادقة والتخويل، يمكن أن تتضمن المهارة المخصصة رمز مصادقة مميزا على الطلب. تصف النقاط التالية متطلبات هذا النهج:

بشكل افتراضي، تنتهي مهلة الاتصال بنقطة النهاية إذا لم يتم إرجاع استجابة ضمن نافذة 30 ثانية (PT30S). خط أنابيب الفهرسة متزامن وستنتج الفهرسة خطأ مهلة إذا لم يتم تلقي استجابة في هذا الإطار الزمني. يمكنك زيادة الفاصل الزمني إلى قيمة قصوى قدرها 230 ثانية عن طريق تعيين معلمة المهلة (PT230S).

تنسيق مدخلات واجهة برمجة تطبيقات الويب

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

لنفترض أنك تريد إنشاء إثراء أساسي يحدد التاريخ الأول المذكور في نص العقد. في هذا المثال، تقبل المهارة المخصصة إدخالا واحدا "contractText" كنص العقد. كما أن المهارة لها ناتج واحد، وهو تاريخ العقد. لجعل المثري أكثر إثارة للاهتمام، قم بإعادة هذا "contractDate" في شكل نوع معقد متعدد الأحزاب.

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

  • عضو "recordId" هو المعرف الفريد لسجل معين. عندما يقوم المثري بإرجاع النتائج، يجب توفير "recordId" هذا للسماح للمتصل بمطابقة نتائج السجل مع إدخاله.

  • عضو "بيانات"، وهو في الأساس حقيبة من حقول الإدخال لكل سجل.

قد يبدو طلب واجهة برمجة تطبيقات الويب الناتج كما يلي:

{
    "values": [
      {
        "recordId": "a1",
        "data":
           {
             "contractText": 
                "This is a contract that was issues on November 3, 2023 and that involves... "
           }
      },
      {
        "recordId": "b5",
        "data":
           {
             "contractText": 
                "In the City of Seattle, WA on February 5, 2018 there was a decision made..."
           }
      },
      {
        "recordId": "c3",
        "data":
           {
             "contractText": null
           }
      }
    ]
}

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

تنسيق مخرجات واجهة برمجة تطبيقات الويب

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

{
  "values": 
  [
      {
        "recordId": "b5",
        "data" : 
        {
            "contractDate":  { "day" : 5, "month": 2, "year" : 2018 }
        }
      },
      {
        "recordId": "a1",
        "data" : {
            "contractDate": { "day" : 3, "month": 11, "year" : 2023 }                    
        }
      },
      {
        "recordId": "c3",
        "data" : 
        {
        },
        "errors": [ { "message": "contractText field required "}   ],  
        "warnings": [ {"message": "Date not found" }  ]
      }
    ]
}

إضافة مهارة مخصصة إلى مجموعة المهارات

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

{
    "skills": [
      {
        "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
        "name": "myCustomSkill",
        "description": "This skill calls an Azure function, which in turn calls TA sentiment",
        "uri": "https://indexer-e2e-webskill.azurewebsites.net/api/DateExtractor?language=en",
        "context": "/document",
        "httpHeaders": {
            "DateExtractor-Api-Key": "foo"
        },
        "inputs": [
          {
            "name": "contractText",
            "source": "/document/content"
          }
        ],
        "outputs": [
          {
            "name": "contractDate",
            "targetName": "date"
          }
        ]
      }
  ]
}

شاهد هذا الفيديو

للحصول على مقدمة فيديو وعرض توضيحي، شاهد العرض التوضيحي التالي.

الخطوات التالية

غطت هذه المقالة متطلبات الواجهة اللازمة لدمج مهارة مخصصة في مجموعة المهارات. تابع هذه الروابط لمعرفة المزيد حول المهارات المخصصة وتكوين مجموعة المهارات.