Ein Mini-Framework zur Bewertung der LLM-Leistung auf dem Bullen- und Kühsnummer-Erraten-Spiel, das mehrere Anbieter durch Litellm unterstützt.
Notiz
TLDR: Bulls and Cows ist ein Code-brechensspiel für zwei Spieler. Ein Spieler schreibt eine 4-stellige geheime Nummer. Die Ziffern müssen alle unterschiedlich sein (z. B. 1234 ). Dann versucht ein anderer Spieler (in diesem Fall ein LLM) die geheime Nummer (z. B. 1246 ) zu erraten. Für jede Vermutung wird die Anzahl der Übereinstimmungen zurückgegeben. Wenn sich die passenden Ziffern in den richtigen Positionen befinden, handelt es sich um "Bullen" (zwei Bullen in diesem Beispiel: 1 und 2 ), wenn sie in verschiedenen Positionen "Kühe" sind (eine Kuh, 4 ). Die richtige Lösung erfordert Argumentation, an das die nächste gute Vermutung und das In-Context-Speicher aus den vergangenen Antworten zu lernen ist. Es ist bewiesen, dass jede 4-stellige geheime Zahl innerhalb von sieben Runden gelöst werden kann.


| Modell | Spiele | Erfolgsrate | AVG dreht sich (nur Erfolg) | Formatfehler (Kurven) |
|---|---|---|---|---|
| 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/Lama-3.1-405B-Instruktur | 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% |
| Anthropisch/Claude-3-5-Haiku-20241022 | 50 | 0,0% [0,0%; 7,1%] | 0,0 ± 0,0 | 0,9% |
Wichtig
Für die meisten Läufe wurden 50 Spiele gespielt (exkl. O1-mini), daher sind Konfidenzintervalle breit. Wenn Sie für Tests $ 100-200 für API-Credits ausgeben möchten, um genauere Ergebnisse zu erzielen und CIS zu schärfen, können Sie mich gerne erreichen oder eine PR mit Ihren Ergebnissen öffnen.
GUESS: 1234 (definiert in der Eingabedatei).strip() wurde hinzugefügt, um dies zu beheben).o1-mini , die Formatierungsregeln oft und versucht, der Antwort mutige Betonung zu verleihen. Dieses Verhalten wurde als inakzeptabel angesehen und als Fehler und eine verschwendete Kurve gezählt, da die Anweisung ausdrücklich die erforderliche Formatierung festlegt.o1-mini zu verhalten).3 Ziffern (Debug -Version: Weniger Wendungen, kürzeres Denken):
openai/gpt-4o-mini-2024-07-18 : 283K zwischengespeichert + 221 km ungekocht + 68.000 Ausgabe = 0,1 USD ( für Debug empfohlen )
openai/gpt-4o-2024-08-06 : 174K zwischengespeichert + 241k ungekocht + 56.000 Ausgabe = $ 1,38
openai/gpt-4-turbo-2024-04-09 : Unbekannt = $ 6.65
OpenAI/O1-Mini - openai/o1-mini-2024-09-12 : 0K zwischengespeichert + 335 km nicht
anthropic/claude-3-haiku-20240307 : 492K-Eingang + 46K Ausgabe = 0,18 USD
4 Ziffern (Hauptversion):
openai/gpt-4o-mini-2024-07-18 : 451K zwischengespeichert + 429k ungekocht + 100k Ausgabe = $ 0,15
openai/gpt-4o-2024-08-06 : 553K zwischengespeichert + 287 km ungekocht + 87k = $ 2,29
(25 Spiele) openai/o1-mini-2024-09-12 : 0K zwischengespeichert + 584k ungekocht + 1815K Ausgabe = $ 23,54
anthropic/claude-3-5-haiku-20241022 : 969K-Eingabe + 90k Ausgabe = $ 1,42
openrouter/anthropic/claude-3.5-sonnet (neu): Unbekannt = 5,2 $
Dieser Rahmen entstand dank eines merkwürdigen Kommentars eines Abonnenten meines Telegrammkanals. Sie behaupteten, verschiedene LLMs in einem Bullen- und Kühespiel getestet zu haben und zu dem Schluss zu kommen, dass niemand es lösen könnte und dass LLMs daher nicht argumentieren können. Fasziniert bat ich nach Beispielen für diese sogenannten "Misserfolge", nur um zu erfahren, dass die Chats gelöscht wurden. Komfortabel. Später erwähnten sie, O1-Präview zu versuchen, die es anscheinend gelöst hat-in etwa 20 Zügen, weit entfernt von den 7 Bewegungen, die als optimal angesehen wurden.
In der Zwischenzeit hatte ich nach einer Ausrede gesucht, um mit OpenHands zu experimentieren, und was gibt es Schöneres, als Copilot herauszufordern, einen LLM -Benchmark von Grund auf neu zu drehen? Nach drei Abenden halbherziger Anstrengung (ich spielte gleichzeitig Stalker 2), wurde dieser Benchmark geboren-ein Produkt der Apathie der gleichen Teile und dem Wunsch, einen Punkt zu beweisen, nach dem niemand gefragt hat. Genießen!
pip install -r requirements.txt
pre-commit install(Optional) Lesen Sie hier alle Eingabeaufforderungen, um die Logik zu verstehen.
Konfigurieren Sie die API -Schlüssel Ihres LLM -Anbieters als Umgebungsvariablen (entweder in Ihrem Terminal oder mit der Datei .Env). Ich empfehle, entweder OpenAI- oder Anthropicschlüssel und OpenRouter für alles andere zu verwenden.
Passen Sie config/default_config.yaml mit den gewünschten Modell- und Spieleinstellungen an. Verwenden Sie run_id , um verschiedene Läufe in separaten Ordnern zu speichern. Andernfalls werden die Ergebnisordner mit Zeitstempeln benannt. Die Hauptfelder sind: model , target_length (wie viele Ziffern in der geheimen Nummer), num_concurrent_games (um lächerliche TPS -API -Grenzen zu umgehen. ZB für anthropische Tier 2 Ich empfehle diesen Wert nicht, während OpenAI leicht 8 - 10 2 Spiele unterstützen kann).
Führen Sie den Benchmark aus und visualisieren Sie die Ergebnisse aller Läufe:
python run_benchmark.py
python scripts/visualize_results.pyDie Ergebnisse werden in HTML (mit zusätzlichen Diagrammen) und Markdown verfügbar sein.
Der Benchmark bewertet LLMs auf drei Schlüsselaspekten:
Die Ergebnisse werden mit vollständigen Spielgeschichten (einschließlich Gesprächsprotokollen, z. B. hier) und Konfigurationen für eine detaillierte Analyse gespeichert.
Das Projekt verwendet Schwarz (Zeilenlänge: 100) und ISORT für die Codeformatierung. Pre-Commit-Hooks gewährleisten die Codequalität durch Überprüfen:
Ausführen manueller Schecks mit:
pre-commit run --all-filesFühren Sie Tests aus (ja, es gibt Tests zur Spiellogik, Antwort an Parsen und Validierung):
python -m pytest . -v