Battle test на русском и английском: цена, качество и артефакты — открытый лидерборд

127 баллов из 100. Не опечатка.
Qwen выступал судьёй в нашем тесте LLM-моделей. Оценивал выводы других моделей честно — плюс-минус. Но когда дело дошло до оценки Qwen-модели, судья щедро насыпал баллов сверх шкалы. Слепая оценка, без имён — а результат всё равно раздут.
Мы потом нашли исследование, которое объясняет механизм: модели предпочитают текст с низкой perplexity — то есть текст, похожий на их собственный. Узнают «свой почерк», даже если не знают автора. Но это мы поняли потом. А тогда просто смотрели на цифру 127 и думали: какого хрена…
Это был момент, когда стало понятно — стандартные подходы к оценке LLM не работают. Но ещё раньше стало понятно другое: публичные бенчмарки не отвечают на вопрос, который нас волнует больше всего. Не «какая модель умнее». А какую модель поставить в production, чтобы она генерировала контент для клиентов — и не съела весь бюджет.
Мы для клиента генерируем образовательные уроки. Сотни тысяч API-вызовов. Каждый лишний цент на вызов — это тысячи долларов в месяц. Но и взять самую дешёвую модель нельзя — мы делаем образовательный контент, а не инфоцыганщину. Формула SPIN, которая неправильно расшифрована, или галлюцинация про несуществующий кейс — и урок идёт в мусор вместе с доверием клиента. Выбор модели — это всегда trade-off между «не разориться» и «не опозориться».
Почему MMLU и HumanEval бесполезны, когда вам нужен контент
Все знают, какая модель лучше кодит. Есть LMSYS Chatbot Arena, есть HumanEval, есть Aider Polyglot. Для разговорных способностей есть EQ-Bench. Для кода — решено. Для «общего интеллекта» — тоже неплохо. А вот когда LLM генерирует не код и не чат-ответы, а контент для людей — уроки, отчёты, коммерческие предложения — начинается terra incognita. Ни один публичный бенчмарк не скажет, какая модель напишет лучший урок по B2B-продажам на русском языке. Какая не вставит китайские иероглифы посреди абзаца. И за какую цену.
Три конкретные проблемы.
Абстрактные задачи. MMLU тестирует знание фактов. HumanEval — генерацию кода. GSM8K — арифметику. Никто не тестирует: «напиши полноценный урок на 3000 слов с введением, четырьмя секциями, практическими упражнениями, Mermaid-диаграммами и LaTeX-формулами». А это именно то, что нам нужно в production.
95% бенчмарков — на английском. Модель может идеально писать на английском и при этом вставлять «静态的 бухгалтерский учет» в русский текст. Мы это обнаружили у 7 из 18 моделей. Ни один публичный бенчмарк это не поймает — они просто не тестируют на русском.
Цены нет в уравнении. GPT-5.4 лидирует на всех бенчмарках. Класс. Но $0.10 за вызов. При 10 000 уроков в месяц — $1000. Qwen3 235B набирает на 9% меньше баллов, но стоит $0.0008 за вызов. Те же 10 000 уроков — $8. Разница $992 в месяц. Ни один бенчмарк не покажет эту математику.
Кстати, с кодом эту проблему уже документировали. Команда Cursor опубликовала CursorBench — свой внутренний бенчмарк для кодовых моделей. Оказалось, что результаты на их реальных задачах сильно расходятся с тем, что показывают публичные лидерборды. OpenAI подтвердили: около 60% задач SWE-bench содержали дефектные тесты, а frontier-модели попросту зазубрили правильные патчи. Бенчмарк измерял не качество модели, а качество запоминания.
С кодом это уже доказали. С контентом — та же проблема, только её никто не измерял. Пока мы не попробовали.
Battle Test: как это устроено
Мы не изобретали «революционную методологию оценки LLM» (боже упаси). Мы решали свою задачу — выбрать модель для генерации образовательных уроков в production-пайплайне — и по ходу дела получили инструмент, который можно адаптировать под что угодно. Версия текущего теста — 4.2. Первые три были хуже. Четвёртая — терпима. Это итеративный процесс, не откровение.
Почему именно уроки? Образовательный контент — идеальный стресс-тест. Урок имеет жёсткую структуру: введение, разделы, итоги, упражнения — легко проверить, всё ли на месте. Нельзя отделаться общими фразами — нужны формулы, кейсы, конкретные числа. Формулы типа EOQ или SPIN либо правильные, либо нет — галлюцинации видны сразу. И 3000 слов — модель не может спрятаться за короткими ответами.
Если модель проходит этот тест, она потянет и коммерческие предложения, и аналитические записки, и клиентские отчёты.
Каждой модели отправляем XML-структурированный промпт (~1000 токенов) с инструкцией: написать полный урок. Temperature 0.65, max_tokens 16384. Пять разных бизнес-тем из разных доменов:
# | Тема | Домен |
|---|---|---|
1 | B2B-продажи: SPIN, Challenger, MEDDIC | Commercial |
2 | Финансовое планирование и cash flow | Finance |
3 | Управление рисками в цепочках поставок | Operations |
4 | Стратегическое ценообразование | Commercial |
5 | Управление талантами и удержание | HR |
Пять тем, а не одна — потому что одна точка данных ничего не значит. Это как оценивать футболиста по одному удару. Одна модель может блестяще написать про продажи и провалить финансы. Пять тем дают стабильную картину.
После генерации — автоматические проверки. CJK-символы в русском тексте (китайские, японские, корейские иероглифы). Заголовки, скопированные из промпта — prompt plagiarism. Теги <think>, фразы «As an AI…», битый Mermaid-синтаксис. Всё это автоматика ловит за секунды.
А вот что автоматика не ловит — англицизмы. Китайский иероглиф в русском тексте — это однозначный артефакт, регулярка справится. Но «performance management» в тексте про HR — это норма или модель не смогла перевести? А «cash flow» в тексте про финансы? Мы до сих пор спорим, где провести границу. Пока решаем вручную, случай за случаем. Честная нерешённая проблема.
Финальная оценка — Claude Opus 4.6 в режиме максимального reasoning. Единственный судья. Почему единственный — расскажу отдельно, это заслуживает своей секции.
Критерии оценки: семантическое качество (35 баллов), практическая ценность (25), соответствие заданию (15), отсутствие галлюцинаций (10), структура и навигация (10), визуализация (5). Плюс бонусы за уникальные инсайты и штрафы за артефакты.
И отдельно — Value Score. Формула, которая учитывает и качество, и цену:
quality_norm = model_score / max_score cost_norm = 1 - (log(model_cost) - log(min_cost)) / (log(max_cost) - log(min_cost)) value = 70% × quality_norm + 30% × cost_norm
Логарифм здесь не для красоты. Это решение реальной проблемы. С линейной шкалой GPT-5.4 (0.016) получали почти одинаковый cost_norm (~0), потому что обе «бесконечно дороже» Qwen3 235B ($0.0008). Разница в 6 раз между ними исчезала. Логарифмическая шкала даёт GLM-5 справедливые 0.46 против 0.13 у GPT-5.4. Середина перестаёт быть мёртвой зоной, и формула начинает отражать реальность: модель за $0.016 — это не то же самое, что модель за $0.10.
Один судья лучше трёх
Мы начинали с трёх судей. Claude с двойным весом, DeepSeek как primary judge, Qwen как secondary. Казалось логичным — коллегиальная оценка, как в суде. Три мнения лучше одного.
Нет. Три мнения хуже одного, если одно из них систематически врёт.
Вот что мы обнаружили. LLM-судьи раздувают баллы на 15–30 пунктов. Не случайно, не иногда — систематически. Secondary judge (Qwen) оценивал Qwen-модели на 127 из 100 — это даже не bias, это абсурд. При расхождении больше 15% мы добавляли tiebreaker (Gemini), что ещё сильнее размывало результат.
Конкретный пример: MiMo V2 Flash. В февральском тесте с тремя судьями — 100 баллов. Ура, Tier S, лидер! В апрельском тесте с Claude-only — 76 баллов. Разница 24 балла — это пропасть между «ставим в production» и «подождём следующую версию».
Есть и научная подкладка. Исследование «Play Favorites» (arxiv 2508.06709) измерило self-bias у LLM-судей: GPT-4o завышает оценки своих выводов на ~10%, Claude — на ~25%. Механизм простой: модели предпочитают текст с низкой perplexity, то есть текст, стилистически похожий на их собственные генерации. Узнают «родной почерк» даже в слепом тесте.
Наш вывод: лучше один честный судья с известным bias, чем три, из которых один врёт, а ты не знаешь когда. (Кстати, это напоминает ситуацию с code review: один строгий ревьюер полезнее, чем трое, которые ставят approve не глядя.)
Да, Claude оценивает сам себя в этом тесте. Мы это не прячем — в таблице стоит звёздочка. Claude Opus 4.6 набрал 96 баллов, Claude Sonnet 4.6 — 95. Возможно, реальные цифры на 5–10% ниже. Мы осознанно приняли этот trade-off: один судья с предсказуемым bias лучше, чем зоопарк судей с непредсказуемыми. А в production-пайплайне мы не используем Claude для оценки Claude-выводов — там другая модель.
18 моделей: кто победил
Полный лидерборд по качеству (Claude Score, 100-балльная шкала):
# | Модель | Баллы | Tier | Avg слов | Артефакты |
|---|---|---|---|---|---|
1 | GPT-5.4 | 97 | S | 3 451 | CLEAN |
2 | Claude Opus 4.6 | 96 | S | 2 676 | CLEAN* |
3 | Claude Sonnet 4.6 | 95 | S | 2 618 | CLEAN* |
4 | Qwen 3.6+ | 94 | A | 2 435 | CJK×1 |
5 | GPT-5.2 | 93 | A | 2 732 | EN headers |
6 | GLM-5.1 | 91 | A | 2 351 | CJK×1 |
7 | GLM-5 | 90 | A | 2 505 | CJK×1 |
8 | Qwen3 235B | 88 | A | 2 410 | CLEAN |
9 | MiMo V2 Pro | 88 | A | 2 027 | CLEAN |
10 | Qwen 3.5+ | 87 | A | 2 241 | CLEAN |
11 | MiniMax M2.5 | 86 | A | 2 059 | CLEAN |
12 | DeepSeek V3.2 | 83 | A | 2 076 | CJK×1 |
13 | MiniMax M2.7 | 83 | A | 2 230 | CJK×2 |
14 | Gemma 4 31B | 82 | A | 1 700 | CLEAN |
15 | Kimi K2 | 81 | A | 1 449 | CJK+trunc |
16 | MiMo V2 Flash | 76 | B | 2 019 | CJK×1 |
17 | GPT-OSS 120B | 73 | B | 1 518 | CLEAN |
18 | MiMo V2 Omni | 70 | B | CJK×5 |
*self-evaluation bias — Claude оценивает себя
А теперь — Value Score. Та самая формула «цена/качество», ради которой всё затевалось:
# | Модель | Value | Баллы | $/вызов |
|---|---|---|---|---|
1 | Qwen3 235B | 93.5 | 88 | $0.0008 |
2 | Gemma 4 31B | 85.4 | 82 | $0.0016 |
3 | DeepSeek V3.2 | 84.7 | 83 | $0.0021 |
4 | GPT-OSS 120B | 82.1 | 73 | $0.0009 |
5 | MiniMax M2.5 | 81.6 | 86 | $0.0056 |
… | ||||
7 | GPT-5.4 | 70.2 | 97 | $0.1014 |
8 | Claude Opus 4.6 | 69.4 | 96 | $0.2101 |
GPT-5.4 — лидер по качеству. Седьмой по value. Claude Opus — второй по качеству. Восьмой по value. А Qwen3 235B — восьмой по качеству и первый по value. В 130 раз дешевле GPT-5.4 при разнице в 9 баллов.
Оговорка про Qwen3 235B: $0.0008 за вызов — это текущая цена на OpenRouter, и она аномально низкая. Обычно эта модель стоит дороже. Цены на OpenRouter плавают — провайдеры периодически устраивают промо-периоды, и Qwen3 235B сейчас явно в таком. Value Score пересчитается, когда цена вернётся к нормальной. Но даже при цене в 5–10 раз выше она останется в топ-3 по value — качество у неё реальное, это не скидочный артефакт.
Для тех, кто строит production-пайплайны — это не академический интерес. Это разница между $1000 и $8 в месяц за 10 000 генераций.
Отдельно про колонку «Avg слов». Мы просили 3000 слов. GPT-5.4 стабильно выдаёт 3400+ — единственная модель, которая последовательно перевыполняет задание. Kimi K2 обрезает на 1449 словах — у неё жёсткий лимит в 4096 токенов на вывод, и длинные уроки просто обрубаются. Gemma 4 при своих 31B параметрах — 1700 слов, но каждое слово по делу. А MiMo V2 Omni выдаёт 1852 слова с пятью CJK-артефактами — то есть и коротко, и с мусором.
Что мы не ожидали найти
Китайские иероглифы как системная болезнь. 7 из 18 моделей вставляют CJK-символы в русский текст. Не по ошибке в одном месте — системно, воспроизводимо, иногда в каждой из пяти тем. MiMo V2 Omni — рекордсмен: «静态的 бухгалтерский учет» появляется во всех пяти уроках. DeepSeek V3.2 выдаёт «в内部нем обсуждении». MiniMax M2.7 — «典型ный пример». GLM-5 умудрился вписать «成本低ых» вместо «низкозатратных».
Это не баг конкретной модели. Это системная проблема моделей, обученных на мультиязычных корпусах с преобладанием китайского. Токенизатор иногда «путает» языковые границы. Для англоязычных задач это не проявляется. Для русских — проявляется регулярно. И ни один публичный бенчмарк этого не покажет, потому что ни один не тестирует генерацию длинных текстов на русском.
GPT-5.2 копирует промпт. Во всех пяти темах GPT-5.2 вставляет инструкции из промпта прямо в заголовки: «## Введение — Hook (statistic) + preview (100-150 words)». Это не заголовок — это строка из XML-промпта. Prompt plagiarism. Модель за $0.03 не отличает инструкцию от контента. Серьёзно?
Gemma 4 31B удивила всех. 31 миллиард параметров — в разы меньше остальных участников. Но 82 балла и Tier A. Чистый русский, ни одного артефакта. И единственная модель из 18, которая в уроке по ценообразованию упомянула метод Ван Вестендорпа — психологическую технику определения оптимальной цены. Остальные 17 прошли мимо. При её размере каждый токен Gemma несёт больше смысла, чем у моделей в 10 раз крупнее.
MiMo V2 Pro — нестабильна. На одной теме — 95 баллов, Tier S. На другой — 80 баллов и 1529 слов вместо ожидаемых 3000. Разброс 15 баллов — максимальный среди топ-10. Если поставить её в production, в одном уроке из пяти клиент получит сокращённую версию. Battle test из пяти тем ловит такую нестабильность. Тест из одной — нет.
Англицизмы хуже иероглифов. Про CJK я уже сказал — регулярка, автопроверка, готово. А вот с английскими вставками всё сложнее. «Supply chain» в русском тексте — это норма, устоявшийся термин. «Key performance indicators» — тоже скорее норма, хотя можно было написать «ключевые показатели эффективности». А «Let’s consider the following approach» посреди русского абзаца — это уже артефакт, модель переключилась на английский.
Проблема в том, что граница размыта. Автоматическая проверка на англицизмы даёт кучу ложных срабатываний — она не отличает IT-термин от языкового сбоя. Мы пока решаем это ручной проверкой с whitelist’ом допустимых английских терминов, но whitelist растёт с каждым тестом. Это открытая задача, и если у кого-то есть идея получше — я серьёзно.
$95 и зачем мы это делаем
Все тесты — за наш счёт. $95 на API-ключе OpenRouter. Понимаю, звучит как немного — но это именно сожжённые деньги. Не бюджет клиента, не грант, не R&D-статья в отчёте. Личные деньги, потраченные на то, чтобы 18 моделей сгенерировали десятки уроков, которые никто не будет читать, — только для того, чтобы сравнить результат. И $95 — это не один прогон. Финальный тест 18 моделей обошёлся примерно в $3. Остальные $92 — десятки итераций: отладка промптов, калибровка судей, эксперименты с тремя судьями (которые мы потом выбросили), тестирование старых моделей, которые в финальный лидерборд не попали. Путь к $3 стоил в 30 раз дороже самого теста.
Мы делаем это потому, что сами строим продукт, где LLM генерирует контент для клиентов. Нам нужно знать, какую модель ставить. Публичные бенчмарки этого не говорят — мы проверили.
Результаты мы не прячем. У нас есть интерактивный лидерборд с фильтрами по провайдерам, тирам и датам — но ссылку на него я сознательно не ставлю сюда. Хабр не любит, когда статьи превращаются в воронку на внешний сайт, и я это уважаю. Кому реально интересно покопаться в данных — ссылка на лидерборд лежит в этом посте в Telegram. Там же обновления после каждого нового прогона: добавляем модели, обновляем цены, пересчитываем value.
Нас периодически спрашивают: «А зачем вам это?». Затем, что мы сами выбираем модель для production каждый месяц. Рынок LLM меняется быстрее, чем успеваешь обновить конфигурацию. Модель, которая была лидером по value в феврале, может потерять позицию в апреле, потому что вышла новая версия конкурента по цене в два раза ниже. Тестирование — это не разовый проект, это рутина. И раз уж мы всё равно прогоняем тесты — почему бы не поделиться результатами.
Хотите, чтобы протестировали конкретную модель, которой нет в лидерборде? Пишите @maslennikovig — добавим в следующий прогон.
Как адаптировать под свои задачи
Наш тест заточен под образовательный контент, но подход работает для любой генерации. Замените наши пять бизнес-тем на свои реальные сценарии — то, что модель будет генерировать в production. Не абстрактные задачи, а конкретные. «Напиши коммерческое предложение на пять страниц для логистической компании» — вот это тест. «Сгенерируй текст» — нет.
Судью берите одного, и не того, кого тестируете. Мы прошли через эксперимент с тремя — не повторяйте. LLM-судьи раздувают баллы для «своих», даже в слепом тесте. Один судья с известным bias — предсказуем. Три с неизвестным — лотерея.
Артефакты проверяйте автоматически. CJK-символы, prompt plagiarism, теги <think> — всё это ловится регуляркой и должно быть в пайплайне ещё до оценки качества. Если модель вставляет иероглифы — не имеет значения, насколько хорош текст вокруг них. Клиент видит «典型ный пример» и закрывает страницу.
Стоимость считайте из реальных API-ответов: usage.total_tokens × price_per_token. Прайс-листы на сайтах провайдеров — это ценник до скидок и лимитов. Реальный cost-per-call зависит от длины вывода, а она у каждой модели разная. GPT-5.4 стабильно генерирует 3400+ слов — дороже не только из-за цены за токен, но и из-за длины ответа. Qwen3 235B генерирует 2400 слов — экономия и на цене, и на объёме.
Для value score — логарифмическая шкала. Линейная превращает всё, что дороже копейки, в одинаковое «дорого». А если вы не хотите считать value самостоятельно — используйте нашу формулу. Она в статье, лицензий не требуется.
Вместо морали
Лучший бенчмарк — тот, который тестирует вашу задачу. MMLU не скажет, справится ли модель с уроком по supply chain management на русском. HumanEval не скажет, вставит ли она иероглифы в текст для клиента. LMSYS не скажет, сколько это будет стоить при 10 000 вызовов в месяц.
Мы построили свой тест. Потратили $95, нашли кучу сюрпризов, и теперь знаем, что ставить в production. Если вы строите что-то, где LLM генерирует контент для людей — постройте свой бенчмарк. Это проще, чем кажется: пять реальных задач, один судья, автоматические проверки на артефакты, формула value score. Всё.
А если хотите начать с наших данных — они открыты. Без регистрации, без подписки, без «оставьте email».
Лидерборд и обновления — в канале. Инструменты — на GitHub. Вопросы, предложения по моделям для тестирования, или просто поговорить — @maslennikovig.
