نعلن اليوم عن طفرة حديثة تتخطى حدود توليد كود الذكاء الاصطناعي. طور فريقنا العلمي في NinjaTech AI نهجًا جديدًا لتوليد التعليمات البرمجية يسمى «مجموعة لغات البرمجة المتعددة» (MPLE).
باستخدام هذا النهج مع Llama 3.1 405B Instruct، تمكنا من إظهار أداء أفضل إحصائيًا من GPT-4O من OpenAI و Sonnet 3.5 من Anthropic كما تم قياسه بواسطة معيار HumanEval. يمكنك العثور على هذه النتائج، إلى جانب تفاصيل نهجنا، في ورقتنا الفنية المنشورة على arxiv.org.
في منشور المدونة هذا، سنتعمق في ثلاث نتائج محورية تتعلق بمجموعة لغات البرمجة المتعددة (MPLE)، والتي لديها القدرة على تعزيز قدرات إنشاء التعليمات البرمجية بشكل كبير عبر جميع مساعدي الذكاء الاصطناعي:
- ينتج نهج سير العمل الوكيل (MPLE)، لتوليد التعليمات البرمجية، دقة أفضل بنسبة 2-9٪ بطريقة فعالة من حيث التكلفة.
- يؤدي دمج MPLE مع تقنيات الاستدلال المتقدمة مثل Reflection و Monte Carlo Tree Search (MCTS)، المطبقة على نماذج LLM الحالية إلى تحقيق مكاسب إضافية في الأداء.
- ولدهشتنا السارة، لاحظنا أن تقنيات MPLE+MCTS المدعومة من llama3.1-405b-instruct وصلت إلى دقة تصل إلى 96.25% في معيار التقييم البشري.
تحدي توليد التعليمات البرمجية
يمكن أن تكون كتابة التعليمات البرمجية صعبة لأنها تتطلب فهمًا عميقًا للغات البرمجة والقدرة على ترجمة الأفكار المعقدة إلى تعليمات برمجية قابلة للتنفيذ. بالإضافة إلى ذلك، يجب على المطورين أيضًا التعامل مع مشكلات مثل تصحيح الأخطاء والتحسين والتوافق - والتي يمكن أن تجعل عملية الترميز أكثر تعقيدًا واستهلاكًا للوقت.
هذا هو المكان الذي يساعد فيه الذكاء الاصطناعي؛ يمكن لنماذج اللغات الكبيرة (LLMs) توليد كميات كبيرة من التعليمات البرمجية بسرعة عندما يطلب منها المستخدم ذلك. منذ إطلاقنا MyNinja.ai في أواخر مايو 2024، عالجت أكثر من 734K مهمة Coder من حوالي 173 ألف مطور.
لكن إنشاء كود AI لا يزيل جميع تحديات كتابة التعليمات البرمجية. LLMs ليست موثوقة بنسبة 100٪ - يمكنها ارتكاب أخطاء عند إنشاء التعليمات البرمجية.
السبب وراء ارتكاب LLMs للأخطاء هو أن الأساليب التقليدية لتوليد كود الذكاء الاصطناعي تعتمد على لغة برمجة واحدة، مما قد يؤدي إلى أخطاء وتحيزات خاصة باللغة. على سبيل المثال، قد يكون أداء LLM جيدًا في إنشاء كود Python لأنه تم تدريبه على Python. ولكن عندما يُطلب منك إنشاء كود C ++ أو Java، فقد لا يؤدي ذلك إلى إنشاء نتيجة دقيقة بسبب الاختلافات في معالجة الأخطاء أو استخدام المكتبة. سبب آخر يجعل LLMs تعاني من إنشاء كود دقيق هو صعوبة ترجمة النص الذي يمكن للبشر قراءته (أي مطالبة المستخدم) إلى كود.
أحد الحلول لهذه المشكلة هو الاستثمار في المزيد من التدريب النموذجي. يمكن للشركات قضاء المزيد من الوقت - والمزيد والمزيد من المال - في تدريب LLMs للإجابة على أسئلة الترميز في المحاولة الأولى. يُطلق على هذا اسم التعلم بدون جرعة، مما يعني أن النموذج ينتج إجابة صحيحة بدون إعطاء أمثلة، بل مجرد مطالبة، ويولد استجابة مناسبة بناءً على معرفته السابقة فقط. ومع ذلك، يتطلب نهج اللقطة الصفرية استثمارًا هائلاً للوقت والمال (10 ملايين دولار - 100 مليون دولار +) - لتحسين دقة النموذج.
ولكن انخفضت تكاليف الاستدلال بأكثر من 100 مرة في العامين الماضيين ويستمرون في القيام بذلك، مما أدى إلى ظهور طريقة جديدة: تدفقات العمل Agentic لـ CodeGen.
الحل الذي نقدمه: مجموعة لغات البرمجة المتعددة (MPLE)
اقترح فريقنا نهجًا جديدًا لتوليد كود الذكاء الاصطناعي يسمى مجموعة لغات البرمجة المتعددة (MPLE). يستفيد هذا النهج من قوة لغات البرمجة المتعددة لإنشاء كود أكثر دقة وقوة باستخدام نهج متعدد اللقطات.
بدلاً من الاعتماد على النموذج لإنشاء إجابة صحيحة في المحاولة الأولى (لقطة واحدة)، نتفاعل مع LLM عدة مرات لتوليد الاستجابة الصحيحة. في كل مرة نتعامل فيها مع النموذج، نطلب منه حل مشكلة المستخدم باستخدام لغة برمجة مختلفة. هذا يسمح لنا بالاستفادة من القوة الطبيعية لـ LLM - القدرة على ترجمة التعليمات البرمجية من لغة برمجة إلى أخرى.
فكر في MPLE كفريق من الخبراء، كل منهم على دراية جيدة بلغة برمجة مختلفة، يعملون معًا لإنشاء الكود الأكثر دقة في المحاولة الأولى. كل خبير (أو لغة برمجة) يجلب نقاط قوته الفريدة إلى الطاولة، ومن خلال الجمع بين نقاط قوته، يمكنه إنتاج حل أكثر دقة وموثوقية. تطلب MPLE من جميع هؤلاء الخبراء المساهمة «بخبراتهم» بينما يقوم نظامنا بإنشاء الكود الصحيح الذي يطلبه المستخدم.
إليك كيفية عمل MPLE:
- إنشاء الكود الأولي: عندما يطلب المستخدم من نظامنا سؤالًا متعلقًا بالشفرة، يقوم نموذج الذكاء الاصطناعي الخاص بنا بإنشاء استجابة أولية بلغة البرمجة التي يطلبها المستخدم.
- أخذ العينات والترجمة بلغات متعددة: قبل إعادة الرد إلى المستخدم، يتم اختبار الكود للتأكد من جودته ودقته. إذا فشلت الشفرة في اجتياز جميع الاختبارات، يقوم نموذجنا بإنشاء كود جديد بلغة برمجة مختلفة. ثم تتم ترجمة الكود الجديد مرة أخرى إلى لغة برمجة طلب المستخدم. تختلف هذه النسخة البديلة عن النسخة الأصلية لأنها تستفيد من نقاط القوة في اللغة البديلة، مما قد يزيل الأخطاء التي تسببت في فشل الاختبار.
- الصقل التكراري: يتم اختبار إصدار الكود المكرر مرة أخرى مقابل حالات الاختبار. إذا فشلت في اجتياز جميع الاختبارات، فستستمر العملية من خلال التكرار من خلال لغات ترميز مختلفة حتى يجتاز الإصدار جميع الاختبارات بنجاح. عند اكتمال العملية، يتم إرجاع الرد (أي الإصدار النهائي من الكود) إلى المستخدم.
- تكامل المجموعة: من خلال التكرارات، يدمج إطار المجموعة نقاط القوة في لغات متعددة لتحسين البرنامج تدريجيًا. من خلال التعامل مع كل توليد كود خاص باللغة على أنه «خبير ضعيف» فردي، يجمع الإطار مخرجاته للتخفيف من الأخطاء والتحيزات الخاصة باللغة.

