Evaluating Inference-Time Defenses Against Package Hallucination in LLM-Generated Code
تتناول هذه الورقة القضية الحرجة المتمثلة في تخليق النماذج اللغوية الكبيرة (LLMs) لأكواد برمجية تحتوي على حزم برمجية غير موجودة عبر تصحيح انحيازات التقييم، والتقييم المنهجي لسبعة دفاعات في وقت الاستدلال عبر نماذج ولغات متعددة، وإثبات أنه بينما يوفر فك التشفير الجشع (Greedy decoding) أفضل توازن في المنفعة، فإن تقنيات التوليد المعزز بالاسترجاع (RAG) والتحسين الذاتي (Self-Refine) تعد ضرورية للحماية القوية ضد المطالبات العدائية.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
في عالم تطوير البرمجيات المعاصر، يعتمد المبرمجون غالباً على مساعدي الذكاء الاصطناł لكتتابة الأكواد. هذه الأنظمة، المعروفة بنماذج اللغات الكبيرة، تعمل كشركاء لا يكلّون يمكنهم اقتراح وظائف كاملة أو إصلاح الأخطاء في ثوانٍ معدودة. ولجعل اقتراحاتهم تعمل، توصي هذه النماذج تكراراً بإضافة حزم برمجية خارجية — وهي مجموعات مكتوبة مسبقاً من الأكواد تتعامل مع مهام محددة مثل الاتصال بقاعدة بيانات أو إنشاء رسم بياني. وتنشأ المشكلة عندما يبتكر الذكاء الاصطناعي اسماً لحزمة يبدو حقيقياً تماماً ولكنه لا يوجد في الواقع في أي مكتبة برمجية رسمية. تُسمى هذه الظاهرة بـ "هلوسة الحزم". وإذا وثق المطور بشكل أعمى في هذا الاقتراح وحاول تثبيت هذه الحزمة غير الموجودة، فقد يقوم دون قصد بتنزيل ملف خبيث أنشأه مخترق قام بتسجيل الاسم الوهمي. وهذا يخلق باباً خلفياً خطيراً في سلسلة توريد البرمجيات، مما يسمح للمهاجمين بحقن أكواد ضارة في التطبيقات التي قد يستخدمها الملايين من الناس.
لقد شرع فريق من الباحثين في فهم مدى تكرار حدوث هذه الهلوسات وما إذا كانت تقنيات محددة يمكنها إيقافها قبل اكتمال الكود حتى. وقد ركزوا على نماذج الذكاء الاصطناعي مفتوحة المصدر الأصغر حجماً، والتي تُستخدم على نطاق واسع لأنها أقل تكلفة في التشغيل، رغم أنها أكثر عرضة للوقوع في الأخطاء مقارنة بنظيراتها الأكبر. اختبر الباحثون هذه النماذج عبر أربع لغات برمجة مختلفة: بايثون (Python)، وجافا سكريبت (JavaScript)، وروبي (Ruby)، ورست (Rust). واكتشفوا أن الطرق السابقة لقياس هذه الأخطاء كانت معيبة؛ حيث اعتبرت العديد من الدراسات السابقة الأدوات القياسية المدمجة التي تأتي مع لغة برمجة معينة كأنها هلوسات لمجرد أن تلك الأدوات ليست مدرجة في مكتبات الحزم الخارجية. ومن خلال تصحيح خطأ العد هذا، وجد الفريق أن معدل الهلوسة للغة بايثون كان في الواقع أقل مما كان يُعتقد سابقاً، وإن ظل كبيراً.
تضمن جوهر عملهم اختبار سبع استراتيجيات مختلفة لمعرفة ما إذا كان بإمكانها تقليل أسماء الحزم الوهمية التي تولدها النماذج. تضمنت بعض هذه الاستراتيجيات تغيير كيفية اختيار النموذج للكلمة التالية، بينما طلبت استراتيجيات أخرى من النموذج مراجعة عمله أو البحث عن معلومات في قاعدة بيانات موثقة قبل الإجابة. ووجد الباحثون أنه لا توجد طريقة واحدة نجحت بشكل أفضل في كل موقف. وقد ثبت أن تقنية تسمى "التوليد المعزز بالاسترجاع" (Retrieval-Augmented Generation)، والتي تجبر النموذج على استشارة قاعدة بيانات حقيقية للحزم الموجودة قبل التحدث، كانت فعالة للغاية لمعظم اللغات، حيث قللت معدل الخطأ بشكل كبير. ومع ذلك، جعلت هذه التقنية نفسها الأمور تسوء أحياناً بالنسبة للغة جافا سكريبت، مما يشير إلى أن الحل يعتمد بشدة على لغة البرمجة المستخدمة. أما النهج الآخر، حيث يُطلب من النموذج نقد وإعادة كتابة اقتراحاته، فقد نجح جيداً مع النماذج الأكبر، لكنه فشل مع النماذج الأصغر، التي غالباً ما لم تستطع التعرف على أخطائها الخاصة.
كما قدم الفريق طريقة جديدة لقياس ما إذا كانت اقتراحات النموذج مفيدة حقاً، وليس فقط صحيحة. ووجدوا أن بعض الاستراتيجيات التي نجحت في إيقاف الهلوسة أوقفت أيضاً النموذج عن اقتراح أي حزم على الإطلاق، مما ترك المطور دون شيء يستخدمه. وكان النهج الأكثر توازناً، الذي قلل الأخطاء مع الاستمرار في تقديم اقتراحات مفيدة، هو طريقة مباشرة حيث يختار النموذج ببساطة الكلمة التالية الأكثر احتمالاً في كل مرة، بدلاً من المجازفة بخيارات أقل احتمالية. هذا النهج "الجشع" (greedy approach) قدم أفضل مقايضة بين السلامة والفائدة للنماذج التي اختبروها.
ولعل النتيجة الأكثر إثارة للاهتمام ظهرت عندما اختبر الباحثون هذه الدفاعات ضد بيئة معادية. فقد صمموا مطالبات (prompts) تحاول عمداً خداع النماذج عبر تضمين الأسماء الوهمية مباشرة في التعليمات. وتحت هذه الظروف المعادية، ارتفعت معدلات الخطأ بشكل صاروخي، حيث زادت بنسبة تصل إلى 45 نقطة مئوية مقارنة بالطلبات العادية. وفي هذه البيئة العدائية، فشلت تماماً الحيل البسيطة المتمثلة في تغيير كيفية اختيار النموذج للكلمات. فقط الطرق التي اعتمدت على التحقق من قاعدة بيانات حقيقية أو إجبار النموذج على مراجعة عمله بدقة استطاعت مقاومة الهجوم. وخلص الباحثون إلى أنه بينما يمكن للتعديلات البسيطة أن تساعد في الاستخدام العادي، فإن حماية البرمجيات من المهاجمين المصممين تتطلب نظاماً يمكنه التحقق من الحقائق مقابل العالم الخارجي أو فحص منطقه بصرامة. وتبرز الدراسة أن أفضل دفاع ليس حلاً واحداً يناسب الجميع، بل هو اختيار يتوافق بعناً مع التهديد المحدد ولغة البرمجة المعنية.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.