Benchmark · agentic
SWE-rebench
SWE-rebench هو نسخة محدَّثة باستمرار من معيار البرمجة SWE-bench، يأخذ مهامه من issues حديثة على GitHub لتقليل احتمال أن يكون النموذج قد رآها أثناء التدريب. ويُبلّغ عن نسبة مهام هندسة البرمجيات التي يحلّها النموذج (% resolved).
اقرأ المزيد
- مثال
- تعطي المهمة النموذجية النموذجَ تقرير خطأ حقيقيًا أو طلب ميزة من مستودع على GitHub، وعليه أن يعدّل شيفرة المشروع لحل تلك المشكلة.
- طريقة التقييم
- المقياس هو % resolved: عدد المهام التي يصلحها النموذج مقسومًا على العدد الإجمالي للمهام، معبَّرًا عنه كنسبة مئوية.
- التحقق
- يُقبل الحل تلقائيًا عندما تنجح مجموعة اختبارات المستودع نفسها على الشيفرة بعد التصحيح — يجب أن يجعل الإصلاح الاختبارات الفاشلة تنجح دون كسر البقية.
- لماذا يهم
- لأن مهامه تُجدَّد من issues حديثة، فإنه يقدّم قياسًا أنظف لمهارة البرمجة الحقيقية، يصعب تضخيمه عن طريق حفظ بيانات معايير قديمة ومنشورة.
مثال محلول
المهمة
نسخة SWE-rebench مبنية من مستودع Python حقيقي على GitHub (
python-slugify)، مثبَّتة على commit أساسي. المشكلة: تُرجِع slugify('Hello, World!') القيمة 'hello--world' — الفواصل المتتالية تُنتج شرطتين بدلاً من واحدة، بينما الـ slug المتوقَّع هو 'hello-world'. المطلوب تسليمه: رقعة git-diff على لقطة المستودع تجعل اختبار FAIL_TO_PASS ينجح مع إبقاء جميع اختبارات PASS_TO_PASS خضراء.الحل
--- a/slugify/slugify.py
+++ b/slugify/slugify.py
@@ def slugify(text):
text = re.sub(r"[^\w\s-]", "", text).strip().lower()
- return re.sub(r"[\s]+", "-", text)
+ text = re.sub(r"[\s]+", "-", text)
+ return re.sub(r"-{2,}", "-", text)
الشرح
يقوم مُولِّد الـ slug بدمج المسافات إلى
- لكنه لا يزيل الشرطات المكررة، فتتسرَّب عدة فواصل؛ وإضافة re.sub(r'-{2,}', '-', text) تُوحِّدها إلى - واحدة. يقيّم SWE-rebench بالتنفيذ: يطبّق الرقعة داخل حاوية المستودع ولا يعتبر النسخة محلولة إلا إذا نجح اختبار FAIL_TO_PASS الآن وظلّت جميع اختبارات PASS_TO_PASS ناجحة (لوحة الصدارة = نسبة المحلولة %).