من المهم ملاحظة أن هذا النهج ليس نموذجًا جديدًا، ولا يتطلب إعادة تدريب نموذج. إنه نظام ينظم تفاعلات متعددة مع LLM الحالي الخاص بك لإنشاء أفضل إجابة ممكنة باستخدام نهج متعدد اللقطات. نعتقد أنه مع استمرار انخفاض تكاليف الاستدلال، فإن مستقبل النتائج المدعومة بالذكاء الاصطناعي - والتي تكون مجدية اقتصاديًا - سيقوده سير العمل الفعال الذي يعزز تقنيات الاستدلال الثقيلة - حيث يتم إنشاء الكثير من الرموز للإجابة على الأسئلة المعقدة.
التحقق من صحة MPLE من خلال الاختبار
لقد اختبرنا إطار عمل MPLE على معيارين معترف بهما على نطاق واسع لتوليد التعليمات البرمجية: تقييم بشري و هيومان فال بلس. تقيس هذه المعايير قدرة LLMs على إنشاء كود وظيفي بناءً على مطالبة المستخدم.
تم تصميم HumanEval لمهام إنشاء نص إلى كود حيث يكون الإدخال عبارة عن مطالبة مستخدم تصف الوظيفة المقصودة للبرنامج. يتم بعد ذلك تقييم مخرجات LLM بناءً على قدرتها على اجتياز اختبارات الوحدة بمتطلبات محددة. يقوم Humaneval-plus بتوسيع HumanEval من خلال دمج عدد كبير من حالات الاختبار الإضافية لتقييم متانة الكود وصحته بدقة.
قمنا بقياس فعالية MPLE باستخدام Pass @1. تقيس طريقة تقييم التعليمات البرمجية هذه النسبة المئوية للمهام التي تم إكمالها بنجاح بواسطة التعليمات البرمجية التي تم إنشاؤها في المحاولة الأولى.
لقد أجرينا تجارب باستخدام كل من LLMs الخاصة بنا والنماذج الأخرى المعروفة مثل GPT-4o و Claude-Sonnet-3.5 و Llama3.1-405b.
أظهر اختبارنا أن إطار MPLE المقترح يعمل باستمرار على تحسين دقة Pass @1 عبر جميع LLMs التي تم اختبارها عند مقارنتها بخط الأساس. على سبيل المثال، زادت دقة GPT3.5-Turbo من 65.83٪ في خط الأساس إلى 74.17٪ مع MPLE، مع تسليط الضوء على فعالية الاستفادة من لغات البرمجة المتعددة للحد من التحيزات والأخطاء الخاصة باللغة (انظر الجدول 1).

