ممارسات DevOps لـ LUIS

هام

سيتم إيقاف LUIS في 1 أكتوبر 2025 وبدءا من 1 أبريل 2023، لن تتمكن من إنشاء موارد LUIS جديدة. نوصي بترحيل تطبيقات LUIS إلىفهم لغة المحادثة للاستفادة من دعم المنتج المستمر والقدرات متعددة اللغات.

يمكن لمهندسي البرامج الذين يطورون تطبيق Language Understanding (LUIS) تطبيق ممارسات DevOps حول التحكم بالمصادر، والإنشاءات التلقائية، والاختبار، وإدارة الإصدار من خلال اتباع هذه الإرشادات.

التحكم في المصدر واستراتيجيات الفروع لـ LUIS

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

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

  • التحكم بالمصادر

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

    • يمكن للمطورين العمل من الفروع المستقلة.
    • يمكن للمطورين العمل في فروع متعددة بشكلٍ متزامن.
    • من الممكن دمج التغييرات في تطبيق LUIS من إصدار فرعي إلى آخر من خلال إعادة قاعدة أو دمجها.
    • يمكن للمطورين دمج طلب سحب في الفرع الأصل.
  • تعيين الإصدار

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

    • يتم تقديم التغييرات في طلب السحب كتعليمة مصدر برمجية قابلة للقراءة من البشر يمكن مراجعتها قبل قبول طلب السحب.

التحكم في المصادر

للحفاظ على تعريف مخطط التطبيق لتطبيق LUIS في نظام إدارة تعليمات المصدر البرمجية، استخدم تمثيل تنسيق LUDown (.lu) للتطبيق. يفضل التنسيق .lu للتنسيق .json لأنه قابل للقراءة من البشر، مما يسهل إجراء التغييرات ومراجعتها في طلبات السحب.

حفظ تطبيق LUIS باستخدام تنسيق LUDown

لحفظ تطبيق LUIS بتنسيق .lu ووضعه ضمن التحكم بالمصادر:

  • إما: تصدير إصدار التطبيق كما .lu من مدخل LUIS وإضافته إلى مستودع التحكم بالمصادر

  • أو: استخدام محرر نص لإنشاء ملف .lu لتطبيق LUIS وإضافته إلى مستودع التحكم بالمصادر

تلميح

إذا كنت تعمل باستخدام تصدير JSON لتطبيق LUIS، يمكنك تحويله إلى LUDown. استخدم الخيار --sort للتأكد من فرز الأهداف والألفاظ أبجدياً.
تجدر الإشارة إلى أن إمكانية تصدير .LU المضمنة في مدخل LUIS تفرز الإخراج بالفعل.

إنشاء تطبيق LUIS من المصدر

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

الملفات التي يجب الاحتفاظ بها ضمن التحكم بالمصادر

يجب الاحتفاظ بالأنواع التالية من الملفات لتطبيق LUIS التابع لك ضمن التحكم بالمصادر:

لم يتم إيداع بيانات الاعتماد والمفاتيح

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

  • تأليف LUIS ومفاتيح التوقّع
  • تأليف LUIS ونقاط نهاية التوقّع
  • مفاتيح موارد Azure
  • الرموز المميزة للوصول، مثل الرمز المميز لكيان خدمة Azure المستخدَم للمصادقة التلقائية

استراتيجيات إدارة البيانات السرية بأمان

تتضمن استراتيجيات إدارة البيانات السرية بأمان:

  • إذا كنت تستخدم عنصر التحكم بالإصدار Git، يمكنك تخزين بيانات وقت التشغيل السرية في ملف محلي ومنع إيداع الملف عن طريق إضافة نمط لمطابقة اسم الملف إلى ملف .gitignore
  • في سير عمل الأتمتة، يمكنك تخزين البيانات السرية بأمان في تكوين المعلمات التي تقدمها تقنية الأتمتة هذه. على سبيل المثال، إذا كنت تستخدم GitHub Actions، يمكنك تخزين البيانات السرية بأمان في أسرار GitHub.

