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

Когда судья и участник — одно лицо: Qwen ставит себе 127 из 100
LLM-судья оценивает сам себя. Что могло пойти не так?

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.10) и GLM-5 (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.