كيف يعمل MakoBench: شرح لمعيار تقييم النماذج اللغوية المفتوحة
- تاريخ النشر
- 5 نوفمبر 2026
- تاريخ التحديث
- 8 نوفمبر 2026
- بقلم
- جاكوب لويد — كُتب بمساعدة الذكاء الاصطناعي بعد إنجاز المشروع
- مدة القراءة
- قراءة 2 دقيقة

بعبارة مبسطة: ماكوبنش هو لوحة نتائج عامة لنماذج اللغة. كل نموذج يجيب على نفس الاختبارات: البرمجة تساوي 10 نقاط، والدردشة 10 نقاط، والمجموع هو مجموع النقطتين معًا. تتاح مجموعات المكافآت الأصعب للنموذج الذي يحقق نسبة 90% أو أكثر في جزء من الاختبارات، ويمكنها إضافة نقاط إضافية. تُظهر هذه الصفحة كل خطوة في شكل رسم بياني.
انتقل إلى: CrucibleForge على GitHub
خلاصة المعلومات
- اختبار واحد مشترك. كل النماذج ترد على نفس الحالات القياسية. يساوي تقييم الكود 10 نقاط، وكذلك تقييم Chat؛ وبالتالي يكون المجموع 20 نقطة في الاختبارات القياسية.
- يتم تشغيل الكود، بينما يتم تقييم Chat. إجابات الكود تخضع لاختبارات خفية؛ أما نموذج التقييم فيقوم بتقييم Chat ويجب عليه اقتباس الأدلة المستخدمة في ذلك.
- لكل درجة هامش معين. النماذج التي تقع ضمن نطاق ± من بعضها البعض تعتبر متعادلة، بغض النظر عن ترتيبها.
- مجموعات المكافآت تتجاوز العدد 10. إذا حققت النماذج نسبة 90% أو أكثر في مجموعة معينة، فإن المجموعات الأصعب المرتبطة بها تُفعل؛ وكل مجموعة من هذه المجموعات تمنح نقطة إضافية واحدة كحد أقصى.
- لا تحصل النماذج على أي نقاط في حال رفضت الإجابة. الاختبارات تقيس ما تفعله النماذج عند طلب ذلك منها.
- آلية التقييم مفتوحة المصدر. يمكن تشغيل CrucibleForge على GitHub، وهو يقوم بإدارة كافة الاختبارات؛ ويمكنك أنت أيضًا تشغيله.
تستخدم الأمثلة التوضيحية لوحة اختبارات Suite 4.0 التي تم نشرها في 7 نوفمبر 2026. أما Suite 4.1 فهو يصحح إجابات الاختبارات ويُعيد تقييم جميع النماذج، مع الحفاظ على نفس قواعد التقييم ومجموعات المكافآت؛ يمكنكم الاطلاع على التغييرات في Suite 4.1 للحصول على التفاصيل والأرقام الجديدة.
ما هو MakoBench؟
من النموذج إلى اللوحة التصنيفية
- النموذجإما موجود محليًا على جهازنا، أو عبر واجهة برمجة تطبيقات مستضافة
- الحالات القياسيةنفس الأسئلة لكل نموذج
- إجابات النموذجيتم تخزينها لكي يمكن تقييمها مرة أخرى
- عملية التقييمبالنسبة للكود: يتم تشغيله ضد اختبارات مخفية وتحليل النتائج بدقة؛ أما بالنسبة للدردشة: يتم تقييمها باستخدام نموذج خاص على جهازنا بالإضافة إلى قواعد نصية محددة.
- الدرجاتيتم حساب الدرجة الإجمالية من خلال دمج درجات الكود والدردشة، مع هامش خطأ محدد.
- اللوحة التصنيفيةيتم ترتيب النماذج حسب الدرجات والفئات.
MakoBench هو لوحة تصنيفية عامة للنماذج اللغوية، سواء المحلية أو المستضافة، ويتم تقييمها جميعًا بنفس الطريقة. يقيس النظام قدرتين أساسيتين: كتابة كود يعمل بشكل صحيح، وإجراء محادثات تمثيلية أو حوارية. يمكن الاطلاع على النطاق الكامل لما يقيسه MakoBench وما لا يقيسه في صفحة ما الذي يختبره MakoBench وما الذي لا يختبره.
المحرك المستخدم هو CrucibleForge، وهو مجاني ومفتوح المصدر (رخصة MIT-0). يمكنك تشغيله على نماذجك الخاصة باستخدام دليل التثبيت الخاص بـ CrucibleForge.
كيف يتم حساب الدرجة
حالة واحدة في كل مرة
كيف تحصل الحالة الواحدة على التقييم المناسب
- الحالةمحادثة تتضمن استخدام أدوات؛ تحتوي على 11 خطوة، مع وجود بعض العقبات المعدّة مسبقًا
- الردما يقوله النموذج وما يطلبه من المستخدم
- الفحوصات، خطوة بخطوةهل الأداة المستخدمة صحيحة؟ هل الوسائط المدخلة صحيحة أيضًا؟ هل يجب الرد على المستخدم بدلاً من استدعاء أداة ما؟
- نجاح 7 خطوات، فشل 4 خطواتالتقييم: 7 / 11 = 0.64
الحالة الواحدة تمثل مهمة محددة: دالة يجب كتابتها، أو برنامج يجب التنبؤ بمخرجاته، أو محادثة تتضمن استخدام أدوات، أو جلسة تمثيلية طويلة. يتم تقييم كل حالة على شكل خطوات صغيرة؛ فإذا كان الرد قريبًا من الصواب، يحصل النموذج على معظم التقييم الممكن. كل حالة قياسية يتم تنفيذها مرة واحدة فقط.
تفاصيل إضافية: قائمة الحالات المستخدمة في التقييم وكود تقييم الحالات (graders.py).
كيف يقوم الحكم بتقييم الردود في الدردشة
طريقة تقييم الحكم لردود الدردشة
- الردكل رد في جلسة الدردشة يُعتبر “جولة” منفصلة.
- سؤال واحدمثلاً: “هل وفى الشخص بوعده؟”
- نموذج الحكميُجيب بـ “نعم” أو “لا”.
- “نعم” + اقتباس دقيقيتم التحقق من الاقتباس: يجب أن يكون طوله 12 حرفًا على الأقل، وأن يظهر كلمة بكلمة في الرد.
- النتيجةإذا وُجد الاقتباس الصحيح، تُعتبر الإجابة “نعم”؛ وإلا فهي “لا”.
- قواعد نصية، بدون حكميتم التحقق من عدد الكلمات والعبارات المحظورة والمعلومات المحددة مسبقًا بواسطة الكود؛ أي فشل في هذه الاختبارات يعني رفض المهمة.
الكود لا يحتاج إلى رأي بشري أبدًا؛ لكن الدردشة تحتاج إلى ذلك، لذا يقوم نموذج الحكم، وهو نموذج لغوي آخر، بالإجابة بـ “نعم” أو “لا” على كل رد. في هذه الحالة، النموذج المستخدم هو Gemma 4 31B (نسخة غير مفلترة، Q8) على جهاز GPU الخاص بنا؛ حيث يعني Q8 نسخة من الأوزان بتنسيق 8 بت. تُعتبر الإجابة “نعم” صحيحة فقط إذا وُجد اقتباس دقيق في الرد، لأن نماذج الحكم تميل إلى الإجابة “نعم” بسهولة. قبل كل مجموعة من الردود، يجب على الحكم أن يتعرف على رد صحيح ومتوقع، وأن يكتشف ردًا خاطئًا؛ وإلا فإن العملية تتوقف.
عندما يمكن لسؤال واحد أن يؤدي إلى رفض المهمة، يتم طرحه ثلاث مرات؛ ويُقبل الرد فقط إذا حصل على أغلبية إجابات “نعم”؛ أما التعادل فيُعتبر رفضًا.
تفاصيل إضافية: كود الحكم (judge.py) وطريقة عمل جلسات الدردشة.
الكود والدردشة معًا يشكلان المجموع الكلي
الكود، 10 نقاط
الدردشة، 10 نقاط
كل جزء يحصل على نسبة من النقاط المخصصة له؛ فمثلاً، الدوال التي تمثل 76% من نقاط الكود تحصل على 3.8 من أصل 5 نقاط. جميع الأجزاء مجتمعة تشكل تقييم الكود والدردشة. أما اختبار البالغين فهو منفصل وله صفحة خاصة، ولا يتم إضافته أبدًا إلى النتيجة الكلية.
تفاصيل إضافية: ملف الإعدادات (bench.yaml) يسرد كل جزء، ونقاطه والحالات المرتبطة به.
الهامش ±
من أين يأتي الهامش؟
- إعادة رسم الحالاتألف مرة بشكل عشوائي؛ قد تظهر حالة ما مرتين أو لا تظهر أبدًا
- حساب الدرجة لكل عملية إعادة رسمهذا يعطي 1000 قيمة إجمالية
- أخذ الـ90% الأوسط من هذه القيم الإجماليةيتم تظليل هذا النطاق
- الهامش ± يساوي نصف عرض ذلك النطاقClaude Sonnet 4.5: 12.8 ± 1.1
مجموعة مختلفة من الحالات ستؤدي إلى قيمة إجمالية مختلفة قليلاً؛ الهامش يُظهر مدى هذا التغير. إذا كانت القيمتان أقرب من حجم الهامش، فإنهما تُعتبران متساويتين إحصائيًا. لا يغطي الهامش التباين الناتج عن عمليات التنفيذ المتكررة، لذا يجب اعتبار أي فرق بسيط (نقطة أو اثنتين) دليلاً على التساوي أيضًا.
تفاصيل إضافية: كود حساب الهامش (headline.py).
قراءة لوحة التقييم
فئات التصنيف
- الفئة Cأقل من 10أدنى فئة تصنيف
- الفئة B10 وما فوقمن 10 إلى 13
- الفئة A13 وما فوقمن 13 إلى 16
- الفئة S16 وما فوقمن 16 إلى 20، ولا يمكن تجاوز ذلك إلا باستخدام مجموعات المكافآت
المجموع الكلي، على مقياس من 0 إلى 20
| التصنيف | معناه |
|---|---|
| الفئة | S عندما تكون النتيجة 16 أو أكثر، A عند 13، B عند 10، وC لأقل من ذلك. |
| التوجه | إذا كانت النتيجة في مجال المحادثات أو البرمجة أعلى بـ 1.5 نقطة على الأقل من المتوسط، فإن النموذج يُصنف على أنه مائل إلى ذلك المجال؛ وإلا فهو متوازن. |
| جزئي | لم يتم إنهاء تقييم جميع الحالات؛ الأرقام متاحة، لكن لا يوجد مجموع كلي أو تصنيف أو ترتيب. |
| مؤقت | فشلت عملية التحقق من إعدادات الاختبار؛ لذا قد تكون قيم النموذج مخطئة. لا يوجد تصنيف أو ترتيب حتى يتم إعادة التشغيل. |
| (المجموعة 1) | تحتوي هذه المجموعة على نقاط مكافأة؛ الرقم يمثل أعلى مستوى مكافآت تم تحقيقه. |
| MAX | عندما تحقق النتيجة 90% أو أكثر في جميع الأسئلة القياسية ومجموعات المكافآت؛ لا توجد أسئلة أصعب من ذلك، لذا يجب إضافة مجموعة جديدة. |
يتم شرح تكلفة التشغيل والمنصة المستخدمة وغيرها من الأعمدة في صفحة توثيق MakoBench وكذلك في أقسام لوحة التقييم ضمن ملف README.
مثال: نموذج على المجموعة القياسية
التقييم البرمجي: 6.1 من أصل 10
التقييم الحواري: 6.7 من أصل 10
استخدم نموذج Claude Sonnet 4.5 المجموعة القياسية فقط دون أي إضافات أخرى؛ فيما يلي كيفية تحويل درجات التقييم إلى نتائج جزئية.
| الجزء | حالات الاختبار ذات الصلة | النقاط |
|---|---|---|
| الوظائف | نسبة المجموعات الاختبارية التي تم اجتيازها: CL3 بدرجة 1.00، CL4 بدرجة 0.69، CL5 بدرجة 0.40، CL6 بدرجة 0.89، CL7 بدرجة 0.77، CL8 بدرجة 0.79؛ المتوسط هو 0.76. | 0.76 × 5 = 3.8 |
| التنبؤ والكشف عن الأخطاء | حالتان للتنبؤ بالنتائج (CB-C5، CB-C6)؛ نسبة الصواب فيهما هي 31%، ووزن كل منهما هو 2. أما حالة الكشف عن الأخطاء فهي CB-F1، حيث كانت النتيجة صفراً، ووزنها 1. الحساب: (2 × 0.31 + 0) ÷ 3 = 0.21. | 0.21 × 2.5 = 0.5 |
| استخدام الأدوات | عدد الخطوات الصحيحة: TZ16 بدرجة 3 من أصل 6، TZ19 بدرجة 7 من أصل 11، بينما في TZ20 كانت جميع الخطوات صحيحة؛ المتوسط هو 0.71. | 0.71 × 2.5 = 1.8 |
| أجزاء التقييم الحواري | تم تقييم كل جزء عبر جلستين حواريتين. | 2.0 + 2.0 + 1.3 + 1.4 = 6.7 |
المجموع الكلي: 6.1 + 6.7 = 12.8 ± 1.1، ويصنف النموذج ضمن الفئة B. أفضل جزء حققه النموذج هو “الوظائف” بنسبة 76%، وهي أقل من نسبة الـ90% المطلوبة لفتح مجموعات المكافآت؛ لذا ظلت جميع مجموعات المكافآت مغلقة، وكان التقييم قاصراً على المجموعة القياسية فقط. معظم النماذج الأخرى في اللوحة التقييمية في نفس الوضع.
مجموعات المكافآت
كيفية فتح مجموعة ما
طريقة فتح مجموعات المكافآت، لجزء واحد
- الأسئلة القياسيةمثل أسئلة الدوال في هذا الجزء.
- هل تم الإجابة على 90% أو أكثر؟إذا لم يحدث ذلك: المجموعة تظل مغلقة ولا تحصل على أي نقاط؛ أما إذا حدث ذلك، فإن مجموعات المستوى الأول تفتح، وكل مجموعة تمنح نقطة واحدة.
- مجموعة قيد الانتظارمجموعة تم فتحها لكن لم يتم تنفيذها بعد؛ لا تحصل على أي نقاط حالياً.
- كل مجموعة تضيف نصيبها من النقاطعند تنفيذ المجموعة، فإنها تضيف من 0 إلى نقطة واحدة. مثلاً: الإجابة على سؤالين من أصل ثلاثة يمنح حوالي 0.67 نقطة.الإجابة على سؤالين من أصل ثلاثة تمنح حوالي 0.67 نقطة.
- هل تم الإجابة على 90% أو أكثر في كل مجموعات المستوى الأول؟إذا لم يحدث ذلك: يتم التوقف عند هذه المرحلة ولا تُضاف أي نقاط إضافية؛ أما إذا حدث ذلك، فإن مجموعات المستوى الثاني تفتح، وهكذا مستوى تلو الآخر.
- درجة الجزءالنقاط القياسية + نصيب كل مجموعة تم تنفيذها.
مجموعة المكافآت هي مجموعة من الأسئلة الأصعب، وعادةً ما تكون ثلاثة أسئلة لكل جزء. يطلق عليها CrucibleForge اسم “حزم السلم”. والقواعد كالتالي:
- الفتح. لا يتم منح مجموعات المستوى إلا بعد الإجابة على 90% أو أكثر من الأسئلة القياسية في ذلك الجزء، بالإضافة إلى جميع مجموعات المستويات الأدنى.
- مغلقة، مفتوحة، قيد الانتظار. مغلقة: لم يتم الحصول عليها بعد؛ مفتوحة: تم الحصول عليها وسيتم تنفيذها؛ قيد الانتظار: تم الحصول عليها لكن لم يتم تنفيذها أو تقييمها بعد، لذا لا تحصل على أي نقاط حالياً.
- نقطة واحدة كحد أقصى لكل مجموعة. تتوزع النقطة الواحدة على أسئلة المجموعة، مع احتساب الدرجات الجزئية؛ مثلاً: الإجابة على سؤالين من أصل ثلاثة يمنح حوالي 0.67 نقطة. وفي حال تكرار السؤال مرتين، يتم أخذ متوسط النتيجتين.
- المستويات. تُمنح جميع مجموعات مستوى معين دفعة واحدة، وكل منها تضيف نصيبها من النقاط إلى الجزء المعني.
ابتداءً من الإصدار 4.1، كل المجموعات هي من المستوى الأول؛ فاختبارات الكود تحتوي على ثلاث مجموعات (واحدة لكل جزء)، بينما اختبارات الدردشة تحتوي على خمس مجموعات (ومنها مجموعتان للتمثيل الدرامي). وبالتالي يمكن لاختبارات الكود أن تحقق 13 نقطة، واختبارات الدردشة 15 نقطة. أما الجزء الذي لا يحتوي على أسئلة قياسية فلا يمكنه فتح أي مجموعات مكافآت.
للتفاصيل: قواعد مجموعات المكافآت، كود فتح المجموعات (ladder.py) ومجموعات المكافآت المتاحة للعامة.
مثال: نموذج يفتح مجموعة مكافآت
نموذج DeepSeek V4 Flash يفتح مجموعة مكافآت
- أسئلة الدوال: 6 برامج قياسيةجميعها تم الإجابة عليها بشكل صحيح، أي بنسبة 100%؛ لذا تُمنح 5.0 نقاط.
- نسبة 100% تتجاوز 90%: يتم فتح المجموعةتفتح مجموعة الدوال من المستوى الأول.
- 3 أسئلة صعبة، كل منها تم تنفيذه مرتينالسؤال الأول: النتيجتان 0 و0، لذا النتيجة النهائية 0.00؛ السؤال الثاني: نفس الشيء، أي 0.00؛ أما السؤال الثالث فقد تم الإجابة على 4 من أصل 6 مجموعات بشكل صحيح، ثم لم يتم الإجابة عليه في المحاولة الثانية، لذا النتيجة 0.33.
- نصيب المجموعة: 0.33 ÷ 3 = 0.11إجمالي درجة جزء الدوال: 5.0 + 0.1 = 5.1 نقطة.
- تمثيل درامي عميق: نسبة 74%هذه النسبة أقل من 90%، لذا تظل مجموعات المكافآت مغلقة؛ إجمالي الدرجة لهذا الجزء هو 2.2 من أصل 3.
- إجمالي درجة الكود: 11.2 = 5.1 + 2.7 + 3.3تم تجاوز عتبة الـ10 نقاط بفضل مجموعات المكافآت.
نجح نموذج DeepSeek V4 Flash في الإجابة على جميع برامج الدوال الستة القياسية، مما أدى إلى فتح مجموعة الدوال؛ وهي مجموعة تتكون من ثلاثة برامج يجب بناؤها من الصفر، وتم تنفيذ كل منها مرتين. وقد تمكن النموذج من حل جزء من أحد البرامج: حيث تم الإجابة على 4 من أصل 6 مجموعات بشكل صحيح في المحاولة الأولى، بينما لم يتم الإجابة عليه في المحاولة الثانية؛ لذا حصل على 0.33 نقطة لهذا السؤال. وبالتالي فإن المجموعة بأكملها تضيف (0 + 0 + 0.33) ÷ 3 = 0.11 نقطة إلى الدرجة الإجمالية. كما تمكن النموذج من فتح مجموعات مكافآت لجزئي الكود الآخرين ولقسم الكتابة الإبداعية أيضاً. وبذلك وصل إجمالي درجة النموذج في اختبارات الكود إلى 11.2 نقطة، متجاوزاً عتبة الـ10 نقاط؛ أما الدرجة الإجمالية فوصلت إلى 19.2 ± 0.8 نقطة.
أما بالنسبة لقسم التمثيل الدرامي العميق، فقد حقق النموذج نسبة 74% فقط؛ لذا ظلت مجموعات المكافآت الخاصة به مغلقة. وكل جزء يتم فتح مجموعاته بشكل منفصل.
كيف تم بناء الاختبار
الحفاظ على تحديث الحالات
ما الذي يحدث عند تغيير أي حالة؟
- إذا تغير السؤال أو اختباراتهإجابات جديدةكل النماذج تقدم إجابات جديدة
- إذا تغير سؤال التقييميتم إعادة التقييميقوم المقيم بإعادة قراءة الإجابات المحفوظة
- إذا تغير فحص النص أو الإجابةيتم إعادة التقييميتم تقييم الإجابات مرة أخرى، دون استدعاء أي نموذج
- إذا لم يحدث أي تغييرتظل كما هيالإجابات المحفوظة تبقى صالحة
كل إجابة محفوظة تحمل علامة تشير إلى الحالة التي أجابت عليها. عند تغيير أي حالة، يتم إعادة معالجة فقط ما يتأثر بالتغيير؛ ولا يتم خلط الإجابات القديمة مع الجديدة أبدًا. لمزيد من التفاصيل: علامات الحالات (version.py).
مراجعة مفاتيح الإجابات في النسخة 4.1
مراجعة مفاتيح الإجابات في النسخة 4.1
- كل مفاتيح الإجابات العامة63 حالة
- مُراجعانالمراجع أ يقرأ كل حالة؛ والمراجع ب يقرأ أيضًا كل حالة.
- التحقق من كل ادعاءمن الناحية البرمجية: تشغيل الكود والاختبارات؛ ومن ناحية الدردشة والأدوات: مقارنة الإجابات مع الإجابات المخزنة لكل نموذج.
- تصنيف الادعاءاتحوالي 190 ادعاء تم تأكيده، وتم تصحيحها إذا كانت تغيّر في الدرجات؛ وحوالي 95 ادعاء تم رفضه، مع ذكر سبب مكتوب لكل منها.
- فحص ثانوي لكل تصحيح“الرفض لا يُمنح كنقاط؛ فالمهام الصعبة تظل صعبة.”
- إعادة التشغيل أو إعادة التقييملكل حالة تم تغييرها.
يمكن أن يكون مفتاح الإجابات خاطئًا بطريقتين: إما أن يقبل إجابة سيئة، أو يرفض إجابة صحيحة بحجة أنها لا تتوافق مع متطلبات المهمة. في النسخة 4.1، قام مراجعان بقراءة كل مفاتيح الإجابات العامة بشكل منفصل، وتم التحقق من كل ادعاء مقابل الإجابات المخزنة قبل إجراء أي تغييرات. كما لم يتم منح أي نقاط مقابل الرفض؛ فلا توجد حالة تُمنح فيها نقاط للرفض. يوضح رابط النسخة 4.1: ما الذي تغيّر كل التصحيحات التي تم إجراؤها.
من الحزمة الأولى إلى الحزم الجديدة
الحزمة حتى الآن
- 3.0الدرجات من أصل 100
- 3.9تم إضافة مجموعات مكافآت جديدة
- 4.0الكود والدردشة، كل منهما بعدد 10 عناصر
- 4.1تم مراجعة إجابات الاختبارات
حزمة مكافآت جديدة
- الكتابةنماذج من عدة فئات تقوم بصياغة الحالات الاختبارية
- الهجومنموذج آخر يحاول اختراق كل إجابة
- فحص الحكمتقبل الإجابات الجيدة، وترفض الإجابات السيئة أو الضعيفة
- التجربة الأوليةعدد قليل من النماذج القوية تقوم بتجربة الحزمة
- تحسين الحزمةإصلاح ما أظهرته التجربة الأولية
- المرحلة النهائيةالحزمة تُؤجل حتى يتم مراجعتها
وصلت مجموعات المكافآت في الإصدار 3.9 لضمان ألا تحقق جميع النماذج أفضل الدرجات. تظل الحزم القديمة كما هي في سجل تاريخ الحزم، وكل إصدار من محركات الاختبار موجود في سجل التغييرات في CrucibleForge.
عندما تبدأ النماذج في تحقيق الدرجات القصوى، يصبح من الضروري إضافة مجموعة مكافآت أصعب (حزمة جديدة)، وتتبع كل حزمة جديدة الخطوات المذكورة أعلاه. فحص الحكم هو الأهم؛ فإذا لم يتمكن الحكم من التمييز بين الإجابة الجيدة والإجابة السيئة، فلا يمكن تقييم الحزمة بشكل عادل.
لماذا طورت هذا؟
سئمت من عدم القدرة على التمييز بين النماذج المختلفة. أردت إنشاء معيار سريع يمكن لأي شخص تشغيله على أي نموذج، بحيث يحصل على أرقام يمكنه التحقق منها بنفسه. اعتقدت أن ذلك سيضيف قيمة حقيقية.
إذا وجدتم في هذا المشروع فائدة، ففكروا في التبرع لمساعدتنا في تحديثه باستمرار. كما يمكنكم التصويت على النموذج التالي الذي سنختبره.
مرتبط: كيف يعمل CrucibleForge.
← المزيد من الذكاء الاصطناعي والنماذج المحلية More MakoBench articles →