يؤدي دمج MPLE مع Reflection ومونتي كارلو إلى نتائج أفضل
لقد دفعنا MPLE إلى أبعد من ذلك وصممنا نظامًا يدمج MPLE مع تقنيات الاستدلال المتقدمة مثل Reflection و MCTS. تُستخدم هذه التقنيات لتعزيز قدرات حل المشكلات والتفكير لدى LLMs، خاصة عندما يتعلق الأمر بالمهام التي تتطلب اتخاذ قرارات استراتيجية أو متعددة الخطوات. كانت فرضيتنا أن الجمع بين هذه الأنظمة سيؤدي إلى نتائج أعلى من استخدام MPLE وحده. من خلال سلسلة من الاختبارات تمكنا من إثبات صحة هذه الفرضية.
لقد اختبرنا أيضًا MPLE باستخدام معيار Humaneval-plus والنتائج تؤكد أيضًا فوائد نهج التجميع متعدد اللغات الخاص بنا. ومن الجدير بالذكر، تحسن أداء llama3.1-8binstruct من 60.00٪ في خط الأساس إلى 71.88٪ مع MPLE+Reflection (انظر الجدول 2).

بالإضافة إلى ذلك، تقدم MPLE+Reflection و MPLE+MCTS نتائج تنافسية، حيث حققت نماذج متعددة (GPT-4omini و GPT-4o و Claude-Sonnet-3.5 و llama3.1-405b-instruct) 87.50٪ (انظر الجدول 3).