التفريع والدمج

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

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

لدعم العمل المستقل في الفروع من خلال مشروع LUIS:

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

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

فرع ميزة Git

يمكن للمطورين العمل من فروع مستقلة.

يمكن للمطورين العمل على التحديثات على تطبيق LUIS بشكلٍ مستقل عن الفروع الأخرى من خلال:

  1. إنشاء إصدار فرعي لميزة من الإصدار الفرعي الرئيسي (اعتماداً على استراتيجية الإصدار الفرعي التابع لك، عادة ما يكون رئيسياً أو مطوراً).

  2. إنشاء تطبيق LUIS جديد في مدخل LUIS ("تطبيق فرعي التطوير") فقط لدعم العمل في الإصدار الفرعي للميزات.

    • إذا كان مصدر .lu الحل التابع لك موجوداً بالفعل في الإصدار الفرعي التابع لك، لأنه تم حفظه بعد العمل المنجز في إصدار فرعي آخر في وقت سابق من المشروع، فأنشئ تطبيق LUIS للإصدار الفرعي للتطوير التابع لك عن طريق استيراد الملف .lu.

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

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

  4. اختبار التحديثات - راجع اختبار LUIS DevOps للحصول على تفاصيل حول اختبار تطبيق فرعي للتطوير التابع لك.

  5. تصدير الإصدار النشط من تطبيق فرعي للتطوير التابع لك .lu من قائمة الإصدارات.

  6. تحقق من التحديثات وقم بالدعوة لمراجعة النظراء لتحديثاتك. إذا كنت تستخدم GitHub، فسترفع طلب سحب.

  7. عند الموافقة على التغييرات، ادمج التحديثات في الفرع الرئيسي. عند هذه النقطة، أنشئ إصدار جديد من تطبيق LUIS الرئيسي، باستخدام المحدّث .lu في الرئيسي. راجع تعيين الإصدار للحصول على اعتبارات حول تعيين اسم الإصدار.

  8. عند حذف إصدار فرعي لميزة، من الجيد حذف تطبيق LUIS لإصدار فرعي للتطوير الذي أنشأته لعمل فرع الميزة.

يمكن للمطورين العمل في فروع متعددة بشكلٍ متزامن

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

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

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

يمكن لعدة مطورين العمل على نفس الإصدار الفرعي بشكلٍ متزامن

يمكنك دعم العديد من المطورين الذين يعملون على نفس الإصدار الفرعي للميزات في نفس الوقت:

  • يسحب المطورون نفس الميزات الفرعية للميزات ودفع وسحب التغييرات المقدمة من أنفسهم والمطورين الآخرين أثناء متابعة العمل، كالمعتاد.

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

  • أضف أعضاء الفريق كمساهمين في تطبيق LUIS لإصدار فرعي للتطوير.

  • عند اكتمال عمل إصدار فرعي للميزة، قم بتصدير الإصدار النشط من تطبيق LUIS لإصدار فرعي للتطوير كما .lu من قائمة الإصدارات، واحفظ الملف المحدّث .lu في المستودع، وتحقق من التغييرات وراجعها.

دمج التغييرات من إصدار فرعي إلى آخر مع إعادة قاعدة أو دمجها

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

اتبع هذه التلميحات في حالة إعادة إنشاء تطبيق LUIS الخاص بك في إصدار فرعي للميزات:

  • قبل إعادة إنشاء التطبيق أو دمجه، تأكد من أن نسختك المحلية من المصدر .lu لتطبيقك تحتوي على جميع التغييرات الأخيرة التي قمت بتطبيقها باستخدام مدخل LUIS، عن طريق إعادة تصدير تطبيقك من المدخل أولاً. بهذه الطريقة، يمكنك التأكد من عدم فقدان أي تغييرات أجريتها في المدخل ولم يتم تصديرها بعد.

  • أثناء الدمج، استخدم الأدوات القياسية لحل أي تعارضات دمج.

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

دمج طلبات السحب

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

