LITELLMを通じて複数のプロバイダーをサポートし、ブルズと牛の数の推測ゲームでLLMパフォーマンスを評価するためのミニフレームワーク。
注記
TLDR:Bulls and Cowsは、2人のプレイヤー向けのコードブレイクゲームです。プレイヤーは4桁の秘密番号を書きます。数字はすべて異なる必要があります(例: 1234 )。次に、別のプレイヤー(この場合はLLM)が秘密の数字を推測しようとします(例: 1246 )。すべての推測で、一致数の情報が返されます。一致する数字が正しい位置にある場合、それらは「雄牛」(この例の2つの雄牛: 1と2 )であり、異なる位置の場合、それらは「牛」(1牛、 4 )です。正しい解決策には、過去の答えから学習するために、次の良い推測とコンテキスト内のメモリを考える理由が必要です。 4桁の秘密番号は7ターン以内に解決できることが証明されています。


| モデル | ゲーム | 成功率 | 平均ターン(成功のみ) | フォーマット障害(ターン) |
|---|---|---|---|---|
| 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% |
| 人類/claude-3-5-haiku-20241022 | 50 | 0.0% [0.0%; 7.1%] | 0.0±0.0 | 0.9% |
重要
ほとんどのランでは、50ゲームがプレイされました(O1-Miniを除く)。したがって、信頼区間は広くなっています。より正確な結果を達成し、CISを狭くするために、テストでAPIクレジットに100〜200ドルを費やしたい場合は、お気軽にご連絡ください。
GUESS: 1234 (プロンプトファイルで定義)に従う必要があります.strip() 。o1-mini 、しばしばルールのフォーマットを忘れて、応答に大胆な強調を追加しようとします。この動作は容認できないと見なされ、命令が必要なフォーマットを明示的に指定するため、エラーと無駄なターンとしてカウントされました。o1-miniの動作に対する応答でマークダウンフォーマットを明示的に禁止することを含む)。3桁(デバッグバージョン:ターンが少なく、推論が短い):
openai/gpt-4o-mini-2024-07-18 :283K CACHED + 221K UNCASCHED + 68K OUTPUT = $ 0.1(デバッグに推奨)
openai/gpt-4o-2024-08-06 :174K Cached + 241K UNCASCHED + 56K出力= $ 1.38
openai/gpt-4-turbo-2024-04-09 :不明= 6.65ドル
openai/o1-mini-2024-09-12 :0K CACHED + 335K UNCASCHED + 1345K出力= $ 17.15
anthropic/claude-3-haiku-20240307 :492K入力 + 46K出力= $ 0.18
4桁(メインバージョン):
openai/gpt-4o-mini-2024-07-18 :451K CACHED + 429K UNCASCHED + 100K OUTPUT = $ 0.15
openai/gpt-4o-2024-08-06 :553K CACHED + 287K UNCASCHED + 87K = $ 2.29
(25ゲーム) openai/o1-mini-2024-09-12 :0K CACHED + 584K UNCASCHED + 1815K出力= $ 23.54
anthropic/claude-3-5-haiku-20241022 :969k入力 + 90k出力= $ 1.42
openrouter/anthropic/claude-3.5-sonnet (new):不明= $ 5.2
このフレームワークは、My Telegramチャンネルのサブスクライバーからの奇妙なコメントのおかげで存在しました。彼らは、雄牛や牛のゲームでさまざまなLLMをテストしたと主張し、それを解決することはできず、したがって、LLMが推論できないと結論付けました。興味をそそられて、私はこれらのいわゆる「失敗」の例を求めましたが、チャットが削除されたと言われるだけです。便利。その後、彼らはO1-Previewを試してみることに言及しました。これは明らかにそれを解決しました。これは、約20の動きで、最適と見なされる7つの動きから遠く離れています。
一方、私はオープンハンドを試すための言い訳を探していましたが、CopilotにLLMベンチマークをゼロからスピンアップするように挑戦するよりも良い方法は何ですか?中途半端な努力の3晩の後(私はStalker 2を同時にプレイしていました)、このベンチマークが誕生しました。これは、等しい部分の無関心と誰も求めないポイントを証明したいという欲求の産物です。楽しむ!
pip install -r requirements.txt
pre-commit install(オプション)ロジックを理解するには、ここですべてのプロンプトをお読みください。
LLMプロバイダーのAPIキーを環境変数として構成します(端末のDirecltyまたは.envファイルを使用)。 Openaiまたは人類のキーを使用することをお勧めします。
希望するモデルとゲーム設定を使用してconfig/default_config.yamlを調整します。 run_idを使用して、別のランを別々のフォルダーに保存します。そうでない場合は、結果フォルダーにタイムスタンプで名前が付けられます。主なフィールドは、 model 、 target_length (秘密番号の数桁8 )、 num_concurrent_games (笑いやすいTPS API制限2 10するために。
ベンチマークを実行し、すべての実行の結果を視覚化します。
python run_benchmark.py
python scripts/visualize_results.py結果は、HTML(追加のプロット付き)およびMarkdownで利用可能になります。
ベンチマークは、3つの重要な側面でLLMを評価します。
結果は、完全なゲーム履歴(会話ログなど)と詳細な分析のための構成で保存されます。
このプロジェクトでは、コードフォーマットにはブラック(線の長さ:100)とISORTを使用します。コミット前のフックは、チェックしてコードの品質を確保します。
マニュアルチェックを実行します:
pre-commit run --all-filesテストを実行します(はい、ゲームロジック、回答と検証の回答に関するテストがあります):
python -m pytest . -v