Sebuah kerangka kerja mini untuk mengevaluasi kinerja LLM pada permainan menebak nomor Bulls dan Sapi, mendukung banyak penyedia melalui Litellm.
Catatan
TLDR: Bulls dan sapi adalah permainan pemecahan kode untuk dua pemain. Seorang pemain menulis nomor rahasia 4 digit. Digit harus semuanya berbeda (misalnya, 1234 ). Kemudian pemain lain (LLM dalam kasus ini) mencoba menebak angka rahasia (misalnya, 1246 ). Untuk setiap tebakan info jumlah pertandingan dikembalikan. Jika angka yang cocok berada di posisi yang tepat, mereka adalah "lembu jantan" (dua lembu jantan dalam contoh ini: 1 dan 2 ), jika di posisi yang berbeda, mereka adalah "sapi" (satu sapi, 4 ). Solusi yang benar membutuhkan penalaran-untuk memikirkan memori tebakan dan konteks yang baik untuk belajar dari jawaban masa lalu. Terbukti bahwa nomor rahasia 4 digit dapat diselesaikan dalam tujuh putaran.


| Model | Pertandingan | Tingkat keberhasilan | Rata -rata berbelok (hanya kesuksesan) | Format kegagalan (belokan) |
|---|---|---|---|---|
| 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% |
| Antropik/Claude-3-5-Haiku-20241022 | 50 | 0,0% [0,0%; 7.1%] | 0,0 ± 0,0 | 0,9% |
Penting
Untuk sebagian besar berjalan, 50 pertandingan dimainkan (tidak termasuk O1-mini), dengan demikian, interval kepercayaan luas. Jika Anda ingin menghabiskan $ 100-200 dalam kredit API untuk tes untuk mencapai hasil yang lebih akurat dan membuat CI lebih sempit, jangan ragu untuk menghubungi saya atau membuka PR dengan hasil Anda.
GUESS: 1234 (didefinisikan dalam file prompt).strip() ditambahkan untuk mengatasi ini).o1-mini , sering lupa memformat aturan dan mencoba menambahkan penekanan berani pada respons. Perilaku ini dianggap tidak dapat diterima dan dihitung sebagai kesalahan dan belokan yang terbuang, karena instruksi secara eksplisit menentukan pemformatan yang diperlukan.o1-mini ).3 digit (versi debug: lebih sedikit belokan, alasan yang lebih pendek):
openai/gpt-4o-mini-2024-07-18 : 283K di-cache + 221k Uncached + 68K Output = $ 0,1 ( Direkomendasikan untuk Debug )
openai/gpt-4o-2024-08-06 : 174K di-cache + 241k Uncached + 56k output = $ 1,38
openai/gpt-4-turbo-2024-04-09 : Tidak Diketahui = $ 6,65
openai/o1-mini-2024-09-12 : 0k di-cache + 335k Uncached + 1345K Output = $ 17.15
anthropic/claude-3-haiku-20240307 : Input 492K + output 46k = $ 0,18
4 digit (versi utama):
openai/gpt-4o-mini-2024-07-18 : 451K di-cache + 429K Uncached + 100K Output = $ 0,15
openai/gpt-4o-2024-08-06 : 553K di-cache + 287K tidak dipenuhi + 87k = $ 2,29
(25 pertandingan) openai/o1-mini-2024-09-12 : 0k di-cache + 584k Uncached + 1815k output = $ 23,54
anthropic/claude-3-5-haiku-20241022 : 969K Input + output 90k = $ 1,42
openrouter/anthropic/claude-3.5-sonnet (Baru): Tidak Diketahui = $ 5.2
Kerangka kerja ini muncul berkat komentar aneh dari pelanggan saluran telegram saya. Mereka mengklaim telah menguji berbagai LLM dalam permainan sapi jantan dan sapi, menyimpulkan bahwa tidak ada yang bisa menyelesaikannya dan, oleh karena itu, LLM tidak dapat bernalar. Penasaran, saya meminta contoh dari apa yang disebut "kegagalan," hanya untuk diberi tahu bahwa obrolan dihapus. Nyaman. Kemudian, mereka menyebutkan mencoba preview O1, yang tampaknya menyelesaikannya-dalam sekitar 20 gerakan, jauh dari 7 gerakan yang dianggap optimal.
Sementara itu, saya telah mencari alasan untuk bereksperimen dengan Openhand, dan cara apa yang lebih baik daripada menantang kopilot untuk memutar tolok ukur LLM dari awal? Setelah tiga malam upaya setengah hati (saya bermain Stalker 2 secara bersamaan), tolok ukur ini lahir-produk dari apatis bagian yang sama dan keinginan untuk membuktikan suatu titik yang tidak diminta siapa pun. Menikmati!
pip install -r requirements.txt
pre-commit install(Opsional) Untuk memahami logika, baca semua petunjuk di sini.
Konfigurasikan tombol API penyedia LLM Anda sebagai variabel lingkungan (baik direclty di terminal Anda atau menggunakan file .env). Saya merekomendasikan menggunakan kunci openai atau antropik, dan OpenRouter untuk hal lain.
Sesuaikan config/default_config.yaml dengan model dan pengaturan game yang Anda inginkan. Gunakan run_id untuk menyimpan berbagai run di folder terpisah - jika tidak, folder hasil akan dinamai dengan cap waktu. Bidang utamanya adalah: model , target_length (berapa banyak digit dalam nomor rahasia), num_concurrent_games (untuk berkeliling batas API tps yang menggelikan. Misalnya, untuk tier antropik 2 saya tidak merekomendasikan untuk menetapkan nilai ini di atas 2 , sementara OpenAI dapat dengan mudah dapat mendukung 8 - 10 game bersamaan).
Jalankan tolok ukur dan visualisasikan hasil dari semua berjalan:
python run_benchmark.py
python scripts/visualize_results.pyHasil akan tersedia di HTML (dengan plot tambahan) dan penurunan harga.
Benchmark mengevaluasi LLM pada tiga aspek utama:
Hasil disimpan dengan sejarah permainan penuh (termasuk log percakapan, misalnya, di sini) dan konfigurasi untuk analisis terperinci.
Proyek ini menggunakan hitam (panjang garis: 100) dan ISORT untuk pemformatan kode. Kait pra-komit memastikan kualitas kode dengan memeriksa:
Jalankan cek manual dengan:
pre-commit run --all-filesJalankan tes (ya, ada tes pada logika game, menjawab parsing & validasi):
python -m pytest . -v