تغييرات نقطة نهاية التنبؤ ل V3

تم تغيير واجهات برمجة تطبيقات V3 لنقطة نهاية تنبؤ الاستعلام. استخدم هذا الدليل لفهم كيفية الترحيل إلى واجهات برمجة تطبيقات نقطة النهاية للإصدار 3. لا يوجد حاليا تاريخ يجب فيه إكمال الترحيل.

الحالة المتاحة بشكل عام - تتضمن واجهة برمجة تطبيقات V3 هذه تغييرات كبيرة في طلب JSON والاستجابة من واجهة برمجة تطبيقات V2.

توفر واجهة برمجة تطبيقات V3 الميزات الجديدة التالية:

يحتوي طلب نقطة نهاية التنبؤ والاستجابة له على تغييرات كبيرة لدعم الميزات الجديدة المذكورة أعلاه، بما في ذلك ما يلي:

الوثائق المرجعية متاحة ل V3.

تغييرات V3 من المعاينة إلى GA

أجرى V3 التغييرات التالية كجزء من الانتقال إلى GA:

  • تحتوي الكيانات التي تم إنشاؤها مسبقا التالية على استجابات JSON مختلفة:

  • طلب تغيير JSON للهيئة:

    • من preferExternalEntities إلى preferExternalEntities
    • score معلمة اختيارية للكيانات الخارجية
  • تغييرات JSON في جسم الاستجابة:

    • normalizedQuery ازاله

استراتيجية التبني المقترحة

إذا كنت تستخدم Bot Framework أو Bing التدقيق الإملائي V7 أو تريد ترحيل تأليف تطبيق LUIS فقط، فاستمر في استخدام نقطة النهاية V2.

إذا كنت تعلم أن أيا من تطبيقات العميل أو عمليات الدمج (Bot Framework و Bing التدقيق الإملائي V7) لم تتأثر وكنت مرتاحا لترحيل تأليف تطبيق LUIS ونقطة نهاية التنبؤ في نفس الوقت، فابدأ في استخدام نقطة نهاية التنبؤ V3. ستظل نقطة نهاية التنبؤ ب V2 متاحة وهي استراتيجية احتياطية جيدة.

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

غير مدعوم

تطبيقات عميل Bot Framework و Azure Bot Service

استمر في استخدام نقطة نهاية التنبؤ بواجهة برمجة تطبيقات V2 حتى يتم إصدار الإصدار 4.7 من إطار عمل Bot.

تغييرات عنوان URL لنقطة النهاية

التغييرات حسب اسم الفتحة واسم الإصدار

تم تغيير تنسيق مكالمة HTTP لنقطة النهاية V3 .

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

قيم صالحة ل SLOT-NAME
production
staging

طلب تغييرات

تغييرات سلسلة الاستعلام

تتضمن معلمات سلسلة استعلام واجهة برمجة التطبيقات V3 ما يلي:

معلمة الاستعلام اسم مدخل LUIS النوع إصدار افتراضي الغرض
log حفظ السجلات منطقي V2 & V3 false تخزين الاستعلام في ملف السجل. القيمة الافتراضية هي ⁧false.
query - سلسلة V3 فقط لا يوجد تقصير - مطلوب في طلب GET في V2 ، يكون الكلام الذي يجب التنبؤ به في المعلمةq.

في V3 ، يتم تمرير الوظيفة في المعلمةquery.
show-all-intents تضمين درجات لجميع المقاصد منطقي V3 فقط false إرجاع جميع المقاصد مع النتيجة المقابلة في كائن prediction.intents. يتم إرجاع المقاصد ككائنات في كائن أصلي intents . يسمح هذا بالوصول البرمجي دون الحاجة إلى العثور على القصد في صفيف: prediction.intents.give. في V2 ، تم إرجاعها في صفيف.
verbose تضمين المزيد من تفاصيل الكيانات منطقي V2 & V3 false في V2 ، عندما تم ضبطها على true ، تم إرجاع جميع النوايا المتوقعة. إذا كنت بحاجة إلى جميع النوايا المتوقعة ، فاستخدم معلمة V3 الخاصة ب show-all-intents.

