LLM Code Smells: A Taxonomy and Detection Approach
تقدم هذه الورقة تصنيفاً منقحاً لتسعة من "روائح الكود" (code smells) الخاصة بالنماذج اللغوية الكبيرة، وتُقدم أداة SpecDetect4LLM، وهي أداة تحليل سكوني تُظهر دقة واستدعاءً عاليين في اكتشاف مشكلات التكامل هذه عبر 73.5% من أصل 692 مشروعاً مفتوح المصدر تم تحليلها.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك تقوم ببناء منزل، ولكن بدلاً من استئجار مهندس معماري بشري، أنت تستأجر روبوتًا ذكيًا للغاية، وسريعًا بشكل مذهل، ولكنه غير متوقع قليلًا لمساعدتك في تصميم الغرف واختيار الأثاث. هذا الروبوت هو نموذج لغوي كبير (LLM). إنه مذهل، ولكن إذا لم تعطه تعليمات واضحة أو تراجع عمله، فقد يبني بابًا حيث يجب أن تكون نافذة، أو يستخدم مواد تتفكك تحت المطر.
تتحدث هذه الورقة البحثية عن "العادات السيئة" (أو "روائح الكود" - code smells) التي تحدث عندما يحاول المطورون البشر استخدام هذه الروبوتات داخل برمجياتهم. وجد الباحثون أنه تمامًا كما يمكن للمطبخ الفوضوي أن يؤدي إلى طعام محترق، فإن الكود الفوضوي عند التحدث مع الذكاء الاصطناعي قد يؤدي إلى برامج تنهار، أو تكلف الكثير من المال، أو تعطي إجابات خاطئة.
إليك تفصيل لنتائجهم باستخدام تشبيهات بسيطة:
1. المشكلة: "عادات الروبوت السيئة"
حدد الباحثون 9 عادات سيئة محددة يرتكبها المطورون عند التحدث مع هذه الروبوتات الذكية. وقد قاموا بتجميعها في ثلاث فئات، مثل فرز الأدوات في صندوق أدوات:
العادات "الهيكلية" (كيف تطرح السؤال):
- التشبيه: تخيل أنك تسأل طباخًا: "اصنع لي عشاءً"، دون أن تخبره إذا كنت تريده نباتيًا، أو حارًا، أو إذا كان لديك حساسية من المكسرات.
- الرائحة: غياب رسالة النظام (No System Message). غالبًا ما ينسى المطورون إعطاء الذكاء الاصطناعي "وصفًا وظيفيًا" (رسالة نظام) يخبره من يفترض به أن يكون (مثل: "أنت معلم رياضيات متعاون"). بدون ذلك، يتصرف الروبوت كبوت دردشة عام بدلاً من متخصص.
- الرائحة: النداءات المجهولة (Anonymous Calls). تخيل أنك تتصل بمطعم ولكنك لا تعطي اسمك. إذا كان الطعام سيئًا، فلن يعرف المطعم بمن يتصل لاحقًا. غالبًا ما ينسى المطورون إرفاق "معرف مستخدم" (user ID) بطلب الذكاء الاصطناعي، مما يجعل من المستحيل تتبع من تسبب في المشكلة لاحقًا.
عادات "البيانات" (ما ترسله وما تستقبله):
- التشبيه: تطلب من الروبوت فرز بريدك، لكنك ترسل له صندوقًا ضخمًا من البريد العشوائي غير المفتوح بدلاً من الرسائل فقط.
- الرائحة: غياب المخرجات المهيكلة (No Structured Output). تطلب من الذكاء الاصطناعي قائمة بالمكونات بتنسيق معين (مثل قائمة JSON)، لكنك لا تجبره على اتباع ذلك التنسيق. قد يعطيك فقرة نصية بدلاً من ذلك. عندها يحاول برنامجك قراءة تلك الفقرة كأنها قائمة، مما يؤدي إلى انهياره.
- الرائحة: حمولة الرؤية الخام (Raw Vision Payload). إذا طلبت من الذكاء الاصطناعي النظر إلى صورة لخطأ (bug) في الكود الخاص بك، فإن إرسال لقطة شاشة كاملة بدقة 4K لشاشتك هو أمر هدِر. الأمر يشبه إرسال مكتبة كاملة عبر البريد لتسأل عن كتاب واحد فقط. يجب عليك قص الصورة لتشمل الخطأ فقط قبل الإرسال.
عادات "البروتوكول" (قواعد اللعبة):
- التشبيه: قيادة سيارة دون تحديد حد للسرعة أو التحقق من نوع السيارة التي تقودها، بافتراض أنها ستظل دائمًا كما هي.
- الرائلة: عدم تثبيت إصدار النموذج (No Model Version Pinning). أنت تخبر الروبوت: "استخدم نموذج GPT-4". لكن الشركة قد تقوم بتحديث "GPT-4" غدًا ليصبح روبوتًا مختلفًا تمامًا. سيتعطل الكود الخاص بك لأن الروبوت قد تغيرت شخصيته. يجب عليك تثبيت الإصدار (مثل "GPT-4 من نوفمبر 2024").
- الرائحة: المقاييس القصوى غير المحدودة (Unbounded Max Metrics). تطلب من الروبوت كتابة قصة، لكنك لا تخبره أن يتوقف بعد 500 كلمة. قد يستمر في الكتابة للأبد، مما يستهلك كل أموالك ووقتك.
- الرائحة: عدم ضبط درجة الحرارة (Temperature Not Set). هذا يتحكم في مدى "إبداع" أو "عشوائية" الروبوت. إذا لم تضبطها، فسيستخدم الروبوت إعدادًا افتراضيًا قد يتغير غدًا، مما يجعل برنامجك يتصرف بشكل مختلف في أيام مختلفة.
2. الحل: "كلب الشم" (SpecDetect4LLM)
قام الباحثون ببناء أداة تسمى SpecDetect4LLM. فكر في هذا كـ كلب شم يسير عبر الكود الخاص بك.
- هو لا يقوم بتشغيل الكود؛ بل ينظر فقط إلى التعليمات (التحليل الساكن - static analysis).
- يشم حوله ليرى ما إذا كنت قد ارتكبت أيًا من تلك العادات التسعة السيئة.
- إذا وجد عادة سيئة، فإنه ينبح (يضع علامة) حتى يتمكن المطور من إصلاحها قبل إطلاق البرنامج.
3. النتائج: ما مدى جودة الكلب؟
اختبر الباحثون "كلب الشم" هذا على 692 مشروع برمجيات مختلفًا (أكثر من 171,000 ملف كود). إليكم ما وجدوه:
كم مرة تحدث هذه العادات السيئة؟
- 73.5% من المشاريع كانت تحتوي على واحدة على الأقل من هذه العادات السيئة. الأمر يشبه دخول منزل واكتشاف أن 3 من كل 4 منازل بها صنبور يسرب الماء. إنه أمر شائع جدًا.
- كانت العادة الأكثر شيوعًا هي عدم تثبيت إصدار النموذج (استخدام اسم عام بدلاً من اسم محدد).
ما مدى جودة كلب الشم في العثور عليها؟
- الدقة (Precision): عندما ينبح الكلب، فإنه يكون محقًا بنسبة 91.3% من الوقت. نادرًا ما يطلق إنذارات كاذبة.
- الاستدعاء/الشمولية (Recall): يجد الكلب حوالي 71.8% من العادات السيئة الفعلية. قد يفوته بعضها، لكنه يمسك بالأغلبية.
4. لماذا يهم هذا الأمر؟
تجادل الورقة البحثية بأنه بينما قد لا تسبب هذه العادات السيئة انهيار البرنامج فورًا، إلا أنها مثل الصدأ على السيارة.
- تجعل السيارة أصعب في الإصلاح لاحقًا (القابلية للصيانة - Maintainability).
- تجعل السيارة تعمل ببطء أكثر أو تستهلك وقودًا أكثر (الأداء - Performance).
- تجعل السيارة تتصرف بشكل غير متوقع في الأيام الممطرة (الموثوقية - Reliability).
- تجعل السيارة غير آمنة إذا تغيرت ظروف الطريق (المتانة - Robustness).
الملخص
أنشأ الباحثون "قائمة" تضم 9 أخطاء شائعة يرتكبها المطورون عند استخدام الذكاء الاصطناعي، وبنوا أداة للعثور على هذه الأخطاء تلقائيًا، وأثبتوا أن هذه الأخطاء منتشرة في عالم البرمجيات. أداتهم جيدة جدًا في رصدها، مما يساعد المطورين على بناء برمجيات أكثر أمانًا، وأقل تكلفة، وأكثر موثوقية عندما تستخدم الذكاء الاصطناي.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.