تغييرات نقطة نهاية التنبؤ ل V3
تم تغيير واجهات برمجة تطبيقات V3 لنقطة نهاية تنبؤ الاستعلام. استخدم هذا الدليل لفهم كيفية الترحيل إلى واجهات برمجة تطبيقات نقطة النهاية للإصدار 3. لا يوجد حاليا تاريخ يجب فيه إكمال الترحيل.
الحالة المتاحة بشكل عام - تتضمن واجهة برمجة تطبيقات V3 هذه تغييرات كبيرة في طلب JSON والاستجابة من واجهة برمجة تطبيقات V2.
توفر واجهة برمجة تطبيقات V3 الميزات الجديدة التالية:
يحتوي طلب نقطة نهاية التنبؤ والاستجابة له على تغييرات كبيرة لدعم الميزات الجديدة المذكورة أعلاه، بما في ذلك ما يلي:
- تغييرات كائن الاستجابة
- مراجع اسم دور الكيان بدلا من اسم الكيان
- خصائص لوضع علامة على الكيانات في الألفاظ
الوثائق المرجعية متاحة ل V3.
تغييرات V3 من المعاينة إلى GA
أجرى V3 التغييرات التالية كجزء من الانتقال إلى GA:
تحتوي الكيانات التي تم إنشاؤها مسبقا التالية على استجابات JSON مختلفة:
- OrdinalV1
- الجغرافياV2
- التاريخالوقتV2
- اسم مفتاح الوحدة القابل للقياس من
unitsإلىunit
طلب تغيير 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.