Мини-рамская работа для оценки производительности LLM на игре по номеру «быков и коров», поддерживающая нескольких поставщиков через Litellm.
Примечание
TLDR: Bulls и Cows-это игра с кодом для двух игроков. Игрок пишет 4-значный секретный номер. Цифры должны быть разными (например, 1234 ). Затем другой игрок (в этом случае LLM) пытается угадать секретный номер (например, 1246 ). Для каждого предположения возвращается информация о количестве совпадений. Если соответствующие цифры находятся в их правом положении, они являются «быками» (два быка в этом примере: 1 и 2 ), если в разных положениях они являются «коровами» (одна корова, 4 ). Правильное решение требует рассуждения о том, чтобы подумать о следующем хорошем предположении и в контексте, чтобы узнать о прошлых ответах. Доказано, что любой 4-значный секретный номер может быть решен в течение семи ходов.


| Модель | Игры | Скорость успеха | AVG поворачивается (только успех) | Отказы формата (повороты) |
|---|---|---|---|---|
| OPENAI/O1-MINI-20124-09-12 | 25 | 60,0% [40,7%; 76,6%] | 9,1 ± 2,7 | 23,1% |
| OpenRouter/Anpropic/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-20124-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 на тесты, чтобы достичь более точных результатов и сделать CIS более уже, пожалуйста, не стесняйтесь добраться до меня или открывать пиар с вашими результатами.
GUESS: 1234 (определено в файле подсказок).strip() был добавлен для решения этого).o1-mini , часто забывает о форматировании правил и пытается добавить смелый акцент к ответу. Такое поведение считалось неприемлемым и считалось ошибкой и потраченным впустую поворотом, поскольку в инструкции явно указывается требуемое форматирование.o1-mini ).3 цифры (отладочная версия: меньше поворотов, более короткие рассуждения):
openai/gpt-4o-mini-2024-07-18 : 283K CACHED + 221K UNCACHED + 68K Вывод = 0,1 долл. США ( рекомендуется для отладки )
openai/gpt-4o-2024-08-06 : 174K CACHED + 241K UNCACHED + 56K Вывод = 1,38 долл. США
openai/gpt-4-turbo-2024-04-09 : Неизвестно = $ 6,65
openai/o1-mini-2024-09-12 : 0K CACHED + 335K UNCACHED + 1345K Вывод = 17,15 долл. США
anthropic/claude-3-haiku-20240307 : 492K вход + 46K Выход = 0,18 долл. США
4 цифры (основная версия):
openai/gpt-4o-mini-2024-07-18 : 451K CACHED + 429K UNCACHED + 100K Выход = 0,15 долл.
openai/gpt-4o-2024-08-06 : 553K CACHED + 287K UNCACHED + 87K = 2,29 долл.
(25 игр) openai/o1-mini-2024-09-12 : 0K CACHED + 584K UNCACHED + 1815K Вывод = 23,54 долл. США.
anthropic/claude-3-5-haiku-20241022 : 969K вход + 90K Вывод = 1,42 долл. США
openrouter/anthropic/claude-3.5-sonnet (New): Неизвестно = 5,2 долл. США
Эта структура появилась благодаря любопытному комментарию от подписчика моего канала Telegram. Они утверждали, что протестировали различные LLM в игре быков и коров, заключив, что никто не может решить его, и, следовательно, LLM не могут рассуждать. Заинтригованный, я попросил примеры этих так называемых «неудач», только чтобы сказать, что чаты были удалены. Удобный. Позже они упомянули о попытке O1-Preview, который, по-видимому, решил его-примерно в 20 ходах, далеко от 7 шагов, которые считаются оптимальными.
Тем временем я искал оправдание, чтобы экспериментировать с OpenHands, и что может быть лучше, чем бросить вызов Copilot, чтобы раскрутить эталон LLM с нуля? После трех вечеров нерешительных усилий (я играл в Stalker 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 (чтобы обойти смехотворные ограничения API TPS. Например, для антропного уровня 2 я не рекомендую устанавливать это значение выше 2 , в то время как Openai легко мог поддержать 8 - 10 параллельных игр).
Запустите эталон и визуализируйте результаты всех прогонов:
python run_benchmark.py
python scripts/visualize_results.pyРезультаты будут доступны в HTML (с дополнительными сюжетами) и намечкой.
Эталон оценивает LLMS по трем ключевым аспектам:
Результаты сохраняются с полной историей игр (включая журналы разговоров, например, здесь) и конфигурации для подробного анализа.
Проект использует черную (длина линии: 100) и изборки для форматирования кода. Крюки с предварительной коммерцией обеспечивают качество кода, проверяя:
Запустить ручные проверки с:
pre-commit run --all-filesЗапустите тесты (да, есть тесты на игровой логике, ответ на анализ и валидацию):
python -m pytest . -v