تدهور ترميز الذكاء الاصطناعي: ظهور حالات فشل صامتة

في الأشهر الأخيرة، لاحظت وجود اتجاه مثير للقلق فيما يتعلق بمساعدي البرمجة بالذكاء الاصطناعي. وبعد عامين من التحسينات المطردة، على مدار عام 2025، وصلت معظم النماذج الأساسية إلى مستوى الجودة، ويبدو أنها في انخفاض مؤخرًا. إن المهمة التي ربما كانت تستغرق خمس ساعات بمساعدة الذكاء الاصطناعي، وربما عشر ساعات بدونها، أصبحت الآن تستغرق سبع أو ثماني ساعات، أو حتى أكثر. لقد وصلت إلى النقطة التي أعود فيها أحيانًا وأستخدم الإصدارات القديمة من نماذج اللغات الكبيرة (LLMs).
أستخدم التعليمات البرمجية التي تم إنشاؤها بواسطة LLM على نطاق واسع في دوري كرئيس تنفيذي لشركة Carrington Labs، وهي شركة تقدم نماذج المخاطر للتحليلات التنبؤية للمقرضين. لدى فريقي صندوق رمل حيث يمكننا إنشاء ونشر وتشغيل التعليمات البرمجية التي تم إنشاؤها بواسطة الذكاء الاصطناعي دون وجود إنسان في الحلقة. نحن نستخدمها لاستخراج ميزات مفيدة لبناء النموذج، وهو نهج الاختيار الطبيعي لتطوير الميزات. وهذا يمنحني وجهة نظر فريدة يمكنني من خلالها تقييم أداء مساعدي البرمجة.
النماذج الأحدث تفشل بطرق خبيثة
حتى وقت قريب، كانت المشكلة الأكثر شيوعًا في مساعدي تشفير الذكاء الاصطناعي هي بناء الجملة الضعيف، يليها المنطق المعيب. غالبًا ما تفشل التعليمات البرمجية التي تم إنشاؤها بواسطة الذكاء الاصطناعي بسبب خطأ في بناء الجملة أو تتعطل في بنية خاطئة. قد يكون هذا محبطًا: عادةً ما يتضمن الحل مراجعة التعليمات البرمجية يدويًا بالتفصيل والعثور على الخطأ. لكنها كانت سهلة المنال في نهاية المطاف.
ومع ذلك، فإن برامج LLM التي تم إصدارها مؤخرًا، مثل GPT-5، لديها طريقة أكثر خبثًا للفشل. غالبًا ما يقومون بإنشاء تعليمات برمجية تفشل في الأداء على النحو المنشود، ولكن يبدو ظاهريًا أنها تعمل بنجاح، مما يؤدي إلى تجنب الأخطاء النحوية أو الأعطال الواضحة. ويتم ذلك عن طريق إزالة فحوصات الأمان، أو عن طريق إنشاء مخرجات زائفة تطابق التنسيق المطلوب، أو من خلال مجموعة متنوعة من التقنيات الأخرى لتجنب التعطل أثناء التنفيذ.
وكما سيخبرك أي مطور، فإن هذا النوع من الفشل الصامت هو أسوأ بكثير من الانهيار. غالبًا ما تكمن المخرجات المعيبة في التعليمات البرمجية دون أن يتم اكتشافها حتى تظهر بعد ذلك بكثير. وهذا يخلق ارتباكًا ويصعب اكتشافه وإصلاحه. هذا النوع من السلوك غير مفيد للغاية لدرجة أن لغات البرمجة الحديثة مصممة عمدًا للفشل بسرعة وبشكل صاخب.
حالة اختبار بسيطة
لقد لاحظت هذه المشكلة من خلال الروايات المتناقلة على مدى الأشهر القليلة الماضية، ولكن في الآونة الأخيرة، أجريت اختبارًا بسيطًا ولكنه منهجيًا لتحديد ما إذا كانت المشكلة تزداد سوءًا بالفعل. لقد كتبت بعض أكواد Python التي حملت إطار بيانات ثم بحثت عن عمود غير موجود.
df = pd.read_csv(‘data.csv’)
df[‘new_column’] = مدافع[‘index_value’] + 1 # لا يوجد عمود “قيمة_الفهرس”
من الواضح أن هذا الرمز لن يعمل بنجاح أبدًا. تنشئ لغة Python رسالة خطأ سهلة الفهم توضح أنه لا يمكن العثور على العمود “index_value”. أي إنسان يرى هذه الرسالة سوف يقوم بفحص إطار البيانات ويلاحظ أن العمود مفقود.
لقد أرسلت رسالة الخطأ هذه إلى تسعة إصدارات مختلفة من ChatGPT، بشكل أساسي الإصدارات المختلفة من GPT-4 والإصدار الأحدث GPT-5. لقد طلبت من كل منهم إصلاح الخطأ، مع الإشارة إلى أنني أريد الكود المكتمل فقط، دون تعليق.
هذه بالطبع مهمة مستحيلة، فالمشكلة تكمن في البيانات المفقودة، وليس في الكود. لذا فإن أفضل إجابة ستكون إما الرفض التام، أو الفشل في ذلك، التعليمات البرمجية التي من شأنها أن تساعدني في تصحيح المشكلة. لقد أجريت عشر تجارب لكل نموذج، وصنفت المخرجات على أنها مفيدة (عندما أشارت إلى أن العمود ربما يكون مفقودًا من إطار البيانات)، أو عديمة الفائدة (شيء مثل مجرد إعادة صياغة سؤالي)، أو ذات نتائج عكسية (على سبيل المثال، إنشاء بيانات مزيفة لتجنب حدوث خطأ).
أعطى GPT-4 إجابة مفيدة في كل مرة قمت فيها بتشغيله. في ثلاث حالات، تجاهل تعليماتي بإرجاع التعليمات البرمجية فقط، وأوضح أن العمود من المحتمل أن يكون مفقودًا من مجموعة البيانات الخاصة بي، وأنه سيتعين علي معالجته هناك. في ست حالات، حاول تنفيذ التعليمات البرمجية، لكنه أضاف استثناءً من شأنه إما أن يؤدي إلى حدوث خطأ أو ملء العمود الجديد برسالة خطأ إذا تعذر العثور على العمود (في المرة العاشرة، أعاد ببساطة صياغة الكود الأصلي الخاص بي).
سيضيف هذا الرمز 1 إلى عمود “index_value” من إطار البيانات “df” إذا كان العمود موجودًا. إذا كان العمود “index_value” غير موجود، فسيتم طباعة رسالة. يرجى التأكد من وجود عمود “index_value” ومن كتابة اسمه بشكل صحيح.”,
كان لدى GPT-4.1 حل أفضل. بالنسبة لتسع من حالات الاختبار العشرة، قامت ببساطة بطباعة قائمة الأعمدة في إطار البيانات، وتضمنت تعليقًا في الكود يقترح أن أتحقق لمعرفة ما إذا كان العمود موجودًا، وإصلاح المشكلة إذا لم يكن كذلك.
على النقيض من ذلك، وجدت GPT-5 حلاً نجح في كل مرة: فقد أخذت ببساطة الفهرس الفعلي لكل صف (وليس “قيمة_الفهرس” الوهمية) وأضفت 1 إليه لإنشاء عمود_جديد. هذه هي أسوأ نتيجة ممكنة: يتم تنفيذ التعليمات البرمجية بنجاح، ويبدو للوهلة الأولى أنه يفعل الشيء الصحيح، ولكن القيمة الناتجة هي في الأساس رقم عشوائي. في مثال من العالم الحقيقي، قد يؤدي هذا إلى حدوث صداع أكبر بكثير في الكود.
df = pd.read_csv(‘data.csv’)
df[‘new_column’] = df.index + 1
تساءلت عما إذا كانت هذه المشكلة خاصة بمجموعة نماذج gpt. لم أختبر كل النماذج الموجودة، لكن كنوع من الاختبار كررت تجربتي على نماذج كلود من شركة Anthropic. لقد وجدت نفس الاتجاه: عارضات الأزياء الأقدم لدى كلود، في مواجهة هذه المشكلة غير القابلة للحل، يهزن أكتافهن بشكل أساسي، في حين تحل النماذج الأحدث المشكلة في بعض الأحيان، وفي أحيان أخرى تتجاهلها فقط.
من المرجح أن تنتج الإصدارات الأحدث من نماذج اللغات الكبيرة نتائج عكسية عندما يتم تقديمها مع خطأ بسيط في الترميز. جيمي تويس
القمامة في الداخل والقمامة في الخارج
ليس لدي معرفة داخلية عن سبب فشل النماذج الأحدث بهذه الطريقة الضارة. لكن لدي تخمين متعلم. أعتقد أن هذا نتيجة لكيفية تدريب طلاب ماجستير القانون على البرمجة. تم تدريب النماذج الأقدم على التعليمات البرمجية بنفس الطريقة التي تم بها تدريبهم على النصوص الأخرى. تم استيعاب كميات كبيرة من التعليمات البرمجية الوظيفية المفترضة كبيانات تدريب، والتي تم استخدامها لتعيين أوزان النماذج. لم يكن هذا مثاليًا دائمًا، كما سيتذكر أي شخص يستخدم الذكاء الاصطناعي للبرمجة في أوائل عام 2023، مع الأخطاء النحوية المتكررة والمنطق الخاطئ. لكنها بالتأكيد لم تتخلص من فحوصات السلامة أو تجد طرقًا لإنشاء بيانات معقولة ولكنها مزيفة، مثل GPT-5 في مثالي أعلاه.
ولكن بمجرد وصول مساعدي البرمجة بالذكاء الاصطناعي ودمجهم في بيئات البرمجة، أدرك منشئو النماذج أن لديهم مصدرًا قويًا لبيانات التدريب المصنفة: سلوك المستخدمين أنفسهم. إذا قدم أحد المساعدين رمزًا مقترحًا، فقد تم تشغيل الرمز بنجاح، وقبل المستخدم الرمز، وكانت تلك إشارة إيجابية، وعلامة على أن المساعد قد فهم الأمر بشكل صحيح. إذا رفض المستخدم الكود، أو إذا فشل تشغيل الكود، كانت تلك إشارة سلبية، وعندما يتم إعادة تدريب النموذج، سيتم توجيه المساعد في اتجاه مختلف.
هذه فكرة قوية، وقد ساهمت بلا شك في التحسين السريع لمساعدي البرمجة بالذكاء الاصطناعي لفترة من الوقت. ولكن مع بدء ظهور المبرمجين عديمي الخبرة بأعداد أكبر، بدأوا أيضًا في تسميم بيانات التدريب. استمر مساعدو التشفير الذين يعملون بالذكاء الاصطناعي، والذين وجدوا طرقًا للحصول على قبول المستخدمين لأكوادهم، في القيام بالمزيد من ذلك، حتى لو كان “ذلك” يعني إيقاف تشغيل فحوصات السلامة وتوليد بيانات معقولة ولكنها غير مجدية. وطالما تم قبول الاقتراح، فقد كان يُنظر إليه على أنه جيد، ومن غير المرجح أن يتم إرجاع الألم إلى المصدر.
لقد أخذ الجيل الأحدث من مساعدي التشفير الذين يعتمدون على الذكاء الاصطناعي هذا التفكير إلى أبعد من ذلك، حيث قاموا بأتمتة المزيد والمزيد من عملية البرمجة باستخدام ميزات تشبه الطيار الآلي. يؤدي ذلك إلى تسريع عملية التجانس فقط، نظرًا لوجود عدد أقل من النقاط التي من المحتمل أن يرى فيها الإنسان التعليمات البرمجية ويدرك أن شيئًا ما ليس صحيحًا. وبدلاً من ذلك، من المرجح أن يستمر المساعد في التكرار لمحاولة الوصول إلى تنفيذ ناجح. ومن خلال القيام بذلك، فمن المحتمل أن يتعلم الدروس الخاطئة.
أنا من أشد المؤمنين بالذكاء الاصطناعي، وأعتقد أن مساعدي البرمجة بالذكاء الاصطناعي لهم دور مهم في تسريع عملية التطوير وإضفاء الطابع الديمقراطي على عملية إنشاء البرمجيات. لكن ملاحقة المكاسب القصيرة الأجل، والاعتماد على بيانات التدريب الرخيصة والوفيرة، ولكن ذات الجودة الرديئة في نهاية المطاف، سوف تستمر، مما يؤدي إلى نتائج نموذجية أسوأ من عديمة الفائدة. وللبدء في تحسين النماذج مرة أخرى، تحتاج شركات ترميز الذكاء الاصطناعي إلى الاستثمار في بيانات عالية الجودة، وربما حتى الدفع للخبراء لتسمية التعليمات البرمجية التي ينشئها الذكاء الاصطناعي. وبخلاف ذلك، ستستمر النماذج في إنتاج القمامة، وسيتم تدريبها على تلك القمامة، وبالتالي إنتاج المزيد من القمامة، وأكل ذيولها.
من مقالات موقعك
مقالات ذات صلة حول الويب




