مجموعة مصغرة لتقييم أداء LLM على لعبة التخمين في Bulls and Cows ، ودعم العديد من مقدمي الخدمات من خلال Litellm.
ملحوظة
TLDR: Bulls and Cows هي لعبة كسر رمز لاعبين. لاعب يكتب رقمًا سريًا مكون من 4 أرقام. يجب أن تكون الأرقام مختلفة (على سبيل المثال ، 1234 ). ثم يحاول لاعب آخر (LLM في هذه الحالة) تخمين الرقم السري (على سبيل المثال ، 1246 ). لكل تخمين يتم إرجاع معلومات عدد المباريات. إذا كانت الأرقام المطابقة في مواقفها الصحيحة ، فهي "ثيران" (ثيران في هذا المثال: 1 و 2 ) ، إذا كانت في مواقف مختلفة ، فهي "أبقار" (بقرة واحدة ، 4 ). يتطلب الحل الصحيح التفكير في التفكير في ذاكرة التخمين الجيدة والسياسة التالية من الإجابات السابقة. ثبت أنه يمكن حل أي رقم سري مكون من 4 أرقام في غضون سبعة منعطفات.


| نموذج | ألعاب | معدل النجاح | AVG المنعطفات (النجاح فقط) | إخفاقات التنسيق (المنعطفات) |
|---|---|---|---|---|
| Openai/O1-Mini-2024-09-12 | 25 | 60.0 ٪ [40.7 ٪ ؛ 76.6 ٪] | 9.1 ± 2.7 | 23.1 ٪ |
| OpenRouter/Anthropic/Claude-3.5-Sonnet | 50 | 36.0 ٪ [24.1 ٪ ؛ 49.9 ٪] | 9.8 ± 4.0 | 0.0 ٪ |
| Openai/GPT-4O-2024-08-06 | 50 | 30.0 ٪ [19.1 ٪ ؛ 43.8 ٪] | 9.5 ± 3.6 | 0.0 ٪ |
| Openai/GPT-4O-MINI-2024-07-18 | 50 | 26.0 ٪ [15.9 ٪ ؛ 39.6 ٪] | 10.0 ± 3.1 | 0.1 ٪ |
| OpenRouter/Deepseek/Deepseek-Chat | 50 | 18.0 ٪ [9.8 ٪ ؛ 30.8 ٪] | 11.6 ± 3.6 | 3.3 ٪ |
| OpenRouter/meta-llama/llama-3.1-405b-instruct | 50 | 8.0 ٪ [3.2 ٪ ؛ 18.8 ٪] | 9.5 ± 3.3 | 3.0 ٪ |
| OpenRouter/Google/Gemini-Pro-1.5 | 50 | 8.0 ٪ [3.2 ٪ ؛ 18.8 ٪] | 8.0 ± 4.1 | 0.1 ٪ |
| OpenRouter/Google/Gemini-Flash-1.5 | 50 | 2.0 ٪ [0.4 ٪ ؛ 10.5 ٪] | 8.0 ± 0.0 | 0.9 ٪ |
| الإنسان/كلود -3-5-هايكو -20241022 | 50 | 0.0 ٪ [0.0 ٪ ؛ 7.1 ٪] | 0.0 ± 0.0 | 0.9 ٪ |
مهم
بالنسبة لمعظم أشواط ، تم لعب 50 لعبة (باستثناء O1-MINI) ، وبالتالي ، فترات الثقة واسعة. إذا كنت ترغب في إنفاق 100-200 دولار في ائتمانات API في الاختبارات لتحقيق نتائج أكثر دقة وجعل رابطة الدول المستقلة أضيق ، فلا تتردد في الوصول إلي أو فتح العلاقات العامة مع نتائجك.
GUESS: 1234 (محدد في ملف المطالبات).strip() تمت إضافة هذا).o1-mini ، ينسى غالبًا قواعد التنسيق ويحاول إضافة تركيز جريء على الاستجابة. تم اعتبار هذا السلوك غير مقبول ويتم حسابه كخطأ ودوره المهدر ، حيث تحدد التعليمات بشكل صريح التنسيق المطلوب.o1-mini ).3 أرقام (إصدار تصحيح: أقل المنعطفات ، التفكير الأقصر):
openai/gpt-4o-mini-2024-07-18 : 283K مخزنة مؤقتًا + 221 كيلو باطن + 68K الإخراج = 0.1 دولار ( موصى بها للتصحيح )
openai/gpt-4o-2024-08-06 : 174K مخزنة + 241K غير متوفرة + 56K الإخراج = 1.38 دولار
openai/gpt-4-turbo-2024-04-09 : غير معروف = 6.65 دولار
openai/o1-mini-2024-09-12 : 0K مخزنة + 335K غير متوفرة + 1345K الإخراج = 17.15 دولار
anthropic/claude-3-haiku-20240307 : 492K إدخال + 46K الإخراج = 0.18 دولار
4 أرقام (الإصدار الرئيسي):
openai/gpt-4o-mini-2024-07-18 : 451K مخبأة + 429K غير متوفرة + 100K الإخراج = 0.15 دولار
openai/gpt-4o-2024-08-06 : 553K مخزنة مؤقتًا + 287K غير متوفرة + 87K = 2.29 دولار
(25 لعبة) openai/o1-mini-2024-09-12 : 0K مخزنة مؤقتًا + 584 كيلو بايت + 1815K الإخراج = 23.54 دولار
anthropic/claude-3-5-haiku-20241022 : 969K إدخال + 90K الإخراج = 1.42 دولار
openrouter/anthropic/claude-3.5-sonnet (جديد): غير معروف = 5.2 دولارات
ظهر هذا الإطار إلى حيز الوجود بفضل تعليق فضولي من مشترك في قناة Telegram الخاصة بي. زعموا أنهم اختبروا مختلف LLMs في لعبة الثيران والأبقار ، وخلصوا إلى أنه لا يمكن لأي شيء حلها ، وبالتالي ، لا يمكن لـ LLMs التفكير. مفتون ، لقد طلبت أمثلة على ما يسمى "الإخفاقات" ، فقط ليتم إخبار المحادثات. مريح. في وقت لاحق ، ذكروا تجربة O1-Preview ، والتي يبدو أنها حلتها-في حوالي 20 حركة ، بعيدًا عن الحركات السبعة التي تعتبر مثالية.
في هذه الأثناء ، كنت أبحث عن عذر لتجربة Openhands ، وما هي أفضل طريقة من تحدي Copilot لتدوير معيار LLM من نقطة الصفر؟ بعد ثلاث أمسيات من الجهد القلبي (كنت ألعب مطارد 2 في وقت واحد) ، وُلد هذا المعيار-وهو منتج من الأجزاء المتساوية اللامبالاة والرغبة في إثبات وجود نقطة لم يطلبها أحد. يتمتع!
pip install -r requirements.txt
pre-commit install(اختياري) لفهم المنطق ، اقرأ جميع المطالبات هنا.
قم بتكوين مفاتيح API الخاصة بمزود LLM الخاص بك كمتغيرات بيئة (إما direclty في محطةك أو استخدام ملف .env). أوصي باستخدام إما Openai أو مفاتيح الإنسان ، و OpenRouter لأي شيء آخر.
اضبط config/default_config.yaml مع إعدادات الطراز واللعبة المطلوب. استخدم run_id لتخزين أشواط مختلفة في مجلدات منفصلة - وإلا سيتم تسمية مجلدات النتائج مع الطوابع الزمنية. الحقول الرئيسية هي: model ، target_length (كم عدد الأرقام في الرقم السري) ، num_concurrent_games (للتغلب على حدود واجهة برمجة تطبيقات TPS المضحكة. على سبيل المثال ، بالنسبة للأنثروبور ، لا أوصي بإعداد هذه القيمة أعلى من 2 ، بينما يمكن لـ Openai بسهولة دعم 8 - 10 ألعاب متزامنة).
قم بتشغيل المؤشر وتصور نتائج جميع عمليات التشغيل:
python run_benchmark.py
python scripts/visualize_results.pyستكون النتائج متاحة في HTML (مع مؤامرات إضافية) وتنسيق.
يقوم المعيار بتقييم LLMS على ثلاثة جوانب رئيسية:
يتم حفظ النتائج مع تاريخ اللعبة الكاملة (بما في ذلك سجلات المحادثة ، على سبيل المثال ، هنا) والتكوينات للتحليل التفصيلي.
يستخدم المشروع الأسود (طول الخط: 100) و ISORT لتنسيق الكود. تضمن السنانير المسبقة جودة الرمز عن طريق التحقق:
تشغيل الشيكات اليدوية مع:
pre-commit run --all-filesقم بتشغيل الاختبارات (نعم ، هناك اختبارات على منطق اللعبة ، والاستجابة تحليل التحليل والتحقق):
python -m pytest . -v