一个小型框架,用于评估公牛和牛号猜测游戏中LLM的性能,通过Litellm支持多个提供商。
笔记
TLDR:公牛和牛是针对两个玩家的代码游戏。玩家写一个四位数的秘密号码。数字必须全部不同(例如, 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-thrinctuct | 50 | 8.0% [3.2%; 18.8%] | 9.5±3.3 | 3.0% |
| OpenRouter/Google/Google/Gemini-Pro-1.5 | 50 | 8.0% [3.2%; 18.8%] | 8.0±4.1 | 0.1% |
| OpenRouter/Google/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),因此,置信区间很广。如果您想在测试上花费100-200美元的API积分以取得更准确的结果并使CIS缩小缩小,请随时与我联系或以您的结果打开PR。
GUESS: 1234 (在提示文件中定义).strip()已添加以解决此问题)。o1-mini经常忘记格式化规则,并试图为响应增添大胆的重点。这种行为被认为是不可接受的,被视为误差和浪费的转弯,因为指令明确指定了所需的格式。o1-mini行为的响应中的降价格式)。3位数字(调试版本:较少的回合,较短的推理):
openai/gpt-4o-mini-2024-07-18 :283K缓存 + 221K未缓解 + 68K输出= $ 0.1(建议调试)
openai/gpt-4o-2024-08-06 :174K缓存 + 241K未舒适 + 56K输出= $ 1.38
openai/gpt-4-turbo-2024-04-09 :Unknown = $ 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缓存 + 584K未舒适 + 1815k输出= $ 23.54
anthropic/claude-3-5-haiku-20241022 :969K输入 + 90k输出= $ 1.42
openrouter/anthropic/claude-3.5-sonnet (新):Unknown = $ 5.2
由于我的电报频道订阅者的奇怪评论,该框架出现了。他们声称已经在公牛和牛游戏中测试了各种LLM,得出的结论是,没有人可以解决它,因此,LLMS无法推理。我很感兴趣,我询问了这些所谓的“失败”的例子,只是被告知聊天被删除了。方便的。后来,他们提到了尝试O1-preiview显然确实解决了它 - 大约有20个动作,远离被认为是最佳的7个动作。
同时,我一直在寻找借口尝试开放式手机,还有什么比挑战Copilot从头开始旋转LLM基准的更好方法呢?经过三个夜晚的努力(我同时在玩《缠扰者2》)之后,这个基准是诞生的,这是一种相同部分冷漠的产物,并且渴望证明没有人要求的观点。享受!
pip install -r requirements.txt
pre-commit install(可选)要了解逻辑,请在此处阅读所有提示。
将LLM提供商的API键配置为环境变量(在您的终端中或使用.ENV文件中的dieclty)。我建议使用OpenAI或Anthropic Keys,然后使用OpenRouter。
使用所需的型号和游戏设置调整config/default_config.yaml 。使用run_id将不同的运行存储在单独的文件夹中 - 否则结果文件夹将用时间戳命名。主要字段是: model , target_length (秘密编号中的数字有8 2 ), num_concurrent_games (要绕开可笑的10 API限制。
运行基准并可视化所有运行的结果:
python run_benchmark.py
python scripts/visualize_results.py结果将在HTML(带有其他图)和降价中提供。
基准测试在三个关键方面评估LLM:
结果可以保存完整的游戏历史记录(包括对话日志,例如此处)和配置以详细分析。
该项目使用黑色(线长度:100)和ISORT进行代码格式。预加压钩通过检查确保代码质量:
运行手册检查:
pre-commit run --all-files运行测试(是的,有关于游戏逻辑,答案解析和验证的测试):
python -m pytest . -v