في V3، توفر هذه المعلمة فقط تفاصيل بيانات تعريف الكيان للتنبؤ بالكيان.
timezoneOffset - سلسلة V2 - المنطقة الزمنية المطبقة على كيانات datetimeV2.
datetimeReference - سلسلة V3 - المنطقة الزمنية المطبقة على كيانات datetimeV2. يحل محل timezoneOffset من V2.

V3 آخر الجسم

{
    "query":"your utterance here",
    "options":{
        "datetimeReference": "2019-05-05T12:00:00",
        "preferExternalEntities": true
    },
    "externalEntities":[],
    "dynamicLists":[]
}
الخاصية النوع إصدار افتراضي الغرض
dynamicLists صفيف V3 فقط غير مطلوب. تسمح لك القوائم الديناميكية بتوسيع كيان قائمة مدرب ومنشور موجود بالفعل، موجود بالفعل في تطبيق LUIS.
externalEntities صفيف V3 فقط غير مطلوب. تمنح الكيانات الخارجية تطبيق LUIS القدرة على تحديد الكيانات وتصنيفها أثناء وقت التشغيل، والتي يمكن استخدامها كميزات للكيانات الموجودة.
options.datetimeReference سلسلة V3 فقط لا يوجد تقصير تستخدم لتحديد إزاحة datetimeV2. تنسيق datetimeReference هو ISO 8601.
options.preferExternalEntities منطقي V3 فقط false يحدد ما إذا كان الكيان الخارجي للمستخدم (بنفس اسم الكيان الموجود) مستخدما أو إذا تم استخدام الكيان الموجود في النموذج للتنبؤ.
query سلسلة V3 فقط مطلوب في V2 ، يكون الكلام الذي يجب التنبؤ به في المعلمةq.

في V3 ، يتم تمرير الوظيفة في المعلمةquery.

تغييرات الاستجابة

تم تغيير استجابة الاستعلام JSON للسماح بوصول برمجي أكبر إلى البيانات المستخدمة بشكل متكرر.

تغييرات JSON من المستوى الأعلى

أهم خصائص JSON ل V2 هي، عندما verbose يتم تعيينها إلى true، والتي ترجع جميع المقاصد ودرجاتها في intents الموقع:

{
    "query":"this is your utterance you want predicted",
    "topScoringIntent":{},
    "intents":[],
    "entities":[],
    "compositeEntities":[]
}

أفضل خصائص JSON ل V3 هي:

{
    "query": "this is your utterance you want predicted",
    "prediction":{
        "topIntent": "intent-name-1",
        "intents": {},
        "entities":{}
    }
}

الكائن intents هو قائمة غير مرتبة. لا تفترض الطفل الأول في المقابل intents ل topIntent. بدلا من ذلك، استخدم topIntent القيمة للعثور على النتيجة:

const topIntentName = response.prediction.topIntent;
const score = intents[topIntentName];

تسمح تغييرات مخطط JSON للاستجابة بما يلي:

  • تمييز واضح بين الكلام الأصلي ، والتنبؤ العائد ، queryprediction.
  • وصول برمجي أسهل إلى البيانات المتوقعة. بدلا من التعداد من خلال صفيف في V2 ، يمكنك الوصول إلى القيم بالاسم لكل من المقاصد والكيانات. بالنسبة لأدوار الكيانات المتوقعة، يتم إرجاع اسم الدور لأنه فريد عبر التطبيق بأكمله.
  • يتم احترام أنواع البيانات ، إذا تم تحديدها. لم تعد الأرقام يتم إرجاعها كسلسلات.
  • التمييز بين معلومات التنبؤ بالأولوية الأولى والبيانات الوصفية الإضافية، التي يتم إرجاعها $instance في الكائن.

تغييرات استجابة الكيان

وضع علامة على وضع الكيانات في الألفاظ

في V2 ، تم وضع علامة على كيان في كلام مع startIndex و endIndex.

