شاع استخدام مقياس SWE-bench Verified في الأوساط التقنية كأداة لقياس تطور النماذج في مهام هندسة البرمجيات المستقلة منذ صدوره في أغسطس 2024. وقد وفّر المقياس منذ إطلاقه دلالة واضحة على وتيرة نمو القدرات، ليتحول إلى معيار قياسي ثابت في تقارير إطلاق النماذج الرائدة. كما يعد رصد واستشراف تقدم هذه القدرات ركيزة أساسية في إطار الجاهزية لدى OpenAI. لقد كانت غايتنا الأساسية عند ابتكار هذا المقياس هي حل العقبات التي كانت تكتنف التقييم الأولي، والتي تسببت في جعل بعض المهام ضمن قاعدة بيانات SWE-bench(يفتح في نافذة جديدة) غير قابلة للإنجاز.
عقب الطفرات التي تحققت في بادئ الأمر، خبت وتيرة التطور القياسي في مقياس SWE-bench Verified، إذ لم ترتفع(يفتح في نافذة جديدة) النسبة إلا من 74.9% لتصل إلى 80.9% في غضون الأشهر الستة الأخيرة. ويثير هذا التباطؤ تساؤلًا عما إذا كانت حالات الفشل المتبقية ناتجة عن محدودية إمكانات النماذج، أم أنها مجرد انعكاس لسمات بنيوية في مجموعة البيانات نفسها.
لقد خلصنا من خلال تحليل حديث إلى وجود خللين أساسيين في مجموعة بيانات مقياس Verified، مما يدل على أنه لم يعد صالحًا لرصد التطور في قدرات هندسة البرمجيات المستقلة للإصدارات الرائدة، خاصة عند مقارنتها بمستويات الأداء المحققة اليوم:
- رفض الحلول الصحيحة: أجرينا تدقيقًا على عينة بنسبة 27.6% من مجموعة البيانات (وهي المسائل التي تكرر إخفاق النماذج في حلها)، واكتشفنا أن ما لا يقل عن 59.4% من هذه المسائل المدققة تشوبها حالات اختبار مشوبة بالخلل تؤدي لرفض الحلول الصحيحة من الناحية الوظيفية؛ ويأتي هذا الاكتشاف برغم مساعينا الحثيثة لتلافي مثل هذه العيوب عند إطلاق النسخة المعتمدة (Verified) من مقياس SWE-bench.
- التدريب على الحلول: تميل النماذج الرائدة الكبيرة إلى امتصاص المعلومات من بيانات التدريب، لذا تكمن الأهمية في ضمان عدم تعرضها للمسائل والحلول المخصصة للتقييم. إن هذا الوضع يماثل تسريب أسئلة اختبار مرتقب وإجاباته للطلاب؛ حيث سيتفوق من رأى الإجابات مسبقًا على زملائه حتمًا، حتى وإن لم يعتمد على الذاكرة المجردة. ولأن مسائل SWE-bench مأخوذة من مستودعات برمجية مفتوحة المصدر تُستخدم عادةً في تدريب النماذج، فقد كشف تحليلنا أن جميع النماذج الرائدة الخاضعة للاختبار استطاعت محاكاة الحلول البشرية الأصلية المستخدمة كمعيار للصحة، المعروفة باسم "المعيار الذهبي"، أو إعادة صياغة تفاصيل حرفية لنصوص المسائل في بعض المهام. وهذا يعد دليلًا قويًا على أن هذه النماذج قد مرت ببعض تلك المسائل وحلولها خلال عمليات التدريب.
توصلنا كذلك إلى قرائن تثبت أن النماذج التي تعرضت للمسائل خلال طور التدريب تمتلك فرصًا أكبر لتحقيق النجاح، نظرًا لتوافر معلومات إضافية لديها تُمكّنها من عبور الاختبارات التي تفتقر إلى التحديد الدقيق للمواصفات.
يترتب على ذلك أن التطور المحرز في نتائج مقياس SWE-bench Verified لم يعد يعبر عن تقدم حقيقي في قدرات النماذج لتطوير البرمجيات في السياقات الواقعية. وعوضًا عن ذلك، باتت هذه النتائج تجسد بصورة مطردة درجة اطلاع النموذج على المقياس خلال فترة تدريبه. ومن هذا المنطلق، قررنا الكف عن الإبلاغ عن درجات SWE-bench Verified، كما ننصح زملاءنا من مطوري النماذج الآخرين بتبني النهج ذاته.
نعكف في الوقت الراهن على تطوير اختبارات تقييمية جديدة خالية من تسريب البيانات لرصد قدرات البرمجة بدقة أعلى، ونرى أن هذا التوجه يمثل ركيزة أساسية يجب أن يوليها المجتمع العلمي اهتمامًا خاصًا. وحتى يحين موعد جاهزية تلك الاختبارات، تنصح OpenAI بالاعتماد على نتائج SWE-bench Pro في التقارير الفنية.
تم إطلاق النسخة الأصلية من تقييم SWE-bench(يفتح في نافذة جديدة) في عام 2023، حيث تُستخلص كل مسألة برمجية من مشكلة جرى حلها في GitHub ضمن 12 مستودعًا مفتوح المصدر للغة Python، مع ربطها بطلب السحب المعني بها. وبغرض التحقق من صحة التغييرات البرمجية الناتجة عن النموذج، يرافق كل مسألة مجموعتان من الاختبارات:
- اختبارات تخفق عند تشغيلها على قاعدة الأكواد الأصلية قبل تعديلها، ولكنها تنجح وتجتاز الفحص إذا جرت معالجة المشكلة وإصلاحها بشكل صحيح
- اختبارات التراجع التي تنجح في كلتا الحالتين، قبل الإصلاح وبعده، وذلك لضمان بقاء الوظائف الأخرى غير المتعلقة بالمشكلة سليمة دون أي خلل.
لا يطّلع النموذج على الاختبارات؛ بل يتعين عليه إجراء تعديل في الكود البرمجي استنادًا فحسب إلى النص الأصلي للمشكلة وحالة المستودع البرمجي قبل إجراء الإصلاح. ولا يُعتبر النموذج ناجحًا في حل المسألة إلا في حال اجتياز كافة الاختبارات بنجاح بعد تطبيق تعديل الكود البرمجي المقترح.
وقد رصدنا ثغرات عديدة في نظام التقييم المذكور، من شأنها أن تفضي إلى عدم إظهار كفاءة قدرات النماذج بدقة أو إظهارها بصورة أقل من حقيقتها الواقعية.
- تبين أن بعض اختبارات الوحدة كانت شديدة التقييد أو تفتقر إلى الاتساق مع جوهر المهمة، الأمر الذي تسبب في رفض حلول برمجية صحيحة.
- جاءت صياغة العديد من المهام غير مكتملة المواصفات، مما سمح بوجود عدة تأويلات صحيحة للمسألة، بينما اقتصرت الاختبارات البرمجية على التحقق من تأويل واحد فقط.
- تبعًا لطريقة إعداد بيئة التشغيل (مثل الفوارق بين نظامي Linux وWindows أو إصدار لغة Python)، كانت بعض الاختبارات عرضة للفشل العارض وغير الحقيقي.
بهدف تلافي العيوب السابقة، استحدثنا مقياس SWE-bench Verified في عام 2024، حيث استعنا بنخبة من مهندسي البرمجيات المتخصصين لتدقيق 1,699 مسألة برمجية وتصفية المسائل التي عانت من تلك الثغرات. وقد فحص ثلاثة خبراء كل مسألة بصورة منفردة، مما أدى في النهاية إلى خروج SWE-bench Verified للنور كمجموعة بيانات مصطفاة تحتوي على 500 مسألة عالية الجودة.
على الرغم من النقلة النوعية التي حققها مقياس SWE-bench Verified مقارنة بالإصدار الأول، إلا أن ثمة رواسب من المشكلات التقنية ظلت عالقة. ومن هذا المنطلق، باشرنا عملية فحص لـ 138 مسألة ضمن هذا المقياس، وهي المسائل التي لم يتمكن نموذج OpenAI o3 من تقديم حل مطرد لها خلال 64 محاولة تشغيل منفصلة. وقد تولى مراجعة كل حالة، وبصورة مستقلة، ما لا يقل عن ستة من مهندسي البرمجيات المتمرسين، مع إحالة أي مسألة يرصد فيها الخبير مشكلة إلى فريق فني آخر لإعادة التوثق منها.
كشف تحليلنا أن 59.4% من المسائل الـ 138 تشوبها عيوب ملموسة في بنية الاختبارات أو في وصف المسائل البرمجية، وهو ما جعل من عملية حلها مهمة شاقة للغاية أو مستحيلة، حتى عند الاستعانة بأكثر النماذج تطورًا أو بالخبراء البشر.
- تبين أن 35.5% من المهام المفحوصة تعتمد حالات اختبار شديدة التقييد تُلزم النموذج باتباع جزئيات تنفيذية معينة، الأمر الذي يترتب عليه إبطال العديد من المساهمات البرمجية السليمة وظيفيًا؛ ونسمي هذا النمط 'حالات الاختبار الضيقة'.
- سجلت 18.8% من المهام وجود اختبارات تفحص مزايا برمجية إضافية لم ترد في التوصيف الأساسي للمسألة، وهو ما اصطلحنا على تسميته 'حالات الاختبار الفضفاضة'.
- في حين عانت نسبة 5.1% المتبقية من مشكلات متفرقة لم تكن متوافقة تمامًا مع معايير هذا التصنيف التقني.
تعتبر الحالة pylint-dev__pylint-4551(يفتح في نافذة جديدة) مثالًا شارحًا لنمط الفشل الأولى، إذ يتضمن طلب السحب دالة مبتكرة تُدعى `get_annotation` ضمن الحل المتكامل. ورغم خلو توصيف المسألة من أي إشارة لاسم هذه الدالة، فإن الاختبارات تعتمد عليها عبر الاستيراد المباشر. ورغم احتمالية أن تتنبأ بعض النماذج تلقائيًا بإنشاء دالة كهذه، فإن معالجة المشكلة بدقة لا تتطلب بالضرورة تنفيذ دالة بهذا الاسم الحرفي؛ الأمر الذي يترتب عليه فشل الكثير من الحلول الوجيهة في اجتياز الاختبارات نتيجة لوقوع أخطاء في الاستيراد.
وصف المسألة
مقتطف من اختبار طلب السحب
إخفاقات اختبارات طلبات السحب (مقتطعة لسهولة القراءة)
تعتبر الحالة sympy__sympy-18199(يفتح في نافذة جديدة) مثالًا على حالات الاختبار الفضفاضة. فقد أُخذت هذه المهمة من طلب سحب كان يستهدف معالجة ثلاث ثغرات منفصلة في الدالة `nthroot_mod` (تحديدًا المشكلات 17373#(يفتح في نافذة جديدة) و17377#(يفتح في نافذة جديدة) و18212#(يفتح في نافذة جديدة)). غير أن الوصف المقدم للمهمة ضمن مقياس SWE-bench Verified لا يتناول سوى المشكلة الأخيرة 18212#(يفتح في نافذة جديدة). ويؤدي هذا إلى تضارب واضح: فاختبارات طلب السحب تشمل الإصلاحات الثلاثة معًا، في حين يسرد التوصيف تفاصيل إصلاح واحد فقط. وخلال تجاربنا، نجد أن النماذج تنجح غالبًا في تطبيق الإصلاح المطلوب، لكنها تتعثر في الاختبارات التي تفحص الجوانب المتعلقة بالمشكلتين غير المذكورتين.
وصف طلب السحب الأصلي (من GitHub PR)
وصف المشكلة 18212#
وصف المسألة لمهمة SWE-bench Verified (مأخوذ فقط من #18212):
"نظراً لأن SWE-bench Verified والمستودعات المرتبطة به (بما تتضمنه من قواعد برمجية وملاحظات إصدار) تندرج ضمن المصادر المفتوحة شائعة الاستخدام والتداول، فإن ذلك يضع مطوري النماذج أمام تحدٍ كبير في تفادي تلوث بيانات التدريب.
وقد بدأنا في ملاحظة بوادر هذا التلوث في نماذجنا؛ حيث تمكن نموذج GPT‑5.2 من اجتياز 31 مهمة كنا قد حددنا استحالة حلها تقريبًا. وفي المسألة المتعلقة بـ django__django-14725(يفتح في نافذة جديدة) تشترط الاختبارات استخدام مُعامل جديد ومحدد يُدعى `edit_only` رغم غياب أي نص صريح يوجب ذلك في بيان المسألة. وخلال محاولة الحل، كشف نموذج GPT‑5.2 عما يدور في سلسلة أفكاره، مبينًا اطلاعه على ملاحظات الإصدار التي تشرح التعديلات البرمجية، بل وحدد بدقة أن المُعامل `edit_only` قد جرى تقديمه لأول مرة في إصدار Django 4.1.
تسلسل التفكير لنموذج GPT‑5.2
ولتقييم مدى خطورة تلوث البيانات بشكل أوسع، أنشأنا اختبار تقييم مخاطر آليًا؛ حيث كلفنا نموذج GPT‑5 بمهمة فحص واستقصاء كل من GPT‑5.2‑Chat وClaude Opus 4.5 وGemini 3 Flash Preview بحثًا عن مؤشرات على تلوث البيانات في كل سؤال من أسئلة SWE-bench Verified. وقد تم اختيار هذه النماذج تحديدًا لاستبعاد نماذج الاستدلال، مع إقرارنا بوجود فجوة ملموسة وغير ضئيلة في القدرات فيما بينها.
وللكشف عن تلوث البيانات، تم تزويد GPT‑5 بمعرف المهمة ووصفها والمعيار الذهبي واختبارات طلب السحب المعنية. وخلال 15 جولة، أُتيح لنموذج GPT‑5 تغيير صيغ مطالبات المطور والمستخدم، واستخدام تقنية التعبئة المسبقة لرد المساعد، واتباع أساليب استنطاق متنوعة. وعقب كل جولة، تولى نموذج تقييم تحديد حجم المعلومات المستجدة والمتعلقة بالمهمة، وصُنفت شدة التلوث في كل رد من 'لا يوجد' إلى 'تلوث شديد'. كما مُنح نموذج GPT‑5 القدرة على تعديل منهجيته استنادًا إلى نتائج الجولات السابقة لاسترداد التفاصيل الدقيقة للمهمة بصورة تراكمية. وفي حالات التلوث الشديد، جرى التوثق عبر نموذج تقييم إضافي لضمان عدم قيام نموذج GPT‑5 بتسريب معلومات جوهرية للنموذج الخاضع للاختبار، ليتْبَع ذلك مراجعة بشرية لحالات 'التلوث الشديد' التي نُشرت محاضرها هنا.
فيما يلي أمثلة على التلوث الشديد عبر مزوّدي نماذج مختلفة.
عند تزويده بفقرة موجزة من وصف المهمة، يخرج نموذج GPT‑5.2 مخرجات تطابق المعيار الذهبي حرفيًا. ويتجلى ذلك بوضوح في معرفته بالأسماء المحددة للفئة والدالة، فضلًا عن شرط العودة المسبقة الجديد `if username is None or password is None` الذي تم إدراجه في الكود.
معرّف المهمة: django__django-11451(يفتح في نافذة جديدة)
استنباط تلوث البيانات
المعيار الذهبي
يستطيع نموذج Opus استحضار التغيير الوظيفي الدقيق ذي الأسطر الأربعة الذي أُدخل عبر طلب السحب، مع تحديد اسم الملف والمنهج البرمجي المعني، بل ويتجاوز ذلك ليقتبس لفظيًا التعليق المضمن الذي ورد ضمن ملف مقارنة التعديلات (الفروقات).
معرّف المهمة: astropy__astropy-13236(يفتح في نافذة جديدة)
استنباط تلوث البيانات
المعيار الذهبي
بمجرد توفر معرف المهمة فقط، يُظهر نموذج Gemini 3 Flash قدرة على استرجاع تفاصيل لفظية مطابقة للنص من كل من وصف المهمة والمعيار الذهبي. وتشمل هذه البيانات صيغة regex الجديدة المستحدثة لتدقيق أسماء المستخدمين، مع تحديد أرقام الأسطر الفعلية التي أُجري عليها التغيير البرمجي بكل دقة.
معرّف المهمة: django__django-11099(يفتح في نافذة جديدة)
استنباط تلوث البيانات
المعيار الذهبي
يسلط هذا الفحص الشامل لمقياس SWE-bench Verified الضوء على درسين جوهريين في هندسة التقييم. الأول هو أن المقاييس المستقاة من مصادر عامة تظل عرضة لمخاطر تلوث البيانات، حيث يتسبب انكشاف النماذج على بيانات التدريب في رفع النتائج صوريًا وبصمت. وفي حال الاعتماد على بيانات تم جمعها من الويب في تشييد هذه المقاييس، يتحتم على مطوري النماذج تنفيذ فحوصات إضافية لتلوث البيانات. فالمقاييس المرجعية وحلولها المدرجة في الفضاء العام غالبًا ما تتسرب إلى بيانات التدريب؛ مما يستدعي عناية فائقة في أسلوب نشر مجموعات البيانات (كاستخدام الحماية بكلمة مرور) وفي آليات تنقية بيانات التدريب (مثل الامتثال الحرفي لوسوم سلاسل Canary).
يتمثل الدرس الثاني في أن الوصول لآلية تقييم آلي دقيقة هو أمر محفوف بالتحديات؛ إذ ينبغي لحالات الاختبار النموذجية أن توثق سلامة الوظائف البرمجية بالكامل، مع اتصافها بالحياد تجاه جزئيات التنفيذ الثانوية، والحصانة ضد الحلول المختصرة. وبما أن هذه المشكلات متأصلة في التعقيد ويصعب تلافيها، فقد تطلب الكشف عنها تنفيذ حملات مراجعة وتصنيف بشرية واسعة النطاق وعلى مراحل متعددة.
لقد دمجنا هذه الاستنتاجات ضمن مساعينا الأخيرة في عمليات التقييم، حيث اعتمدنا في الأشهر الأخيرة الإعلان عن نتائج القسم المتاح للجمهور من مقياس SWE-bench Pro، كما نحث مطوري النماذج الآخرين على اتباع هذا النهج. ومع أن SWE-bench Pro لا يخلو من العيوب، إلا أن المؤشرات العملية تشير إلى تراجع حدة مشكلات تلوث البيانات فيه. وبالفعل، كشف مسار فحص تلوث البيانات لدينا عن بعض الحالات، إلا أنها كانت أقل تكرارًا وأقل جسامة بمراحل من تلك الموجودة في SWE-bench Verified، كما لم يستطع أي نموذج استحضار المعيار الذهبي حرفيًا وبشكل كامل.
وسوف نمضي قدمًا في تخصيص الموارد لابتكار مقاييس مرجعية حصرية ومعدة خصيصًا، مع دعوة المجتمع التقني والبحثي للمشاركة في هذا المسعى. وتعتمد منهجية GDPVal على صياغة المهام من قِبل خبراء متمرسين بعيدًا عن الفضاء العام لتلافي مخاطر تلوث البيانات، كما تُمنح الدرجات للحلول بناءً على نظرة شمولية من مراجعين مختصين. ورغم الكلفة العالية لهذا النهج من حيث الموارد، إلا أن أهميته تتضاعف كونه السبيل الوحيد لرصد القفزات الحقيقية في كفاءة الاستدلال.


