تحديث وتوليد التعليمات البرمجية

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

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

  • بالنسبة إلى مطوِّري Python وJava، يمكن للذكاء الاصطناعي التوليدي تعزيز قدراتهم عبر أتمتة المهام منخفضة القيمة مثل توليد الكود واكتشاف الأخطاء. كما يمكنه تحسين أداء الكود، وفرض معايير البرمجة، والمساعدة على اختيار واجهات برمجة التطبيقات والمكتبات، ما يؤدي إلى تطبيقات أكثر كفاءة وموثوقية.
  • في اللغات التقليدية مثل COBOL، يمكن للذكاء الاصطناعي التوليدي إضفاء حياة جديدة على الأنظمة القديمة. من خلال إعادة هيكلة كود COBOL الحالي وتحسينه، يمكن للذكاء الاصطناعي التوليدي تحسين أداء هذه الأنظمة وقابليتها للصيانة. كما يمكنه المساعدة على تحويل كود COBOL إلى لغات أحدث مثل Java، ما يوفر أداة قيّمة في جهود تحديث الأنظمة.
  • بالنسبة إلى مهندسي موثوقية المواقع (SRE) الذين يعملون مع Ansible، يمكن للذكاء الاصطناعي التوليدي أتمتة إنشاء الأدلة، وتحسين البرامج النصية الحالية، أو حتى اكتشاف الأخطاء المحتملة. يمكن لهذه الأتمتة تقليل الوقت المستغرق في المهام الروتينية بشكل كبير، ما يُتيح لمهندسي SRE التركيز على التحديات الأكثر تعقيدًا.
لماذا يتم استخدام الذكاء الاصطناعي التوليدي في تطوير التطبيقات؟

لتطبيق الذكاء الاصطناعي التوليدي في تطوير التطبيقات فوائد كبيرة محتملة:

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

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

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

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

حالات استخدام تطوير التطبيقات

يمكن تطبيق الذكاء الاصطناعي التوليدي في تطوير التطبيقات عبر عدة حالات استخدام واسعة النطاق العديد من النماذج العامة، مثل Llama 2، تم تدريبها على كود التطبيقات المكتوب بلغات برمجة حديثة متعددة، كما تتوفر نماذج مضبوطة لتوليد الكود.

حالات الاستخدام التي نرى استفادتها من الذكاء الاصطناعي التوليدي تشمل ما يلي:

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

يتم وصف كلٍّ من حالات الاستخدام هذه أدناه.

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

يمكن لاستخدام النماذج اللغوية الكبيرة (LLMs) لتوليد الكود تعزيز مهارات تطوير التطبيقات لدى المطورين المبتدئين أو حتى غير المطورين، لكن يمكن أن يصل سريعًا إلى مرحلة تناقص الفائدة مع تعقيد المخرجات المطلوبة، أو عندما يقترب مستوى التفاصيل في المطالبات من الكود الذي سيتم توليده.

 

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

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

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

نظرًا لأن لغات البرمجة تشبه أي لغة أخرى، يمكن لقدرة الترجمة النصية الأصلية في النماذج اللغوية الكبيرة ترجمة الكود من لغة برمجة إلى أخرى، مثل تحويل #C إلى Java.

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

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

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

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

اختيار واجهات برمجة التطبيقات والمكتبات هو تطبيق تقنية التوليد المعزز بالاسترجاع (RAG) لإدارة واجهات برمجة التطبيقات ومكتبات البرامج في المؤسسة. يمكن للمطور الذي يبحث عن واجهة برمجة تطبيقات لاستخدامها في تطبيق أن يكوِّن مطالبة للتوليد المعزز بالاسترجاع تستعلم قاعدة بيانات المؤسسة عن أسماء واجهة برمجة التطبيقات، وأوصافها، ونقاط النهاية، وما إلى ذلك، للإجابة عن أسئلة مثل: "هل لدينا واجهة برمجة تطبيقات تفعل هذا الشيء؟". طالما أن أوصاف واجهات برمجة التطبيقات ومكتبات الكود يتم الحفاظ عليها بجودة عالية وكلمات مفتاحية دقيقة، يمكن ضبط هذا التطبيق لتقديم إجابات متسقة تعمل على تسريع تطوير التطبيقات وتسريع تدريب المطورين الجُدُد.

قرارات واعتبارات تخص البنية

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

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

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

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

لا تضمن النماذج اللغوية الكبيرة إنتاج كود صحيح وظيفيًا، خاصةً إذا كان الكود الذي تم توليده أو تعديله يجب أن يندمج في نظام برمجي أكبر. على الرغم من عدم وجود حل مباشر لهذه المشكلة (والذي يقل تدريجيًا مع تطور النماذج اللغوية الكبيرة)، يجب أن يكون المهندسون على علم بأن الكود الذي تم توليده بواسطة النموذج اللغوي الكبير يجب أن يخضع لضوابط ضمان الجودة والأمن نفسها المطبَّقة على كود المطورين البشر.

عادةً ما يتم تدريب النماذج اللغوية الكبيرة المتاحة على عدد محدود من لغات البرمجة الحديثة مثل Python وJavascript و#C وغيرها. قد يجد مهندسو الحلول الذين يحتاجون إلى دعم لغات قديمة أو متخصصة خيارات محدودة للنماذج المتاحة، أو قد يضطرون إلى ضبط نموذج عام بشكل مكثف لتلبية احتياجاتهم.

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

تحدَّث إلى خبرائنا حول تنفيذ نمط نشر السحابة الهجينة.

المساهمون

Pete Nuwayser، وChris Kirby، وMihai Criveti

تاريخ التحديث: 30 نوفمبر 2023