توضح نتائجنا بوضوح أن إطار MPLE، خاصة عند استخدامه جنبًا إلى جنب مع خوارزميات الاستدلال الإضافية، يقدم نهجًا قويًا ومرنًا لتعزيز إنشاء التعليمات البرمجية عبر LLMs المتعددة. تؤكد تحسينات الأداء المتسقة لـ MPLE على إمكاناتها للتطبيقات العملية في تطوير البرامج القائمة على الذكاء الاصطناعي.
تحقق Llama 3.1-405b أحدث النتائج باستخدام MPLE و MCTS: دقة 96.25٪!
خلال تحليلنا، تأثرنا بشكل خاص بأداء MPLE عند تطبيقه على مزيج MPLE+MCTS الذي حقق أعلى دقة للعديد من النماذج، مثل llama3.1-405b-instruct، الذي وصل إلى دقة SOTA Pass @1 بنسبة 96.25٪ (انظر الجدول 4).

الطريق إلى الأمام
مع استمرارنا في دفع حدود ما هو ممكن مع MPLE، نحن متحمسون لاستكشاف مجالات جديدة للبحث والتطوير. تشمل مجالات التركيز المحتملة ما يلي:
- تطوير مقاييس تقييم أكثر قوة: يعد إنشاء مقاييس تقييم فعالة أمرًا بالغ الأهمية لقياس أداء MPLE بدقة. من خلال التركيز على مقاييس أكثر شمولاً، يمكننا ضمان دقة الإطار وموثوقيته وقابليته للتطبيق العملي عبر مختلف المجالات.
- تطبيق MPLE على مشاكل العالم الحقيقي: تتمتع MPLE بالقدرة على مواجهة تحديات العالم الحقيقي المعقدة، مثل أتمتة العمليات التجارية، وتحسين خطوط أنابيب تطوير البرامج، وتحسين تدابير الأمن السيبراني. سيكون تقييم MPLE عبر نطاق أوسع من مجموعات البيانات والتطبيقات الواقعية أمرًا بالغ الأهمية في تقييم قابليتها للتعميم والتأثير.
- تحسين NinjallM لمهام الترميز: برنامج NinjallM 3.0 الخاص بنا (نسخة دقيقة ومحددة من llama3.1-405b)، متوفرة على MyNinja.ai حققت نتائج واعدة في HumanEval (93.85٪) و Humaneval-plus (86.67٪)، ونحن على الطريق نحو زيادة تحسين أدائها. سنطلق برنامج Ninja Coder المستند إلى MPLE في غضون شهر.
نحن متحمسون لمشاركة بحثنا حول MPLE مع العالم. نعتقد أن هذا النهج لديه القدرة على إحداث تأثير كبير على إنشاء كود LLM. يقلل MPLE من الأخطاء والتحيزات الخاصة باللغة، مما يؤدي إلى إنشاء كود أكثر دقة وقوة - مما يعني مزيدًا من الوقت للمطورين لمعالجة المشكلات الأكبر. نحن ملتزمون بمواصلة البحث والتطوير في هذا المجال، ونتطلع إلى رؤية التطبيقات المبتكرة لـ MPLE في المستقبل.
ملاحظة: المستقبل أقل بكثير من الأخطاء :-)
ملاحظة: استخدمنا MyNinja.ai للمساعدة في إنشاء منشور المدونة هذا.