بعد دمج طلب سحبك، يُوصى بالتنظيف:

  • حذف الإصدار الفرعي في المستودع

  • احذف تطبيق LUIS لإصدار فرعي للتطوير الذي أنشأته لعمل إصدار فرعي لميزة.

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

  • التحديثات في طلب سحب قبل دمج طلب السحب
  • تطبيق LUIS للإصدار الفرعي الرئيسي بعد الموافقة على طلب سحب ودمج التغييرات في الرئيسي.

لمزيد من المعلومات حول اختبار LUIS DevOps، راجع اختبار DevOps لـ LUIS. لمزيد من التفاصيل حول تنفيذ مهام سير العمل، راجع مهام سير عمل التنفيذ التلقائي لـ LUIS DevOps.

عمليات استعراض التعليمات البرمجية

تطبيق LUIS بتنسيق LUDown قابل للقراءة من البشر، والذي يدعم اتصال التغييرات في طلب سحب مناسب للمراجعة. تتم كتابة ملفات اختبار الوحدة أيضاً بتنسيق LUDown ويمكن أيضاً مراجعتها بسهولة في طلب سحب.

تعيين الإصدار

يتكون التطبيق من مكونات متعددة قد تتضمن أشياء مثل روبوت يعمل في Azure الذكاء الاصطناعي Bot ServiceوQnA Makerوخدمة Azure الذكاء الاصطناعي Speech والمزيد. لتحقيق هدف التطبيقات المقترنة بشكل غير محكم، استخدم التحكم بالإصدار حتى يتم إصدار كل مكون من مكونات التطبيق بشكلٍ مستقل، ما يسمح للمطورين بالكشف عن التغييرات أو التحديثات العاجلة بمجرد النظر إلى رقم الإصدار. من الأسهل إصدار تطبيق LUIS التابع لك بشكلٍ مستقل عن المكونات الأخرى إذا قمت بالاحتفاظ به في المستودع الخاص به.

يجب أن يكون لتطبيق LUIS للإصدار الفرعي الرئيسي نظام إصدار مطبّق. عند دمج التحديثات مع .lu لتطبيق LUIS في الرئيسي، ستقوم بعد ذلك باستيراد هذا المصدر المحدّث إلى إصدار جديد في تطبيق LUIS للإصدار الفرعي الرئيسي.

يُوصى باستخدام نظام إصدار رقمي لإصدار تطبيق LUIS الرئيسي، على سبيل المثال:

major.minor[.build[.revision]]

كل تحديث يتم زيادة رقم الإصدار في الرقم الأخير.

يمكن استخدام الإصدار الرئيسي / الثانوي للإشارة إلى نطاق التغييرات على وظيفة تطبيق LUIS:

  • الإصدار الرئيسي: تغيير كبير، مثل دعم هدف جديد أو كيان جديد
  • الإصدار الثانوي: تغيير ثانوي متوافق مع الإصدارات السابقة، مثل بعد تدريب جديد كبير
  • البنية: لا يوجد تغيير في الوظائف، مجرد بنية مختلفة.

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

راجع:

تعيين إصدار تطبيق LUIS "للإصدارات الفرعية للميزات"

عندما تعمل باستخدام تطبيق LUIS "لإصدار فرعي للتطوير" الذي أنشأته لدعم العمل في إصدار فرعي للميزات، ستقوم بتصدير تطبيقك عند اكتمال عملك وستتضمن التحديث 'lu في طلب سحبك. يجب حذف الفرع في المستودع الخاص بك، وتطبيق LUIS "لإصدار فرعي للتطوير" بعد دمج طلب السحب في الرئيسي. نظراً لوجود هذا التطبيق فقط لدعم العمل في الإصدار الفرعي للميزات، فلا يوجد نظام إصدار معين تحتاج إلى تطبيقه داخل هذا التطبيق.

عند دمج التغييرات التي أجريتها في طلب سحبك في الرئيسي، أي عندما يجب تطبيق تعيين الإصدار، حتى يتم إصدار جميع التحديثات إلى الرئيسي بشكلٍ مستقل.

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