في V3 ، يتم وضع علامة على الكيان ب startIndex و entityLength.

الوصول إلى $instance البيانات الوصفية للكيان

إذا كنت بحاجة إلى بيانات تعريف الكيان، فيجب أن تستخدم سلسلة الاستعلام verbose=true العلامة وتحتوي الاستجابة على بيانات التعريف في $instance الكائن. يتم عرض الأمثلة في إجابات JSON في الأقسام التالية.

يتم تمثيل كل كيان متوقع كصفيف

يحتوي الكائن prediction.entities.<entity-name> على صفيف لأنه يمكن التنبؤ بكل كيان أكثر من مرة في الكلام.

تغييرات الكيان المعدة مسبقا

يتضمن كائن استجابة V3 تغييرات على الكيانات التي تم إنشاؤها مسبقا. راجع كيانات محددة تم إنشاؤها مسبقا لمعرفة المزيد.

تغييرات التنبؤ بكيان القائمة

تم تغيير JSON للتنبؤ بكيان قائمة ليصبح صفيفا من المصفوفات:

"entities":{
    "my_list_entity":[
        ["canonical-form-1","canonical-form-2"],
        ["canonical-form-2"]
    ]
}

يتوافق كل صفيف داخلي مع النص داخل الكلام. الكائن الداخلي عبارة عن صفيف لأن النص نفسه يمكن أن يظهر في أكثر من قائمة فرعية واحدة لكيان قائمة.

عند التعيين بين الكائن entities إلى $instance الكائن، يتم الاحتفاظ بترتيب الكائنات لتنبؤات كيان القائمة.

const item = 0; // order preserved, use same enumeration for both
const predictedCanonicalForm = entities.my_list_entity[item];
const associatedMetadata = entities.$instance.my_list_entity[item];

اسم دور الكيان بدلا من اسم الكيان

في V2، قام الصفيف بإرجاع entities جميع الكيانات المتوقعة مع كون اسم الكيان هو المعرف الفريد. في V3، إذا كان الكيان يستخدم الأدوار وكان التنبؤ لدور كيان، فإن المعرف الأساسي هو اسم الدور. هذا ممكن لأن أسماء أدوار الكيانات يجب أن تكون فريدة عبر التطبيق بأكمله بما في ذلك أسماء النماذج الأخرى (النية ، الكيان).

في المثال التالي: ضع في اعتبارك كلاما يتضمن النص ، Yellow Bird Lane. يتم التنبؤ بهذا النص كدور كيان مخصص Location ل Destination.

نص النطق اسم الكيان اسم الدور
Yellow Bird Lane Location Destination

في V2، يتم تعريف الكيان بواسطة اسم الكيان مع الدور كخاصية للكائن:

"entities":[
    {
        "entity": "Yellow Bird Lane",
        "type": "Location",
        "startIndex": 13,
        "endIndex": 20,
        "score": 0.786378264,
        "role": "Destination"
    }
]

في V3، تتم الإشارة إلى الكيان بواسطة دور الكيان، إذا كان التنبؤ للدور:

"entities":{
    "Destination":[
        "Yellow Bird Lane"
    ]
}

في V3 ، نفس النتيجة مع العلامة لإرجاع بيانات تعريف الكيان verbose :

"entities":{
    "Destination":[
        "Yellow Bird Lane"
    ],
    "$instance":{
        "Destination": [
            {
                "role": "Destination",
                "type": "Location",
                "text": "Yellow Bird Lane",
                "startIndex": 25,
                "length":16,
                "score": 0.9837309,
                "modelTypeId": 1,
                "modelType": "Entity Extractor"
            }
        ]
    }
}

توسيع التطبيق في وقت التنبؤ

تعرف على مفاهيم حول كيفية توسيع التطبيق في وقت تشغيل التنبؤ.

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

استخدم وثائق واجهة برمجة تطبيقات V3 لتحديث استدعاءات REST الحالية إلى واجهات برمجة تطبيقات نقطة نهاية LUIS.