Benchmark · coding
Aider Polyglot
Aider Polyglot هو معيار لتحرير الشيفرة من أداة البرمجة Aider يختبر مدى جودة تحرير نموذج LLM لشيفرة موجودة عبر العديد من لغات البرمجة. النتيجة هي نسبة المهام التي تُنتج تعديلاتُها شيفرة صحيحة تجتاز اختبارات المهمة.
اقرأ المزيد
- مثال
- العنصر النموذجي هو تمرين برمجي على نمط Exercism بإحدى عدة لغات (Python أو Rust أو Go أو Java أو JavaScript أو C++)، حيث يجب على النموذج تحرير ملفات المصدر المقدَّمة لتنفيذ الدالة المطلوبة كي تجتاز اختباراتها.
- طريقة التقييم
- المقياس هو نسبة المهام المحلولة: لا تُحتسب المهمة إلا عندما تجتاز الشيفرة المحرَّرة جميع اختباراتها الآلية. كما يتتبع Aider عدد المرات التي تعود فيها التعديلات بالتنسيق الصحيح القابل للتطبيق.
- التحقق
- تُتحقَّق النتائج آليًا: تُشغَّل الملفات المحرَّرة على مجموعة اختبارات الوحدة لكل تمرين، ولا تنجح المهمة إلا إذا اجتازت جميع الاختبارات — دون تصويت بشري أو مقارنة بالتطابق التام.
- لماذا يهم
- إنه يحاكي سير عمل المطوّر الحقيقي — تحرير ملفات موجودة عبر العديد من اللغات بدلاً من كتابة مقاطع من الصفر — لذا فهو مؤشر عملي على مدى فائدة النموذج كمساعد برمجي.
مثال محلول
المهمة
يأخذ Aider Polyglot تمارين من Exercism عبر 6 لغات: يحصل النموذج على وصف المسألة وملف هيكلي (مثل
acronym.py يحتوي على def abbreviate(words): ...) وعليه تحريره حتى تنجح مجموعة اختبارات pytest المخفية. مثال على الوصف: تحويل عبارة إلى اختصارها الأولي — 'Portable Network Graphics' → 'PNG'، مع اعتبار المسافات والشرطات والشرطات السفلية فواصل وتجاهل بقية علامات الترقيم.الحل
import re
def abbreviate(words):
return "".join(w[0].upper() for w in re.findall(r"[A-Za-z']+", words))
الشرح
يستخرج التعبير النمطي (regex) رموز الكلمات (الأحرف مع الفواصل العليا داخل الكلمة)، ويأخذ الحرف الأول من كل رمز ويحوّله إلى حرف كبير ثم يدمجها، فيصبح 'Portable Network Graphics' → 'PNG'. يشغّل التقييم اختبارات الوحدة المخفية للتمرين، ولا تُحتسب المسألة إلا إذا نجحت كل الاختبارات (يبلّغ aider عن pass@2 على المجموعة كاملة).