Лидерборд локальных LLM на знания PHP-стека

Отчёт подготовлен с 6 по 14 октября 2026 года в ZCode при содействии моделей GLM-5.3 и GLM-5.3-Flash.

Предыстория от автора
Меня заблокировали в OpenAI по региональному признаку после двух лет подписки на тарифах Plus и Pro. В один день исчезли доступ к официальному API, ChatGPT и Codex CLI, история чатов, настроенные GPTs и проекты. Но грустную историю можно превратить в новую, интересную и полезную: посмотреть альтернативы, не облачные, то, что можно держать локально. Пока была подписка, я туда даже не заглядывал: давным-давно пробовал, и модели тогда были «тупенькие». С тех пор в моём проекте появилась RTX 5090 в хорошем окружении, я был наслышан о новых Qwen и решил посмотреть, что там сейчас. Первым шагом я решил узнать, что вообще знают локальные модели о PHP, Symfony и PostgreSQL, то есть о стеке моего проекта TasK.

Я не ML-инженер и не представляю, как «правильно» тестировать модели. Зато у меня есть опыт проведения собеседований, и родилась идея: пусть более умная модель прособеседует локальные как кандидатов, а я посмотрю результат. Мы придумали методологию и решили её потестить. Я накидывал модели, она спрашивала и оценивала. Было странно: локальные отвечали достаточно качественно, я такого не ожидал. Тогда и появились цифровые метрики, чтобы сравнивать знания без впечатлений.

Первая мысль про LLM-судью не сработала: анализ выходил поверхностный, многое пропускалось. Решил попробовать decision-модели для судейства качества, сейчас на хайпе Jev, но выбрал локальный Clef, он, кстати, оказался не хуже. Повозились с судейством, получили более-менее результат и провалидировали его на SOTA-моделях: те точно хорошо знают PHP. После валидации поймали ряд инсайтов и проблем, добавили судью GLM-5.3-Flash туда, где Clef не справлялся. Так сложилась методология, свой PHP-лидерборд моделей. Отчёт по нему мы здесь и представляем.

Напомню: это лидерборд на знания, а не на умение писать код. Версия пробная, будем развивать. Если есть идеи, предложения или желание помочь, присоединяйтесь: электронная почта dmitry@prikotov.ru · Telegram: @prikotov.

id сессии ZCode: sess_ba5167d4-12bc-452c-afbe-3d117b4d1667.

Всё как у людей ©

Мы провели техническое собеседование на роль PHP-бэкендера. Участники: локальные модели на потребительской видеокарте, облачные флагманы Anthropic, OpenAI и DeepSeek, российские GigaChat (Сбер) и YandexGPT, всего 16 моделей. Вопросы покрывают наш рабочий стек: PHP 8, Symfony, Doctrine, PostgreSQL, DDD, чистую архитектуру, тестирование, git. Формат прост: один чат, один вопрос, один ответ, без инструментов, файлов и system prompt. Так мы изучаем базовые знания модели, то, что у неё зашито в весах при обучении, а не то, что ей могло бы дать окружение.

Ответы судит дешёвая decision-модель, а контрольные вердикты выносит изолированный судья GLM-5.3-Flash, который сверяет спорные утверждения запуском кода на PHP 8.5 и запросами к настоящему PostgreSQL.

Этот отчёт для тех, кто выбирает модель под задачи и понимает ограничения локальных моделей: до облачных флагманов они не дотягивают, поэтому процесс приходится подстраивать. Как и с людьми, с моделями применима модель ситуационного лидерства Херси и Бланшара: сильной достаточно короткой постановки, слабой нужны детальный контекст и проверки. Рейтинг ниже показывает силу каждой модели по разделам стека, чтобы понимать, как подходить к ней в конкретной задаче.

1Главные выводы

Шкала баллов 0–4. 0 — ответ фактически неверен; 1 — отдельные верные крупицы; 2 — верная канва без глубины; 3 — верно, с глубиной и примерами; 4 — то же с нюансами и точными деталями.
Баллы в выводах ставит судья GLM-5.3-Flash по вопросам на знания; где судья модель не проверял, балл clef (дешёвый судья, ярус 1).
Диапазоны вроде 3.8–4.0 — разброс между моделями группы, а не погрешность. Сводная таблица и источник каждого балла — в §4.
Облачные SOTA-модели набирают 3.85–4 балла из 4Балл по вопросам на знания: Claude Opus 5.5 (4.0), GPT-6.1 Sol (3.95), GPT-6 Luna (3.88), Claude Haiku 5.5 (3.85). Лучшая локальная muse-glimmer 28B: 3.53, на 0.3 балла ниже SOTA; худшая ornith-1.5 9B: 2.43. Лучшая русская GigaChat-3 Ultra: 3.38, худшая YandexGPT Pro 5: 2.02.
Модели вплетают выдумки в верные ответыПо вопросам на знания: у GPT-6.1 Sol и GPT-6 Luna галлюцинаций нет, у Claude Opus 5.5 и Claude Haiku 5.5 по 2 из 30 (7%); у локальных qwen3.8 27B и ornith-1.5 35B галлюцинации в 40–47% ответов (12 и 14 из 30), у ornith-1.5 9B — 67% (20 из 30). DeepSeek V4.1 Flash при балле уровня облака — 33% (10 из 30). Обычно это одна деталь в остальном верном ответе, поэтому по баллам разница почти не видна.
Провокации: кто вскрывает, кто ведётсяПровокация «Для чего в PostgreSQL FORCE INDEX?» построена на ложной предпосылке: в PostgreSQL директивы FORCE INDEX не существует, она есть только в MySQL. Таких провокаций в собесе три, и числа показывают, сколько из них вскрыла модель: облако и muse-glimmer все три, medgemma одну (уверенно объяснила, зачем нужна несуществующая директива), gemma4-e2b ни одной.
Режим мышления сильнее промптингаВнутренние рассуждения дают ornith-1.5 35B +0.65 балла и 100% вскрытых провокаций; системный промпт «роль+CoT+недоверие» дал +0.32 (§6).
Негативный контроль подтвердил чувствительность шкалыМедицинский файнтюн medgemma 27B набрал балл 2.67, галлюцинации в 47% ответов (14 из 30); крошка gemma4 e2b 4.6B получила балл 2.42, галлюцинации в 23% (7 из 30). Шкала различает слабость любого происхождения.
Полное интервью: от $0.02 до $5.82SOTA-облако: от GPT-6 Luna $0.0300 до Claude Opus 5.5 $5.82. DeepSeek V4.1 Flash — $0.25. Локальные: $0.02–0.09 (электричество и амортизация). Русские: Сбер физлицу ₽0 (freemium), YandexGPT Pro 5 — ₽400 за сессию. Кэш экономит до 70%, детали в §8.

2Методика

Скриптованное интервью, одинаковые условия для всех, судейство с проверкой фактов.

Интервью

Собеседование сделано в виде скриптованного интервью из 35 открытых вопросов: PHP 8, типы и ловушки (3 вопроса), ООП (1), Symfony (3), Doctrine (3), PostgreSQL (2), DDD и чистая архитектура (4), тестирование и конкурентность (2), процесс работы, включая git (8), плюс разминка с самооценкой знаний (1), три провокации с ложной предпосылкой, два мини-код-ревью и финал собеса (3). У ключевых вопросов запланированы уточнения: шесть уточнений, итого 41 ответ. Вопросы зафиксированы в вопроснике backend-роли и одинаковы для всех кандидатов и прогонов.

Ведёт интервью только скрипт-раннер (runner.py): один собес — это один чат, раннер читает вопросник и шлёт вопросы по одному в API модели, каждый ответ дописывается в историю чата. Кандидат видит только этот диалог: без system prompt, файлов и инструментов. Уточнения заранее прописаны в вопроснике у своих вопросов и одинаковы для всех моделей: раннер отправляет их дословно после базового ответа, не подстраивая под ответ кандидата. Если кандидат вместо ответа сам переспрашивает (короткая реплика, оканчивающаяся вопросом), раннер за весь собес не более одного раза отвечает стандартной репликой «Допущения делай сам, отвечай так, как считаешь правильным». За все прогоны это не сработало ни разу: кандидаты не переспрашивают, а заканчивают развёрнутый ответ встречным вопросом, и раннер такое уточнением не считает.

Каждый прогон сохраняется в два файла: человекочитаемый транскрипт и сырая сессия session.json с полным массивом сообщений, ходом мышления и таймингами (пример транскрипта, пример сессии); судейство идёт по протоколам постфактум. Отдельного выбора роли нет: роль — это имя папки вопросника. Вопросник interview/roles/backend/questions.json задаёт роль backend, прогоны складываются в папку модели <модель>/backend/run-NN, существующие прогоны не перезаписываются.

Транспорт и изоляция прогонов: локальные модели опрашиваются с сервера ollama с выгрузкой из памяти до и после каждого прогона, чтобы кэш одного собеса не грел следующий; параметры генерации дефолтные, seed не фиксируется. Облачные SOTA ходят через OpenRouter (runner_openrouter.py) с reasoning effort low (сопоставимо с выключенным мышлением локальных), DeepSeek, GigaChat и YandexGPT через родные API провайдеров (runner_ru_cloud.py). Для каждой модели делается несколько независимых повторений одного и того же собеседования, прогонов (до пяти); показатели усредняются по прогонам. Постоянство меряется на двух уровнях: разброс средних прогонов показывает стабильность средней оценки модели, а разброс балла одного и того же вопроса между прогонами показывает постоянство отдельного ответа.

Оценка

Ответы оцениваются по протоколам постфактум, каждый ответ отдельно. У каждого вопроса есть чек-лист якорей: 🟢 зелёный свет (2–4 признака сильного ответа) и 🚩 красный флаг (1–2 признака слабого) (чек-листы всех вопросов); полные карточки эталона с зелёным светом, красными флагами, образцом ответа и шкалой 0–4 написаны вручную для двух вопросов как калибровка судейства (пример карточки). Сама оценка идёт в два яруса, от дешёвого судьи к дорогому.

Ярус 1: Decision-модель - clefлокально (дёшево и быстро), один запрос на анализ ответа: quality (балл 0–4), hallucination (галлюцинации), need_review (нужен ли более знающий судья), unsure (неуверенность), factcheck_zone (факт-проверка).
→
Ярус 2: LLM судья - GLM-5.3-Flashпо триггеру (need_review или hallucination > 0.3), один запуск на ответ: спорные факты проверяет запуском кода (PHP, PostgreSQL) и выносит вердикт.

Ярус 1 (score.py) оценивает каждый ответ изолированно, одним запросом: decision-модель clef получает вопрос и ответ кандидата и отвечает сразу на пять вопросов: quality (балл 0–4), hallucination (вероятность галлюцинаций), need_review (нужен ли более знающий судья), unsure (неуверенность в своей оценке), factcheck_zone (утверждения, требующие факт-проверки).

Ярус 2 (judge_glm.py) подключается по триггеру: need_review > 0.3 или hallucination > 0.3; при таких порогах делегирование вверх происходит для 41% ответов (качество триггера, точность и полнота — в §7). Судья GLM-5.3-Flash запускается изолированно на один вопрос-ответ, с якорями чек-листа этого вопроса; спорные утверждения он проверяет запуском кода через bash — PHP 8.5.11 (примеры кандидатов), PostgreSQL 17.7 (docker), а поведение фреймворков сверяет по знанию официальной документации Symfony, Doctrine, PostgreSQL: отдельного веб-инструмента у судьи нет, сетевой доступ через bash не блокируется, но системный промпт проверки фактов сводит к запуску кода. Возвращает вердикт: балл, признак галлюцинации, мотивировка.

Пример оценки ответа кандидата

Проследим путь одного реального ответа кандидата по обоим ярусам: провокация Q24 («Для чего в PostgreSQL используется FORCE INDEX?»), ответ muse-glimmer 28B из первого прогона.

Запрос к clef (score.py, реальный вызов; текст ответа кандидата сокращён):

POST /v1/systemone
{ "model": "clef",
  "state": "Ты оцениваешь ответ кандидата на техническом собеседовании
            PHP/Symfony/Doctrine/PostgreSQL/DDD-разработчика.

            ВОПРОС:
            Для чего в PostgreSQL используется FORCE INDEX и в каких случаях его применяют?

            ОТВЕТ КАНДИДАТА:
            В PostgreSQL **нет команды `FORCE INDEX`** и никогда не было.
            `FORCE INDEX`, `USE INDEX`, `IGNORE INDEX` — это хинты оптимизатора из MySQL.
            … (далее: философия cost-based планировщика, SQL-примеры SET STATISTICS,
            enable_*, частичный индекс)",
  "questions": {
    "quality":       { "type": "score",
                       "instructions": "Оцени качество ответа кандидата на вопрос собеседования",
                       "criteria": ["0 — ответ неверен, отсутствует или содержит грубые фактические ошибки",
                                    "1 — фрагментарный: отдельные верные тезисы без понимания связей",
                                    "2 — базовый: в целом верно, но поверхностно, без нюансов",
                                    "3 — уверенный: верно, со структурой, примерами и trade-offs",
                                    "4 — экспертный: верно и глубоко, с нюансами и границами применимости"] },
    "hallucination": { "type": "noul",
                       "instructions": "Содержит ли ответ выдуманные факты, несуществующие API/классы/методы или фальшивые источники?",
                       "criteria": { "false": "Выдуманного нет, факты корректны",
                                     "true":  "Есть выдуманные факты, API или источники" } },
    "need_review":   { "type": "noul",
                       "instructions": "Нужно ли передать этот ответ на проверку более знающему судье?
                                        Ответь «да», если в ответе есть утверждения, требующие
                                        факт-проверки по документации или запуску кода, или если
                                        ты не уверен, что сам можешь верно оценить этот ответ.",
                       "criteria": { "false": "Проверка старшей моделью не нужна: всё проверено мной уверенно",
                                     "true":  "Нужна проверка старшей моделью" } },
    "unsure":        { "type": "noul",
                       "instructions": "Есть ли у тебя неуверенность в том, что ты верно понимаешь правильность этого ответа?",
                       "criteria": { "false": "Уверен в оценке", "true": "Есть неуверенность" } },
    "factcheck_zone":{ "type": "noul",
                       "instructions": "Содержит ли ответ утверждения, которые нельзя оценить без
                                        сверки с документацией или запуска кода?",
                       "criteria": { "false": "Нет, всё оцениваемо по общим знаниям",
                                     "true":  "Да, есть такие утверждения" } } } }

Ответ clef (реальный): noul-поля — это вероятности от 0 до 1, не бинарные флаги.

{ "answers": { "quality":       { "score": 3.55, "confidence": 0.45,
                                    "probabilities": { "0": 0.01, "1": 0.03, "2": 0.04,
                                                       "3": 0.24, "4": 0.68 } },
               "hallucination": { "noul": 0.119 },
               "need_review":   { "noul": 0.146 },
               "unsure":        { "noul": 0.145 },
               "factcheck_zone":{ "noul": 0.313 } } }

Как читать. clef оценил ответ в 3.55 балла из 4: 68% вероятности за «экспертный» и 24% за «уверенный»; уверенность самого clef в балле умеренная, 0.45. Вероятность галлюцинаций 12%, эскалацию clef не просит: need_review 0.146 при пороге 0.3. Показательно, что factcheck_zone 0.313: третья часть вероятности за то, что в ответе есть утверждения, которые не проверить без документации или запуска кода, и всё же дешёвый судья на этом основании ответ не эскалирует.

Вердикт судьи яруса 2 на тот же ответ (hallucination здесь бинарный, true значит «есть хотя бы одна выдуманная деталь»; частичная выдумка не обнуляет балл, оценка качества и признак галлюцинации независимы):

{ "score": 4.0, "hallucination": false,
  "note": "Провокация с ложной предпосылкой распознана безошибочно: FORCE INDEX
           в PostgreSQL действительно нет (проверено по официальной документации,
           это хинты MySQL). … Все SQL-примеры и упомянутые GUC/каталоги реальны,
           выдуманных фактов и источников нет." }

Этот ответ кандидата триггеры наверх не отправили бы, и это правильное решение: сплошная перепроверка (ремарка ниже) показала, что LLM судья здесь почти ничего не добавляет, 4 против 3.55, галлюцинаций нет. В этом и замысел двух ярусов: дорогой судья подключается только там, где дешёвый оценщик не уверен. Где триггеры пока промахиваются, разбирает §7 на собранной эталонной разметке.

Вердикты каждого прогона лежат рядом с ним по пути <модель>/<роль>/judgments/ (в примерах ниже: muse-glimmer/backend/judgments/): таблица яруса 1 с баллом и вероятностью галлюцинаций (пример), отдельная таблица эскалационных признаков (пример) и вердикты яруса 2 в glm-5.3-flash-iso/ (пример).

Ремарка. Описанное выше — это система, к которой стремимся. В самом исследовании оценка и эскалация шли двумя раздельными вызовами clef, с прежней формулировкой need_review, а судья яруса 2 проверил все 30 ответов на знания в одном прогоне каждой модели (остальные прогоны судит дешёвый ярус, его балл усредняется), а не только ответы выше порога: сплошная проверка собрала эталонную разметку, на которой калибруются триггеры и улучшается методика оценки (§7). В таблицах §4 стоят баллы этого прогона.

3Модели

Кто участвовал и почему: состав отражает вопросы исследования, от потолка облаков и честной цены до локальных кандидатов, российских облаков и негативных контролей.

МодельПровайдер вызоваПочему в тестеДетали
GPT-6.1 Sol облакоOpenAI · OpenRouterглавный SOTA-бенчмарк: как выглядит потолок чистых способностейeffort low; авто-кэш OpenAI; его ответы служат SOTA-эталоном яруса 0
Claude Opus 5.5 облакоAnthropic · OpenRouterпотолок качества и цены: оправданы ли деньгиeffort low; кэш только по явным cache_control-меткам
Claude Haiku 5.5 облакоAnthropic · OpenRouterбыстрая дешёвая модель топ-вендораeffort low; A/B на кэш: сессия без него $0.18, с ним $0.055–0.062
GPT-6 Luna облакоOpenAI · OpenRouterсамая дешёвая в топе: ценовой пол «умных»effort low; авто-кэш
DeepSeek V4.1-Flash облакородной API DeepSeekрекорд цены/качества открытых китайских весов, без накладных расходов агрегатораeffort low · контекст 1M · вывод до 393k · автокэш (кэш-хит ×50 дешевле входа)
GigaChat-2 Max облакоСбер · API физлица (freemium)главная корпоративная российская LLM: каков отечественный дефолтрежим по умолчанию, регулировки reasoning в API нет; нативный префикс-кэш; на провокации Q26 принял ложную предпосылку с выдуманным обоснованием
GigaChat-3-Ultra облакоСбер · api.giga.chat (freemium, только физлица)новый флагман Сберарежим по умолчанию; юрлицам не продаётся; квота 50 млн токенов; единственная модель проекта, чисто прошедшая все 3 провокации
YandexGPT Pro 5 облакоЯндекс Cloudвторой российский облачный провайдеррежим по умолчанию; контент-фильтр заменил ответы на 6 из 35 технических вопросов отказами; плоский тариф ₽1.2/1k без кэш-скидки; имя Pro 5 видно только в детализации биллинга
ornith-1.5 35B локальнолокально · ollama (Q4_K_M)флагман открытых весов в MoE-формате, локальный потолокв двух режимах: мышление выключено / включено (с мышлением генерация вчетверо дольше)
ornith-1.5 9B локальнолокально · ollamaразмерная точка: MoE 9B против dense 27Bмышление включено (у 9B без него не отвечает)
qwen3.8 27B локальнолокально · ollama (Q4_K_M)главный локальный кандидат: dense 27B популярного семействамышление выключено (с мышлением контекст переполняется)
muse-glimmer 28B локальнолокально · ollamaмалоизвестный бренд: проверка неизвестного семействамышление выключено; лучшая локальная по баллам судьи (3.53)
huihui abliterated 27B локальнолокально · ollamaabliterated-файнтюн qwen3.8: сняты отказохранителимышление выключено
orcarouter 27B uncensored локальнолокально · ollamauncensored-файнтюн qwen3.8: сняты отказохранителимышление выключено
medgemma 27B негат. контрольлокально · ollamaнегативный контроль: медицинский файнтюн, проверяем различимость шкалы на чужом доменемышление выключено
gemma4-e2b 4.6B негат. контрольлокально · ollamaнегативный контроль: крошка, низ шкалымышление выключено

Локальное окружение

КомпонентМодельКлючевое
ПроцессорAMD Ryzen 9 9950X3D16 ядер / 32 потока, Zen 5, до 5.7 ГГц, TDP 170 Вт
ВидеокартаPalit GeForce RTX 5090 GameRock OC32 ГБ GDDR7, 21 760 CUDA-ядер, 1792 ГБ/с, PCIe 5.0
Материнская платаMSI MAG X870 TOMAHAWK WIFIAM5, PCIe 5.0
ПамятьG.Skill Trident Z5 Royal Neo 96 ГБDDR5-6000, 2×48 ГБ
НакопителиKingston FURY Renegade G5 2 ТБ ×2NVMe M.2

Фактический режим работы (снято с сервера)

ПодсистемаРежимЧто это значит
CPUgovernor performance, amd_pstate activeбуст до ~5.6 ГГц держится под нагрузкой, троттлинга нет
GPU PCIePCIe 5.0 ×16 при работе; в простое линия понижается до Gen1полная пропускная способность в момент инференса; Gen1 — это штатное энергосбережение NVIDIA
GPU питаниеpower limit 600 Вт, драйвер 610.57максимум карты не урезан
ПамятьDDR5 5600 MT/s, каналы A+B (dual channel), 1.1 Вработает на JEDEC-дефолте: EXPO-профиль 6000 MT/s планок в BIOS не включён, небольшой запас производительности не задействован
NVMeлинк PCIe 5.0, чтение модели 6.0 ГБ/с (direct)диски не узкое место при загрузке весов
Загрузка моделихолодный старт 27B Q4 (блоб 20 ГБ) занимает 2.9 сдисковое ожидание незаметно на фоне сессий 3–20 минут; цена изоляции прогонов (выгрузка после каждого) примерно 3 с на следующий старт
ОС и ядроAlmaLinux 10.2, ядро 6.12.0-211.49.1версии зафиксированы на время серий; обновления сервера между сериями не проводились
Драйвер и CUDANVIDIA 610.57.04, CUDA 13.3свежий стек для Blackwell; версия драйвера влияет на скорость ollama (кубы под конкретную CUDA)
ollama0.40.0 (llama.cpp-based)единая версия для всех локальных серий; параметр think (вкл/выкл и уровни мышления) и квант KV-кэша — фичи этой версии
Флаги сервераOLLAMA_KV_CACHE_TYPE=q8_0единственный нестандартный env демона; серии гонялись по одному запросу, без параллельных сессий

Рантайм ollama, модели в квантовании Q4_K_M (кроме отмеченного отдельно); 27B-модели целиком помещаются в 32 ГБ VRAM. С 17.10.2026 KV-кэш сервера хранится в q8_0 вместо fp16 (env OLLAMA_KV_CACHE_TYPE): контекст 262144 токена помещается в VRAM целиком, скорость не ниже fp16 (146 ток/с на разогретой модели). Потребление в момент инференса ~550 Вт (основа модели стоимости, §8); конфигурация из личной базы заметок владельца, режим снят командами dmidecode/nvidia-smi/dd с сервера.

gemma4-26b участвовала только в эксперименте с системным промптом (§6).

4Результаты

Таблица сравнивает модели в стандартных условиях: системный промпт не задавался, мышление у локальных моделей выключено, у облаков reasoning effort low (исключение ornith-1.5 9B, у которой мышление всегда включено). У Сбера и Яндекса регулировки reasoning в API нет, поэтому уровень мышления не настраивается: модель работает в режиме по умолчанию. Отдельными строками добавлены эксперименты §6: ornith-1.5 35B с включённым мышлением, qwen3.8 27B на уровне мышления low и пять локальных моделей с ролевым системным промптом (дословный текст в §6; gemma4 26B участвовала только в эксперименте с промптом).

Баллы обеих шкал и галлюцинации — только по вопросам на знания, 30 ответов из 41 (детали в сноске 3). Фон строк: зеленоватый отмечает топ качества, голубоватый российские облака, розоватый негативные контроли.

Строки отсортированы по баллу судьи GLM-5.3-Flash; он проверил по всем 30 вопросам на знания одного прогона каждую строку, включая варианты с промптом, постоянство по прогонам контролирует clef (±).

МодельМышлениеСист. промптПрого­ныclef, ярус 1LLM судья, ярус 2Прово­кации5Токены6Время6Цена7
балл1галл.2балл3галл.4
Opus 5.5
облако
low — 1
3.60
0.28
4.0
2/30 3/3 177,035
~94% кэш
29.3 мин $5.82
₽495.88
GPT-6.1 Sol
облако
low — 1
3.56
0.14
4.0
0/30 3/3 41,905
~95% кэш
14.2 мин $0.62
₽52.96
GPT-6 Luna
облако
low — 1
3.45
0.15
3.9
0/30 3/3 35,968
~94% кэш
6.4 мин $0.0300
₽2.56
Haiku 5.5
облако
low — 1
3.49
0.21
3.9
2/30 3/3 67,902
~95% кэш
6.3 мин $0.18
₽15.52
DeepSeek V4.1 Flash
облако
low — 1
3.55
0.32
3.7
10/30 3/3 159,056
95% кэш
11.9 мин $0.25
₽21.22
gemma4 26B
локально
без да 5
3.24
0.17
3.6
2/30 15/15 39,234 2.6 мин $0.0186
₽1.58
orcarouter 27B
локально
без да 5
3.41
0.24
3.6
7/30 14/15 71,376 17.7 мин $0.12
₽10.58
muse-glimmer 28B
локально
без — 1
3.30
0.21
3.5
5/30 3/3 24,778 9.2 мин $0.0646
₽5.50
GigaChat-3 Ultra
облако
нет — 1
3.32
0.26
3.4
10/30 3/3 58,865
56% кэш
10.9 мин ₽08
qwen3.8 27B
локально
без да 5
3.34
0.28
3.4
12/30 15/15 70,992 9.8 мин $0.0690
₽5.88
orcarouter 27B uncensored
локально
без — 5
3.38
±0.03 по прогонам
0.27
3.4
17/30 15/15 66,833 16.4 мин $0.12
₽9.82
ornith-1.5 35B
локально
вкл — 3
3.43
±0.01 по прогонам
0.33
3.4
14/30 9/9 128,316 12.4 мин $0.0869
₽7.40
huihui abliterated 27B
локально
без да 5
3.27
0.30
3.4
13/30 14/15 68,987 9.3 мин $0.0655
₽5.58
qwen3.8 27B
локально
low — 5
3.61
±0.02 по прогонам
0.17
3.3
17/30 15/15 149,714 27.1 мин $0.19
₽16.22
huihui abliterated 27B
локально
без — 5
3.27
±0.01 по прогонам
0.31
3.2
17/30 13/15 63,397 8.4 мин $0.0588
₽5.01
qwen3.8 27B
локально
без — 5
3.33
±0.03 по прогонам
0.31
3.2
12/30 15/15 65,687 8.9 мин $0.0626
₽5.33
ornith-1.5 35B
локально
без да 5
3.07
0.37
3.0
17/30 11/15 65,949 4.6 мин $0.0324
₽2.76
GigaChat-2 Max
облако
нет — 1
2.65
0.27
2.8
7/30 2/3 36,929
65% кэш
11.0 мин ₽09
ornith-1.5 35B
локально
без — 5
2.93
±0.07 по прогонам
0.37
2.7
16/30 12/15 45,502 3.1 мин $0.0216
₽1.84
medgemma 27B
без — 1
2.66
0.40
2.7
14/30 1/3 55,430 20.5 мин $0.14
₽12.26
ornith-1.5 9B
локально
вкл — 5
3.13
±0.06 по прогонам
0.46
2.4
20/30 15/15 93,048 11.8 мин $0.0831
₽7.08
gemma4 e2b 4.6B
без — 1
2.52
0.23
2.4
7/30 0/3 32,332 3.4 мин $0.0236
₽2.01
YandexGPT Pro 5
облако
нет — 1
1.91
0.13
2.0
4/30 2/3 17,159
90% кэш
3.6 мин $4.36
₽371.42
1 clef: средний балл дешёвого судьи (ярус 1) по ответам всех прогонов на вопросы о знаниях; ± — это стандартное отклонение средних прогонов, то есть стабильность средней оценки (там, где прогон один, разброса нет). Отдельные ответы менее постоянны: средний разброс балла одного вопроса между прогонами 2–6% шкалы (0.08–0.23 балла; максимум — до 58% шкалы на провокации Q24 у ornith-1.5 35B без мышления); при усреднении по 30 вопросам эти колебания гасятся.
2 Галл. (ярус 1): вероятность галлюцинаций в ответе по расчёту clef.
3 Балл судьи. GLM-5.3-Flash, ярус 2: каждый ответ проверяет отдельная изолированная GLM-5.3-Flash со свежим контекстом, спорные утверждения верифицируются запуском кода (PHP 8.5, PostgreSQL). Проверены все 30 ответов на знания одного прогона каждой строки таблицы. Уровень рассуждений судьи — max; состав: локальные прогоны и эталонные выборки — GLM-5.3-Flash, сплошная перепроверка облачных прогонов — GLM-5.3 (расхождение режимов low↔max больше 1 балла — 1 ответ из 30, §7). Баллы обеих шкал и галлюцинации считаются по вопросам на знания — 30 ответов из 41: разминка, вопросы о работе с задачами и процессе и финал собеса не учитываются — выдумывать в них нечего. Это подмножество одинаково в версиях вопросника (v1 — 32 основных вопроса без финальной секции, v2 — 35; ранние модели — ornith-1.5 35B в обоих режимах, qwen3.8, huihui, orcarouter — проходили v1), поэтому результаты v1 и v2 сравнимы напрямую.
4 Галл. (ярус 2): число ответов с подтверждённой судьёй галлюцинацией из проверенных (X из 30); «с хотя бы одной» — остальная часть такого ответа может быть верной и получить высокий балл.
5 Найдено провокаций: доля распознанных ложных предпосылок. Разметку транскриптов всех прогонов выполнял ассистент (GLM-5.3), провал — модель назвала процент или описала несуществующее как рабочее вместо отвержения предпосылки (X из 3×N; цитаты разметки вариантов с промптом — reports/provocations-primer-v2.csv).
6 Длительность и выходные токены даны на одну сессию (где прогонов несколько — среднее по прогонам); локальные считают время чистой генерации без загрузки модели. Подпись «N% кэш» — доля кэш-чтений во входных токенах облака, посчитанная только по сессиям, где кэш был включён: у Haiku строка таблицы — сессия без кэша, процент взят из двух соседних сессий с ним. DeepSeek и GigaChat — токены из API (у GigaChat входные не включают кэш), OpenAI — оценка по дневной активности OpenRouter, Anthropic — по списаниям самой сессии (проверено: на сессиях без кэша списания сходятся с тарифом до цента); знак ~ — оценка по деньгам, без него — токены из API. OpenAI кэширует промпты автоматически (проверено сверкой со счётом: списания на 70% ниже тарифа), Anthropic — только по явным меткам cache_control, их отсутствие едва не сорвало Opus-прогон. У Яндекса — по детализации биллинга (кешированные токены считаются отдельно и покрывают 90% промпта; тариф плоский ₽1.2/1k, скидки за кэш нет). У локальных кэш-покрытие не измеряли: поле prompt_eval_cached_count ollama 0.40 отдаёт, но раннер записывает его только с 14 октября (измеренных сессий ещё нет). Прогоны 6–8 октября шли вовсе без кэша сессии — выгрузка после каждого хода, каждый ход пересчитывал префикс с нуля, отсюда их длительность (muse-glimmer: 9.2 мин без кэша против 4.9 с ним); кэш экономит время, но не тарифицируется.
7 Цена одной сессии: облако по фактическим списаниям API, локальные по методике §8 (электричество + амортизация, ₽35.85/ч); рубли по курсу ₽85.15/$.
8 GigaChat-3 Ultra: физлицу ₽0 (freemium, 2.7% квоты 50 млн токенов/12 мес); для работы (юрлицо) модель юрлицам у Сбера не продаётся, доступ только cloud.ru Foundation Models (₽96/1M вход + ₽289/1M выход), полная сессия ₽70.71–140.10 (~$0.83–1.65), вилка отражает нераскрытую тарификацию кэша.
9 GigaChat-2 Max: физлицу ₽0 (freemium, 3.5% квоты 25 млн токенов/12 мес); для работы (юрлицо) тариф Сбера ₽650/1M токенов без разбивки вх/вых (асинхронно ₽325/1M, минимальный платёж ₽600/мес), полная сессия ₽216.05–565.15 (~$2.54–6.64), вилка отражает нераскрытую тарификацию кэша.

Самооценка против итоговых баллов

В разминке (вопрос Q00) модель сама оценивает свои знания по восьми разделам шкалой 0–10; итоговые баллы пайплайна приведены к той же 10-балльной шкале: ■ пунктир — это самооценка, ■ сплошная, итоговый балл: судьи где проверял, иначе clef (тёмно-зелёные точки ● отмечают оси, взятые у судьи: судья проверил полный прогон соответствующей строки таблицы). Δ — это средняя разность самооценки и итоговых баллов, единая база для всех моделей. Варианты с системным промптом и мышлением low показаны отдельными карточками рядом с базовыми; в корреляцию ниже они не входят.

Эффект Даннинга-Крюгера воспроизводится почти идеально: корреляция силы модели (clef) с перекосом самооценки, Пирсон r = −0.89 и Спирмен ρ = −0.91 (n = 18). Сильные модели себя недооценивают (Opus −1.5, Haiku −1.6, Sol −1.2), слабые переоценивают (YandexGPT Pro 5 +2.7 при худшем знании стека, gemma4-e2b +2.2), середина откалибрована в ноль (Ultra, qwen3.8, muse, 9B, gemma4 26B). Отдельно стоит DeepSeek: сила почти уровня облака при почти точной самооценке (−0.4). Системный промпт самооценку не надувает: у всех пяти вариантов с промптом Δ остаётся около нуля, от −0.1 до +0.8. Подробнее об эффекте у больших языковых моделей читайте в блоге автора.

Низкий балл по разделу не приговор, а сигнал для постановки задачи. Радар показывает, где модели нужна опора: в слабых разделах давать больше контекста (документацию, примеры, конвенции проекта), усиливать гвард-рейлы проверками на детерминированных инструментах (Psalm, PHPStan, PHPCS, тесты в CI) и закладывать более плотное ревью другими агентами и человеком. Модель с провалом по Doctrine всё равно продуктивна, если схема и миграции приходят вместе с задачей, а результат проходит статический анализ. Итог исследования не «кого нельзя нанять», а «сколько контекста и проверок заложить в работу с каждой моделью».

Облачные SOTA
Opus 5.5
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 8Doctrineсамооценка 7PostgreSQLсамооценка 7DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 8Gitсамооценка 8PHP 8судья 10.0Symfonyсудья 10.0Doctrineсудья 10.0PostgreSQLсудья 10.0DDDсудья 10.0Чист. архит.судья 10.0Тестир.судья 10.0Gitсудья 10.0
Δ -1.5 · занижает
GPT-6.1 Sol
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 8Doctrineсамооценка 8PostgreSQLсамооценка 7DDDсамооценка 7Чист. архит.самооценка 8Тестир.самооценка 8Gitсамооценка 8PHP 8судья 10.0Symfonyсудья 9.6Doctrineсудья 10.0PostgreSQLсудья 10.0DDDсудья 10.0Чист. архит.судья 10.0Тестир.судья 10.0Gitсудья 10.0
Δ -1.2 · занижает
Haiku 5.5
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 7Doctrineсамооценка 7PostgreSQLсамооценка 6DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 7Gitсамооценка 8PHP 8судья 9.2Symfonyсудья 9.6Doctrineсудья 9.2PostgreSQLсудья 10.0DDDсудья 10.0Чист. архит.судья 10.0Тестир.судья 10.0Gitсудья 10.0
Δ -1.6 · занижает
GPT-6 Luna
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 8Doctrineсамооценка 7PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 8Gitсамооценка 8PHP 8судья 9.2Symfonyсудья 10.0Doctrineсудья 10.0PostgreSQLсудья 10.0DDDсудья 10.0Чист. архит.судья 10.0Тестир.судья 10.0Gitсудья 10.0
Δ -1.1 · занижает
DeepSeek
DeepSeek V4.1 Flash
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 9PHP 8судья 9.2Symfonyсудья 7.9Doctrineсудья 8.3PostgreSQLсудья 9.4DDDсудья 10.0Чист. архит.судья 8.8Тестир.судья 8.8Gitсудья 10.0
Δ -0.4 · адекватна
Российские
GigaChat-2 Max
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 7Doctrineсамооценка 7PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 6Тестир.самооценка 7Gitсамооценка 9PHP 8судья 6.2Symfonyсудья 7.5Doctrineсудья 6.2PostgreSQLсудья 6.9DDDсудья 7.5Чист. архит.судья 7.5Тестир.судья 6.2Gitсудья 7.5
Δ +0.6 · адекватна
GigaChat-3 Ultra
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 7Тестир.самооценка 9Gitсамооценка 9PHP 8судья 7.5Symfonyсудья 8.3Doctrineсудья 7.9PostgreSQLсудья 8.1DDDсудья 9.2Чист. архит.судья 8.8Тестир.судья 8.8Gitсудья 10.0
Δ -0.1 · адекватна
YandexGPT Pro 5
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 6Doctrineсамооценка 7PostgreSQLсамооценка 5DDDсамооценка 6Чист. архит.самооценка 7Тестир.самооценка 7Gitсамооценка 8PHP 8судья 6.2Symfonyсудья 5.8Doctrineсудья 3.3PostgreSQLсудья 6.2DDDсудья 2.1Чист. архит.судья 0.0Тестир.судья 5.0Gitсудья 3.1
Δ +2.7 · завышает
Семейство локальных qwen
qwen3.8 27B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 8Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 9PHP 8судья 5.8Symfonyсудья 8.3Doctrineсудья 7.5PostgreSQLсудья 8.8DDDсудья 8.3Чист. архит.судья 7.5Тестир.судья 7.5Gitсудья 10.0
Δ +0.1 · адекватна
qwen3.8 27B (мышление low)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 7Symfonyсамооценка 9Doctrineсамооценка 7PostgreSQLсамооценка 7DDDсамооценка 6Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 9PHP 8судья 7.1Symfonyсудья 6.7Doctrineсудья 7.5PostgreSQLсудья 8.8DDDсудья 10.0Чист. архит.судья 8.8Тестир.судья 8.8Gitсудья 9.4
Δ -1.3 · занижает
qwen3.8 27B (с промптом)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 8Gitсамооценка 9PHP 8судья 7.5Symfonyсудья 7.9Doctrineсудья 6.2PostgreSQLсудья 9.4DDDсудья 10.0Чист. архит.судья 8.8Тестир.судья 8.8Gitсудья 9.4
Δ -0.1 · адекватна
huihui abliterated 27B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 9PostgreSQLсамооценка 9DDDсамооценка 9Чист. архит.самооценка 9Тестир.самооценка 10Gitсамооценка 10PHP 8судья 6.2Symfonyсудья 7.1Doctrineсудья 7.1PostgreSQLсудья 8.8DDDсудья 9.6Чист. архит.судья 7.5Тестир.судья 8.8Gitсудья 10.0
Δ +1.1 · завышает
huihui abliterated 27B (с промптом)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 9PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 9Тестир.самооценка 9Gitсамооценка 9PHP 8судья 8.3Symfonyсудья 6.7Doctrineсудья 6.7PostgreSQLсудья 10.0DDDсудья 8.8Чист. архит.судья 8.8Тестир.судья 7.5Gitсудья 9.4
Δ +0.5 · адекватна
orcarouter 27B uncensored
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 10Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 8PHP 8судья 8.3Symfonyсудья 6.2Doctrineсудья 6.7PostgreSQLсудья 9.4DDDсудья 9.2Чист. архит.судья 8.8Тестир.судья 8.8Gitсудья 10.0
Δ +0.1 · адекватна
orcarouter 27B (с промптом)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 10Doctrineсамооценка 9PostgreSQLсамооценка 8DDDсамооценка 9Чист. архит.самооценка 9Тестир.самооценка 10Gitсамооценка 10PHP 8судья 7.1Symfonyсудья 8.3Doctrineсудья 7.5PostgreSQLсудья 9.4DDDсудья 10.0Чист. архит.судья 10.0Тестир.судья 8.8Gitсудья 10.0
Δ +0.8 · адекватна
Семейство локальных ornith
ornith-1.5 35B (без мышления)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 8Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 8Gitсамооценка 8PHP 8судья 6.2Symfonyсудья 4.6Doctrineсудья 5.8PostgreSQLсудья 7.5DDDсудья 7.5Чист. архит.судья 7.5Тестир.судья 5.0Gitсудья 6.9
Δ +0.7 · адекватна
ornith-1.5 35B (с мышлением)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 8Doctrineсамооценка 7PostgreSQLсамооценка 7DDDсамооценка 7Чист. архит.самооценка 8Тестир.самооценка 8Gitсамооценка 8PHP 8судья 5.8Symfonyсудья 7.5Doctrineсудья 8.3PostgreSQLсудья 10.0DDDсудья 9.2Чист. архит.судья 10.0Тестир.судья 7.5Gitсудья 10.0
Δ -0.9 · адекватна
ornith-1.5 35B (с промптом)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 8Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 8Gitсамооценка 8PHP 8судья 6.7Symfonyсудья 5.4Doctrineсудья 7.1PostgreSQLсудья 10.0DDDсудья 7.5Чист. архит.судья 7.5Тестир.судья 6.2Gitсудья 8.8
Δ +0.1 · адекватна
ornith-1.5 9B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 8Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 8Gitсамооценка 8PHP 8судья 4.2Symfonyсудья 5.0Doctrineсудья 5.0PostgreSQLсудья 7.5DDDсудья 7.1Чист. архит.судья 7.5Тестир.судья 5.0Gitсудья 8.1
Δ -0.1 · адекватна
Другие локальные модели
muse-glimmer 28B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 8Gitсамооценка 9PHP 8судья 8.3Symfonyсудья 8.8Doctrineсудья 8.3PostgreSQLсудья 9.4DDDсудья 10.0Чист. архит.судья 8.8Тестир.судья 7.5Gitсудья 9.4
Δ -0.1 · адекватна
gemma4 26B (с промптом)
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 8Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 9PHP 8судья 7.9Symfonyсудья 9.2Doctrineсудья 8.3PostgreSQLсудья 10.0DDDсудья 9.6Чист. архит.судья 10.0Тестир.судья 10.0Gitсудья 9.4
Δ +0.4 · адекватна
Негативный контроль
medgemma 27B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 8Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 7DDDсамооценка 7Чист. архит.самооценка 7Тестир.самооценка 9Gitсамооценка 9PHP 8судья 5.4Symfonyсудья 4.6Doctrineсудья 5.0PostgreSQLсудья 8.1DDDсудья 7.1Чист. архит.судья 8.8Тестир.судья 7.5Gitсудья 8.8
Δ +1.1 · завышает
gemma4 e2b 4.6B
2.557.510PHP 8SymfonyDoctrinePostgreSQLDDDЧист. архит.Тестир.GitPHP 8самооценка 9Symfonyсамооценка 9Doctrineсамооценка 8PostgreSQLсамооценка 8DDDсамооценка 7Чист. архит.самооценка 8Тестир.самооценка 9Gitсамооценка 10PHP 8судья 4.2Symfonyсудья 5.8Doctrineсудья 4.6PostgreSQLсудья 5.6DDDсудья 8.3Чист. архит.судья 7.5Тестир.судья 6.2Gitсудья 8.1
Δ +2.2 · завышает

Постоянство ответов

Насколько модель отвечает одинаково от прогона к прогону: разброс оценки clef (ярус 1, шкала 0–4) одного и того же вопроса между прогонами. Постоянство — единственный показатель отчёта на чистой шкале clef, без подстановки итогового балла (судья, где проверял, иначе clef): судья яруса 2 проверил по одному прогону на серию, а для размаха нужны оценки одного вопроса в нескольких прогонах; смешивать шкалу судьи со шкалой clef нельзя — шкалы систематически смещены друг относительно друга (§7), и размах получился бы из разницы шкал, а не из непостоянства модели. Только строки с несколькими прогонами: локальные модели в стандартных режимах и их варианты с системным промптом (3–5 прогонов); у облачных моделей, muse-glimmer и негативных контролей прогон один, мерить нечего.

0%10%20%30%40%50%60%расхождение ответа на вопрос между прогонами, 100% = 4 баллаornith-1.5 35B (с мышлением)медиана 2.5% · макс 14%qwen3.8 27B (мышление low)медиана 3.1% · макс 11%orcarouter 27B uncensored (без мышления)медиана 4.2% · макс 19%orcarouter 27B (с промптом)медиана 4.5% · макс 18%qwen3.8 27B (без мышления)медиана 4.6% · макс 15%gemma4 26B (с промптом)медиана 4.7% · макс 10%huihui abliterated 27B (без мышления)медиана 6.6% · макс 19%qwen3.8 27B (с промптом)медиана 7.7% · макс 22%huihui abliterated 27B (с промптом)медиана 8.1% · макс 23%ornith-1.5 35B (с промптом)медиана 10.0% · макс 29%ornith-1.5 9B (с мышлением)медиана 10.4% · макс 29%ornith-1.5 35B (без мышления)медиана 11.7% · макс 58%

Свеча — это распределение вопросов одной строки таблицы: тело охватывает половину вопросов в середине распределения (между квартилями), усы ведут к минимальному и максимальному расхождению, тёмная риска — это медиана. У самых постоянных моделей медиана 1–2% от максимального балла, но почти у каждой есть вопросы, гуляющие на четверть шкалы и больше. Самый широкий ус — провокация Q24 (FORCE INDEX) у ornith-1.5 35B без мышления: в двух прогонах из пяти модель уверенно описывает несуществующую конструкцию PostgreSQL (0.5–0.7 балла), в трёх вскрывает ложную предпосылку и называет корректные альтернативы (1.9–2.8). Исключать провокации из расчёта не нужно: медианы от этого сдвигаются не больше чем на полпункта, порядок серий сохраняется.

ornith-1.5 35B (с мышлением)медиана 2.5%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
qwen3.8 27B (мышление low)медиана 3.1%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
orcarouter 27B uncensored (без мышления)медиана 4.2%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
orcarouter 27B (с промптом)медиана 4.5%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
qwen3.8 27B (без мышления)медиана 4.6%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
gemma4 26B (с промптом)медиана 4.7%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
huihui abliterated 27B (без мышления)медиана 6.6%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
qwen3.8 27B (с промптом)медиана 7.7%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
huihui abliterated 27B (с промптом)медиана 8.1%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
ornith-1.5 35B (с промптом)медиана 10.0%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
ornith-1.5 9B (с мышлением)медиана 10.4%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit
ornith-1.5 35B (без мышления)медиана 11.7%20%40%Провок.PHP 8DoctrineSymfonyТестыООПDDDРевьюPostgresGit

Каждый радар — это одна строка таблицы: луч темы показывает средний размах её ответов в этой теме; единая шкала для всех радаров, 100% = 4 балла (кольцо = 40%). Наименее воспроизводимая тема почти у всех моделей — провокации. Терракотовая окружность — это медиана этой строки (число в заголовке карточки): лучи вне неё гуляют больше типичного вопроса этой строки, внутри меньше.

Предсказуемость результата

Стабильность подачи из предыдущего подраздела отвечает на вопрос, насколько одинаково модель отвечает из раза в раз. Здесь соседний вопрос: справится ли модель с вопросом. Зачёт — это оценка clef не ниже 2.5 из 4; один и тот же вопрос задаётся в каждом прогоне серии. Непредсказуемый ответ — когда на один и тот же вопрос в одних прогонах ответ получает зачёт, а в других нет: например, 3.0 в одном прогоне и 2.0 в другом.

СтрокаНепредсказуемых ответов
gemma4 26B (с промптом)0 из 30
orcarouter 27B (с промптом)0 из 30
orcarouter 27B uncensored (без мышления)0 из 30
ornith-1.5 35B (с мышлением)0 из 30
qwen3.8 27B (без мышления)0 из 30
qwen3.8 27B (мышление low)0 из 30
qwen3.8 27B (с промптом)0 из 30
huihui abliterated 27B (без мышления)1 из 30
huihui abliterated 27B (с промптом)1 из 30
ornith-1.5 35B (с промптом)4 из 30
ornith-1.5 35B (без мышления)5 из 30
ornith-1.5 9B (с мышлением)7 из 30

Парадокс «ornith-1.5 9B стабильнее 35B» по размаху здесь снимается: у 9B непредсказуемых ответов больше (7 против 5). 9B стабильно слаба и держится у границы зачёта (средний балл 2.43 против 2.70 у 35B), а у 35B разброс оценок шире, но зачёт он меняет реже. Для найма это значит: у 35B труднее предсказать конкретный ответ, но проще предсказать, справится ли она с вопросом. Непредсказуемые ответы концентрируются в семействе ornith: у qwen-производных, gemma4 и вариантов с промптом их нет или почти нет.

Карта моделей: качество и цена

Каждая точка — строка таблицы выше: по вертикали балл модели (шкала — в плашке §1), по горизонтали фактическая цена полного собеседования в лог-шкале. Пунктир делит поле на зоны: порог качества 3.0 балла, порог цены $0.30 за сессию. GigaChat-2 Max и GigaChat-3 Ultra физлицу стоят ₽0 (freemium) и вынесены на левый край.

2.02.53.03.54.0$0.01$0.03$0.1$0.3$1$3$8хорошо и дёшевохорошо и дорогоплохо и дёшевоплохо и дорогоornith-1.5 9Bornith-1.5 9Bбалл 2.43 · цена $0.0831галлюцинации 67% (20 из 30)huihui abliterated 27Bhuihui abliterated 27Bбалл 3.22 · цена $0.0588галлюцинации 57% (17 из 30)orcarouter 27B uncensoredorcarouter 27B uncensoredбалл 3.37 · цена $0.12галлюцинации 57% (17 из 30)ornith-1.5 35B (с промптом)ornith-1.5 35B (с промптом)балл 3.02 · цена $0.0324галлюцинации 57% (17 из 30)qwen3.8 27B (мышление low)qwen3.8 27B (мышление low)балл 3.33 · цена $0.19галлюцинации 57% (17 из 30)ornith-1.5 35B (без мышления)ornith-1.5 35B (без мышления)балл 2.70 · цена $0.0216галлюцинации 53% (16 из 30)ornith-1.5 35B (с мышлением)ornith-1.5 35B (с мышлением)балл 3.35 · цена $0.0869галлюцинации 47% (14 из 30)medgemma 27Bmedgemma 27Bбалл 2.67 · цена $0.14галлюцинации 47% (14 из 30)huihui abliterated 27B (с промптом)huihui abliterated 27B (с промптом)балл 3.35 · цена $0.0655галлюцинации 43% (13 из 30)qwen3.8 27Bqwen3.8 27Bбалл 3.20 · цена $0.0626галлюцинации 40% (12 из 30)qwen3.8 27B (с промптом)qwen3.8 27B (с промптом)балл 3.38 · цена $0.0690галлюцинации 40% (12 из 30)DeepSeek V4.1 FlashDeepSeek V4.1 Flashбалл 3.70 · цена $0.25галлюцинации 33% (10 из 30)GigaChat-3 UltraGigaChat-3 Ultraбалл 3.38 · цена $0.0000галлюцинации 33% (10 из 30)GigaChat-2 MaxGigaChat-2 Maxбалл 2.78 · цена $0.0000галлюцинации 23% (7 из 30)gemma4 e2b 4.6Bgemma4 e2b 4.6Bбалл 2.42 · цена $0.0236галлюцинации 23% (7 из 30)orcarouter 27B (с промптом)orcarouter 27B (с промптом)балл 3.62 · цена $0.12галлюцинации 23% (7 из 30)muse-glimmer 28Bmuse-glimmer 28Bбалл 3.53 · цена $0.0646галлюцинации 17% (5 из 30)YandexGPT Pro 5YandexGPT Pro 5балл 2.02 · цена $4.36галлюцинации 13% (4 из 30)Opus 5.5Opus 5.5балл 4.00 · цена $5.82галлюцинации 7% (2 из 30)Haiku 5.5Haiku 5.5балл 3.85 · цена $0.18галлюцинации 7% (2 из 30)gemma4 26B (с промптом)gemma4 26B (с промптом)балл 3.65 · цена $0.0186галлюцинации 7% (2 из 30)GPT-6.1 SolGPT-6.1 Solбалл 3.95 · цена $0.62галлюцинации 0% (0 из 30)GPT-6 LunaGPT-6 Lunaбалл 3.88 · цена $0.0300галлюцинации 0% (0 из 30)цена полного собеседования, $ — лог-шкала (шаг деления ×10); Сбер ₽0 прижат к левому краюбалл модели

● облако · ● локальные · ● русские · ● негативные контроли. Диаметр точки кодирует долю ответов с галлюцинациями (чем больше, тем грязнее). Ось Y обрезана от 1.5: моделей ниже не было.

Карта моделей: качество и скорость

Каждая точка — строка таблицы выше: по вертикали балл модели, по горизонтали минуты полного собеседования, диаметр точки кодирует объём выходных токенов (многословность). Пунктир делит поле на зоны: порог качества 3.0 балла, порог скорости 10 минут.

2.02.53.03.54.051015202530хорошо и быстрохорошо и медленноплохо и быстроплохо и медленноOpus 5.5Opus 5.5балл 4.00 · 29 мин~177 тыс. выходных токеновDeepSeek V4.1 FlashDeepSeek V4.1 Flashбалл 3.70 · 12 мин~159 тыс. выходных токеновqwen3.8 27B (мышление low)qwen3.8 27B (мышление low)балл 3.33 · 27 мин~150 тыс. выходных токеновornith-1.5 35B (с мышлением)ornith-1.5 35B (с мышлением)балл 3.35 · 12 мин~128 тыс. выходных токеновornith-1.5 9Bornith-1.5 9Bбалл 2.43 · 12 мин~93 тыс. выходных токеновorcarouter 27B (с промптом)orcarouter 27B (с промптом)балл 3.62 · 18 мин~71 тыс. выходных токеновqwen3.8 27B (с промптом)qwen3.8 27B (с промптом)балл 3.38 · 10 мин~71 тыс. выходных токеновhuihui abliterated 27B (с промптом)huihui abliterated 27B (с промптом)балл 3.35 · 9 мин~69 тыс. выходных токеновHaiku 5.5Haiku 5.5балл 3.85 · 6 мин~68 тыс. выходных токеновorcarouter 27B uncensoredorcarouter 27B uncensoredбалл 3.37 · 16 мин~67 тыс. выходных токеновornith-1.5 35B (с промптом)ornith-1.5 35B (с промптом)балл 3.02 · 5 мин~66 тыс. выходных токеновqwen3.8 27Bqwen3.8 27Bбалл 3.20 · 9 мин~66 тыс. выходных токеновhuihui abliterated 27Bhuihui abliterated 27Bбалл 3.22 · 8 мин~63 тыс. выходных токеновGigaChat-3 UltraGigaChat-3 Ultraбалл 3.38 · 11 мин~59 тыс. выходных токеновmedgemma 27Bmedgemma 27Bбалл 2.67 · 20 мин~55 тыс. выходных токеновornith-1.5 35B (без мышления)ornith-1.5 35B (без мышления)балл 2.70 · 3 мин~46 тыс. выходных токеновGPT-6.1 SolGPT-6.1 Solбалл 3.95 · 14 мин~42 тыс. выходных токеновgemma4 26B (с промптом)gemma4 26B (с промптом)балл 3.65 · 3 мин~39 тыс. выходных токеновGigaChat-2 MaxGigaChat-2 Maxбалл 2.78 · 11 мин~37 тыс. выходных токеновGPT-6 LunaGPT-6 Lunaбалл 3.88 · 6 мин~36 тыс. выходных токеновgemma4 e2b 4.6Bgemma4 e2b 4.6Bбалл 2.42 · 3 мин~32 тыс. выходных токеновmuse-glimmer 28Bmuse-glimmer 28Bбалл 3.53 · 9 мин~25 тыс. выходных токеновYandexGPT Pro 5YandexGPT Pro 5балл 2.02 · 4 мин~17 тыс. выходных токеновдлительность полного собеседования, минуты; диаметр точки — выходные токены сессиибалл модели

Треугольник: быстро, качественно, дёшево

«Железное» правило управления проектами «быстро, качественно, дёшево — выберите любые два» работает и здесь. Три оси — цена сессии, балл оценки качества и время полного собеседования в минутах; цена сжата логарифмически, чтобы дешёвые модели не слипались на фоне Opus. Каждый шарик изображает одну модель в одном режиме работы (строку таблицы результатов: например, у ornith-1.5 35B три шарика — без мышления, с мышлением и с системным промптом), а радиус шарика кодирует объём выходных токенов. Сцену можно вращать мышью, приближать колесом; золотой каркасный многогранник у вершины оси качества — маркер недостижимого идеала (максимально дёшево + быстро + качественно), и вокруг него пусто.

3D-сцена не загрузилась: для неё нужен интернет (three.js с CDN).

Точки цветом повторяют группы карт выше: синие облака, зелёные локальные, голубые российские, терракотовые негативные контроли. Наведите курсор на шарик — карточка с баллом, ценой, минутами и токенами.

Что видно при вращении. Облако точек натянуто по диагонали от идеального угла: правило «выберите любые два» выполняется, ни одна модель не занимает угол целиком. Ближе всех к идеалу GPT-6 Luna — 3.88 балла за $0.03 и 6 минут (единственная, кто подходит к пределу правила, но и она не дотягивает до максимума качества). Противоположный полюс — Opus 5.5: максимальные 4.0 балла при худшей цене ($5.82) и худшей скорости (29 минут), самое далёкое от идеала расстояние. Локальные 27B живут в середине (muse-glimmer ближе всех из зелёных), а мышление ornith-35B сдвигает шарик вверх по качеству ценой скорости: 3 минуты превращаются в 12. Российские облака распадаются на два полюса: GigaChat-3 Ultra бесплатна и качественна, но медленнее (11 минут); YandexGPT быстра, но дорога и слаба — худший из возможных обменов. Быстро и качественно — это Haiku за $0.18; дёшево и качественно — Luna и muse; дёшево и быстро — ornith без мышления и gemma4-e2b, но с качеством на дне шкалы.

5Достоверность (галлюцинации)

На одних и тех же 30 вопросах на знания судья не нашёл ни одной галлюцинации у GPT-6.1 Sol и GPT-6 Luna (0 из 30), а у ornith-1.5 9B подтвердил их в 20 из 30, то есть в двух третях ответов. Opus и Haiku почти чисты (2 из 30). Локальные 27B семейства qwen выдают 12–17 из 30, причём ни мышление, ни системный промпт их не лечат (ornith-1.5 35B: 16 из 30 без мышления, 14 с мышлением, 17 с промптом). Частота галлюцинаций не следует прямо из силы модели: YandexGPT Pro 5 — худший по общему баллу судьи (2.02 из 4), но галлюцинации лишь в 4 ответах из 30. Его ошибки другого рода: отказы (контент-фильтр на стороне API Яндекса подменил 6 из 35 вопросов) и неверные ответы без выдуманных фактов.

Ниже примеры из транскриптов собеседований. Красная полоса слева у карточки означает подтверждённую судьёй галлюцинацию, зелёная полоса — это эталонный ответ. Первый вопрос разобран в паре: medgemma 27B и GPT-6 Luna отвечали на один и тот же вопрос.

Q24 · «Для чего в PostgreSQL используется FORCE INDEX?», medgemma 27B · 0 баллов · галлюцинация
«FORCE INDEX в PostgreSQL — это директива, которая подсказывает оптимизатору запросов, какой индекс использовать для конкретной таблицы… Это не жёсткое требование, а скорее рекомендация.»
Несуществующая конструкция описана уверенно и подробно. Судья сверился с документацией: ни в одной версии PostgreSQL её нет, это синтаксис MySQL.
Тот же вопрос, GPT-6 Luna · 4 балла
«В PostgreSQL нет команды FORCE INDEX и никогда не было. Это синтаксис MySQL… PostgreSQL построен на принципиально другой философии: планировщик умнее разработчика.»
Предпосылка вскрыта, названы корректные альтернативы (ANALYZE, enable_seqscan для диагностики, расширение pg_hint_plan как крайняя мера).
Q25 · «На сколько процентов strict_types=1 замедляет PHP?», Opus 5.5 · 4 балла
«Сначала поправлю две вещи. Во-первых, собственных замеров у меня нет, поэтому называть процент “по опыту” не буду. Во-вторых, сама предпосылка неверна: strict_types=1 не замедляет код в сколько-нибудь измеримой степени.»
Отказ выдумывать цифру и опровержение самой предпосылки. Судья прогнал микробенчмарк: кандидат прав.
Q02 · «Что напечатает "10"+"5" в PHP?», gemma4-e2b · 1 балл · галлюцинация
«…в PHP "10"+"5" даёт конкатенацию "105"», проверено запуском: int(15). Модель приписала PHP семантику JavaScript.

6Системный промпт и мышление

Вопрос эксперимента: даёт ли системный промпт тот же прирост качества, что и собственное мышление модели. Промпт проверен на пяти локальных моделях: каждая сдавала собеседование дважды, без промпта и с ним, по пять независимых прогонов на вариант; все прогоны оценивает clef, и дополнительно судья GLM-5.3-Flash проверил по одному прогону каждого варианта. Мышление проверено на ornith-1.5 35B в трёх вариантах и на qwen3.8 на уровне think low серией из пяти прогонов (дефолтный medium тогда не помещался в быстрый контекст сервера 131072 — до перевода KV-кэша в q8_0; на 262k medium не проверялся, детали ниже под таблицей). Дословный текст промпта — в карточке ниже.

Дословный текст системного промпта (поле primer в session.json каждого прогона)
Ты — опытный PHP-бэкенд-разработчик со стажем 15 лет и проходишь собеседование на роль PHP-бэкенд-разработчика. Твоя специализация: Symfony, Doctrine ORM, PostgreSQL, DDD и чистая архитектура, тестирование, git, работа с задачами.

Отвечай на вопросы от первого лица, как этот специалист, и структурируй ответ так:
1. Сначала рассуждение: разбери вопрос, проверь его предпосылки, рассмотри варианты решения и их trade-offs.
2. Затем финальный ответ с чётким выводом.

Ты опытный инженер, а опытный инженер не доверяет слепо чужим утверждениям. Если предпосылка вопроса выглядит сомнительно — проверь её и скажи об этом прямо: интервьюер может ошибаться, упрощать или намеренно проверять тебя. Признать «не знаю» или «в вопросе неточность» — нормально для старшего специалиста и лучше, чем уверенный ответ на неверной основе.
МодельБалл без промптаС промптомΔПровокации безс промптомΔ
ornith-1.5 35B2.933.07+0.142.122.49+0.37
qwen3.8 27B3.333.34+0.013.143.16+0.02
orcarouter 27B3.383.41+0.033.273.37+0.10
huihui abliterated 27B3.273.27+0.003.123.10-0.02
gemma4 26B3.263.24-0.023.193.17-0.02

Системный промпт даёт меньше, чем мышление. По clef (по пять прогонов каждого варианта) Δ от −0.02 до +0.14 — в пределах межпрогонного шума; судья в одиночных прогонах видит прирост у четырёх из пяти моделей: ornith +0.32 (ранняя версия промпта на том же вопроснике −0.02), orcarouter +0.25, qwen +0.18, huihui +0.13, у gemma4 +0.03 — мышление у ornith даёт +0.65, вдвое больше промпта. Выдумки промпт не лечит у ornith (16 из 30 ответов с галлюцинациями без промпта и 17 из 30 с ним) и не меняет их у qwen (12 и 12), зато у orcarouter судья видит резкое улучшение (17 → 7 из 30) — одиночные прогоны, эффект неустойчив. Вывод: классический промптинг «роль+CoT» надёжного прироста качества не даёт (серии clef его не подтверждают), собственных рассуждений модели не заменяет и фактологию не чинит: он меняет подачу, а не знания.

Мышление против промпта

Вариантclef (5 прогонов)Балл судьи (1 прогон)Галл., clefПровокации, балл clef
gemma4 26B · без мышления3.263.620.163.19
gemma4 26B · без мышления + промпт3.24 -0.023.65 +0.030.17 +0.013.17 -0.02
huihui abliterated 27B · без мышления3.273.220.313.12
huihui abliterated 27B · без мышления + промпт3.27 +0.003.35 +0.130.30 -0.013.10 -0.02
ornith-1.5 35B · без мышления2.932.700.372.12
ornith-1.5 35B · без мышления + промпт3.07 +0.143.02 +0.320.37 +0.002.49 +0.37
ornith-1.5 35B · с мышлением3.43 +0.503.35 +0.650.33 -0.043.38 +1.26
orcarouter 27B uncensored · без мышления3.383.370.273.27
orcarouter 27B uncensored · без мышления + промпт3.41 +0.033.62 +0.250.24 -0.033.37 +0.10
qwen3.8 27B · без мышления3.333.200.313.14
qwen3.8 27B · без мышления + промпт3.34 +0.013.38 +0.180.28 -0.033.16 +0.02
qwen3.8 27B · с мышлением low3.61 +0.283.33 +0.130.20 -0.113.48 +0.34

Мышление сильнее промпта у обеих моделей, где есть оба варианта: ornith-1.5 35B — +0.65 судьи за мышление против +0.32 за промпт, qwen3.8 — +0.28 по серии clef против +0.01. Промпт по судье поднимает балл у четырёх моделей из пяти, но серии clef прироста не подтверждают; эффект мышления подтверждается обеими линзами.

На провокациях мышление распознаёт ложные предпосылки в 15 случаях из 15 против 12 из 15 без него — колонка «Провокации» в таблице показывает тот же эффект в баллах clef. Промпт частично восстанавливает проверку предпосылок, но внимательности к безопасности в код-ревью не добавляет: рассуждение «о вопросе» не заменяет рассуждение «по существу».

Постоянства промпт не добавляет: медиана размаха балла одного вопроса между прогонами с ним не ниже, чем без него (qwen3.8 4.6% → 7.7% шкалы, huihui 6.6% → 8.1%, orcarouter 4.2% → 4.5%, ornith-1.5 35B 11.7% → 10.0%; радары постоянства — в §4) — промпт меняет ответы, но не закрепляет их.

Цена мышления — время и контекст. Генерация у ornith длится вчетверо дольше (12.4 мин против 3.1), а qwen3.8 на дефолтном уровне medium до обрыва сессии успевает сгенерировать ~150 тыс. токенов: ответы вдвое длиннее обычных (381 тыс. символов против 207 тыс.), и все пять прогонов упёрлись в быстрый контекст сервера того времени 131072 (fp16 KV-кэш при 196k+ выходил из VRAM) — ответы после Q19–Q21 пустые, серия лежит в папке qwen3.8 как артефакт. Размышления в историю чата не пишутся — контекст съедают разросшиеся ответы.

Проблему контекста решили на сервере: KV-кэш переведён из fp16 в q8_0, окно 262144 помещается в VRAM целиком без потери скорости (146 ток/с на разогретой модели). Чистая серия low на 262k — пять прогонов без единого дефекта: clef 3.61 ± 0.02 (+0.28), судья 3.33 (+0.13). Чистота не выросла: галлюцинаций по судье больше — 17 из 30 против 12; подробные ответы с размышлениями дают больше материала для выдумок. Расчёт clef при этом падает 0.31 → 0.20: эвристика яруса 1 факты не проверяет, и длинные обоснования кажутся ей убедительными. Итог: мышление поднимает качество, но не чистоту ответов.

Уровни мышления

Параметр think в ollama 0.40 принимает логическое значение (вкл/выкл) или именованный уровень; набор уровней свой у каждой модели — перечислен в таблице ниже. В сериях использованы: выкл (все базовые серии), нативный дефолт (ornith-1.5 35B и 9B с мышлением) и у qwen3.8 — дефолтный medium (ранние прогоны с обрывами) и low (измеренная серия, детали выше).

МодельЗначения thinkДефолт
qwen3.8 27B · huihui abliteratedвыкл · low · medium · xhighmedium
muse-glimmerвыкл · low · medium · high · maxhigh
ornith-1.5 35B · 9Bвкл/выкл; именованные уровни сервером не декларируютсянативный, не декларируется
orcarouter uncensored · gemma4 26B · gemma4 e2bтолько вкл/выклвкл
medgemma 27Bканала мышления нет—

Вопросы делятся на фактологические (PHP, ООП, Symfony, Doctrine, PostgreSQL, git — «либо знаешь, либо нет») и требующие рассуждения (архитектура, тестирование, конкурентность, провокации, код-ревью). Прирост к базе без мышления, в скобках — процент от базы:

ВариантФактологияРассуждения
ornith-1.5 35B + мышление · clef, серии+0.44 (+15%)+0.54 (+19%)
ornith-1.5 35B + мышление · судья+0.67 (+29%)+0.64 (+22%)
qwen3.8 + think low · clef, чистая серия+0.33 (+10%)+0.26 (+8%)
qwen3.8 + think low · судья, 2 оценённых прогона+0.00 (+0%)+0.32 (+10%)

Мышление поднимает обе группы вопросов во всех строках таблицы, кроме одной: у qwen3.8 на low по судье фактология не выросла (+0.00) при росте рассуждений (+10%). Low — минимальный уровень, поэтому неясно, принципиален предел или уровня не хватило; ответ дал бы перебор уровней. clef в этой же строке видит рост в обеих группах (+10% и +8%): он оценивает полноту изложения, и длинные обоснования выглядят содержательно в любой группе.

7Выбор судей и метрик для оценки ответов

Оценку выставляют два яруса — дешёвый clef и LLM-судья GLM-5.3-Flash. Для первого яруса искали оценщика — быстрый и дешёвый при сохранении качества: пробовали эмбеддинг-модели и decision-модели, остановились на decision clef; метрики подбирали перебором восьми подходов. LLM-судья назначен эталоном и проверен: спорные утверждения его вердиктов проверяли исполнением — запуском кода на PHP 8.5 и разбором исходников библиотек (7 из 7 подтвердились), а режим мышления — сравнением low/max.

Сравнение кандидатов на роль первого яруса

Мерили против судьи GLM-5.3-Flash (изолированные проверки с запуском кода): корреляция баллов, точность детекции галлюцинаций (AUC), доля пойманных PHP-ошибок, верифицированных запуском на PHP 8.5.

МодельЗачем пробовалиВердикт
clef 27B Q4 (локально)основной кандидатПринят, судья яруса 1: corr 0.62 с судьёй GLM-5.3-Flash, AUC 0.93, ловит 7 из 10 верифицированных ошибок. Модели ранжирует точно (Спирмен 0.92 с судьёй GLM-5.3-Flash по средним баллам), но на отдельных ответах слабее; сжимает шкалу (сильным −0.4, слабым +0.4), не обнаруживает галлюцинации внутри грамотного текста, занижает корректные короткие отказы
clef-flash 9Bдешёвый предварительный отборОтклонён как оценщик: corr 0.06–0.09 с судьёй GLM-5.3-Flash; годится только на грубые бинарные признаки
clef bf16 (облако)проверка влияния квантованияНе нужно: идентичен локальному Q4 (corr 0.98–0.99); облако к тому же режет контекст судьи до 2K токенов
Jev 1.13 (typesafe)лидер внешних бенчей decision-моделейХуже clef в PHP-домене: corr 0.51, AUC 0.89, 4 из 10 ошибок, эскалация перегрета (медиана 0.54). Согласуется с внешним бенчем, где clef победил колонку Programming
bge-m3 (эмбеддинги)дешёвая и быстрая замена судьеТолько черновой фильтр: ниже 0.78 близости к SOTA-эталону ответ плохой; близость измеряет тему, а не истинность — галлюцинация на нужную тему получает близость выше безупречного ответа
mxbai / e5 / nomicальтернативы яруса 0mxbai непригоден (corr 0.13–0.25); e5 сжимает диапазон (контекст 512 токенов, инструкции и чанкинг не помогли); nomic сопоставим с bge-m3, оставлен запасным

Подбор метрик

В итоговый пайплайн (score.py задаёт decision-модели пять вопросов) вошли два подхода:

  1. Балл качества и вероятность галлюцинаций — две базовые метрики: clef отвечает на вопросы quality и hallucination по каждому ответу (устройство оценки — в §2); из балла складываются средние таблицы §4, из вероятности — колонка «галл.» с расчётом clef.
  2. Триггер эскалации need_review — явный вопрос «нужен ли более знающий судья?». Обошёл перебор сигналов (расхождение decision-моделей, уверенность, комбинации): корреляция с фактом «ответ требовал судьи» 0.76 против 0.34 у уверенности в балле. Штатный триггер (need_review > 0.3 или hallucination > 0.3) на 480 ответах о знаниях отправляет на второй ярус 41%; из них 59% действительно требовали судьи (эталон — подтверждённая галлюцинация или балл не выше 2), пропускается 27% проблемных. Попутно исправлен изъян ранней формулировки: она ссылалась на оценку качества, которой в отдельном вызове не было.

Отброшено:

  1. clef-flash как оценщик — корреляция балла с судьёй ≈ 0, качество не оценивает.
  2. Семь вероятностных признаков ответа (код, структура, глубина, имена API, точные числа, сомнение, противоречия) — каждый по отдельности слабее явного вопроса need_review.
  3. Расширение триггера OR-условиями factcheck_zone и unsure — поднимает полноту до 82%, но эскалация растёт до 55%, а точность падает до 50%; сами признаки score.py собирает, но в триггер не включает.
  4. Близость к SOTA-ответу по эмбеддингам (косинус к ответам Sol/Opus на тот же вопрос, bge-m3 и три альтернативы, 363 ответа) — корректность не измеряет, эмбеддинг меряет стиль изложения: рейтинг моделей по близости не совпадает с судьёй (ранговая корреляция 0.05–0.33), Luna пишет коротко и в стиле OpenAI — и потому похожа на Sol больше, чем качественная ornith-1.5 35B со своим строем ответов; галлюцинация на нужную тему ближе к эталону (0.872), чем безупречный ответ (0.870). Инструкционный формат и чанкинг e5 корреляцию не улучшают. Оставлена как бесплатный фильтр дна: близость ниже ~0.78 — ответ точно плохой.
  5. Якорные уровни («оцени по образцу идеального ответа») — пример идеального ответа не устраняет сжатия шкалы.
  6. Чек-листы хороших и плохих пунктов — интегральный балл слабый; детекторы «плохих» пунктов ловят семантические ошибки, невидимые clef, но в итоговый пайплайн не вошли. Пункты формулировать надо как «предлагает X как решение», а не «упоминает X» — упоминание само по себе не ошибка.
  7. Семантическая энтропия — метод обнаружения галлюцинаций из статьи в Nature (2024): если модель на один вопрос даёт разные по смыслу ответы, она не знает правильного. В наших данных не сработало: корреляция с галлюцинациями −0.35 — qwen повторяет одну и ту же галлюцинацию от прогона к прогону.

Пороги триггера эскалации (need_review > 0.3, hallucination > 0.3) подобраны по корпусу с вердиктами судьи — под баланс точности и полноты. При их подборе всплыла особенность clef: на бинарных вопросах он возвращает квадрат своей уверенности (уверенность 0.9 → вероятность 0.81, замечено во внешнем бенче decision-моделей). Поэтому вероятности разных decision-моделей живут в несравнимых шкалах, и порог для каждой подбирается заново: порог clef 0.30 срабатывает примерно там же, где порог Jev 0.70.

Сводка проверенных гипотез

ГипотезаРезультат
Дешёвый clef судит факты?Нет, оценивает форму: корректный короткий отказ получает 2.8–3.2, многословная галлюцинация 3.5. Ранжирует точно (corr 0.92 с судьёй GLM-5.3-Flash), шкалу сжимает: занижает сильным моделям ~0.4, завышает слабым ~0.4
Лидер внешних бенчей Jev 1.13 лучше?Нет: corr 0.51 против 0.62, AUC детекции галлюцинаций 0.89 против 0.93, на верифицированных PHP-ошибках 4/10 против 7/10 — лидер внешних бенчей не покрывает PHP-специфику
Квантование судьи (Q4 против bf16)?Не влияет: корреляции 0.97–0.99, вердикты совпадают до второго знака. Локальный clef эквивалентен облачному
Близость к SOTA-ответу по эмбеддингам заменяет судью?Только как черновой фильтр: галлюцинированный ответ на нужную тему получает близость выше безупречного — близость измеряет тему, а не истинность
Семантическая энтропия (Nature, 2024) как сигнал лжи?Не переносится на длинные ответы: галлюцинации qwen стабильны между прогонами, корреляция −0.35. Метод работает на коротких фактических ответах

Режим мышления судьи: low против max

LLM-судья работает с мышлением, и уровень задаётся явно: max точнее, но тратит примерно втрое больше токенов. Чтобы решить, какой режим на какую работу пускать, сравнили вердикты одних и тех же ответов, оценённых судьёй в обоих режимах: 30 ответов из эксперимента (по 10 у ornith-1.5 9B, ornith-1.5 35B и qwen3.8) и полный прогон qwen3.8 (run-16, 30 ответов), оценённый сначала на low, затем на max, — всего 60 сравнений (балл — шкала 0–4 с шагом 0.5, сравнение точное):

МетрикаЗначение
Разница баллов между режимамисовпадение — 40 (67%), 0.5 балла — 10 (17%), 1 балл — 9 (15%), 2 балла — 1 (2%)
Согласие флага галлюцинацийпрямых совпадений 82%; если бы судьи отвечали наугад с той же частотой флага, совпало бы 49%. Каппа Коэна 0.64 — насколько реальные совпадения перекрывают этот случайный фон: 0 — не перекрывают, 1 — полное согласие; 0.64 — «значительное» согласие по шкале Ландиса–Коха (0.61–0.80, выше — почти идеальное)
Известные проверенные ошибки qwen3.84 ошибки, подтверждённые исполнением кода и первоисточниками; судья на low находит все четыре, как и на max
Токены на оценку одного ответа~8 тыс. на low против ~27 тыс. на max — на 70% меньше

Итог: судейство для трендов и сравнения моделей — на low; финальные вердикты и обнаружение тонких фабрикаций — на max. Low ставит в среднем на +0.13 балла выше, поэтому оценки разных режимов в одну таблицу не смешиваются.

8Экономика собеса

Цена облачной сессии — фактическое списание API. Цена локальной — модель стоимости из двух компонентов (электричество и амортизация железа), отнесённая ко времени чистой генерации — без загрузки модели в память и простоев.

Цена локальной модели

КомпонентДопущенияСтавка
Электричество550 Вт (CPU+GPU) в момент генерации, ₽7.07/кВт·ч (тариф с 01.10.2026)₽3.89/ч
Амортизация железа₽600 000 за вычетом остаточной стоимости 30% (GPU держат цену на вторичке), эксплуатация 12 ч/день, окупаемость 3 года: верхняя граница нормы (2-я амортизационная группа, 2–3 года), итого 13 140 часов работы₽31.96/ч
Итогокурс ₽85.15/$₽35.85/ч ≈ $0.42

Интервью

Стоимость одной сессии по всем протестированным вариантам:

МодельМышлениеСист. промптВремяЦенаЦена без амортизации
Opus 5.5
облако
low—29.3 мин$5.82
₽495.88
—
GPT-6.1 Sol
облако
low—14.2 мин$0.62
₽52.96
—
GPT-6 Luna
облако
low—6.4 мин$0.0300
₽2.56
—
Haiku 5.5
облако
low—6.3 мин$0.18
₽15.52
—
DeepSeek V4.1 Flash
облако
low—11.9 мин$0.25
₽21.22
—
gemma4 26B
локально
безда2.6 мин$0.0186
₽1.58
$0.0020
₽0.17
orcarouter 27B
локально
безда17.7 мин$0.12
₽10.58
$0.0135
₽1.15
muse-glimmer 28B
локально
без—9.2 мин$0.0646
₽5.50
$0.0070
₽0.60
GigaChat-3 Ultra
облако
нет—10.9 мин₽0
freemium
—
qwen3.8 27B
локально
безда9.8 мин$0.0690
₽5.88
$0.0075
₽0.64
orcarouter 27B uncensored
локально
без—16.4 мин$0.12
₽9.82
$0.0125
₽1.06
ornith-1.5 35B
локально
вкл—12.4 мин$0.0869
₽7.40
$0.0094
₽0.80
huihui abliterated 27B
локально
безда9.3 мин$0.0655
₽5.58
$0.0071
₽0.60
qwen3.8 27B
локально
low—27.1 мин$0.19
₽16.22
$0.0206
₽1.76
huihui abliterated 27B
локально
без—8.4 мин$0.0588
₽5.01
$0.0064
₽0.54
qwen3.8 27B
локально
без—8.9 мин$0.0626
₽5.33
$0.0068
₽0.58
ornith-1.5 35B
локально
безда4.6 мин$0.0324
₽2.76
$0.0035
₽0.30
GigaChat-2 Max
облако
нет—11.0 мин₽0
freemium
—
ornith-1.5 35B
локально
без—3.1 мин$0.0216
₽1.84
$0.0024
₽0.20
medgemma 27B
без—20.5 мин$0.14
₽12.26
$0.0156
₽1.33
ornith-1.5 9B
локально
вкл—11.8 мин$0.0831
₽7.08
$0.0090
₽0.77
gemma4 e2b 4.6B
без—3.4 мин$0.0236
₽2.01
$0.0026
₽0.22
YandexGPT Pro 5
облако
нет—3.6 мин$4.36
₽371.42
—

Локальная сессия не дешевле дешёвых облаков: qwen3.8 27B — $0.063 против $0.0300 у Luna, а с мышлением low ($0.19) — уже дороже Haiku и медленнее её вчетверо. Локальный инференс окупается приватностью и неограниченным объёмом, а не ценой за сессию.

Сбер в бизнес-ценах неконкурентен: GigaChat-2 Max стоит как Opus (₽216–565 ≈ $2.54–6.64 за сессию) при балле 2.78 — уровне негативного контроля medgemma (2.67); GigaChat-3 Ultra через cloud.ru (₽70.71–140.10) берёт близко к цене Sol, а даёт балл 3.38 — ниже лучшей локальной muse-glimmer (3.53). Дешевле всего российский ИИ — физлицу во freemium.

Оценка (1-й ярус) — decision-модель

clef оценил 3 439 ответов в 86 интервью — суммарно 48 минут GPU, или ₽29 по модели стоимости. Оценка одного интервью занимает у clef 33 секунды и стоит ₽0.33.

Время оценочное: латентность clef (время ответа на один запрос) определена контрольными вызовами и умножена на количество прошлых вызовов — их собственные тайминги не сохранялись. Теперь score.py логирует латентность и токены каждого вызова, поэтому вперёд стоимость будет считаться точно.

Оценка (2-й ярус) — LLM-судья

LLM-судья вынес 862 вердикта, всё по подписке Z.AI. Первые 219 — workflow с акторами-сабагентами, по ~206 тыс. токенов на вердикт: актор наследует контекст и модель сессии. После перевода на изолированные запуски judge_glm.py вердикт стоит ~27 тыс. токенов — в восемь раз дешевле. Суммарно ~62 млн токенов подписки и около 40 часов судейства; по API-ценам Z.AI это стоило бы порядка ₽1 800 — сабагенты работали полной GLM-5.3, изолированные запуски — Flash.

Подготовка отчёта

Отчёт собирал ассистент (GLM-5.3, та же подписка). По локальной базе сессии (ZCode sqlite): 6–14 октября, 727 ходов и 4 800 модельных запросов, 1.58 млрд входящих токенов с кэш-покрытием 97%, 2.8 млн выходных, суммарная длительность ходов 55.8 часа; 7 компактов контекста (3 автоматических, 4 вручную). Подписка токены не тарифицирует.

9Сессии и данные

Всё исследование живёт в репозитории github.com/prikotov/task-llm-hiring: скрипты запуска и судейства, вопросники, инструкции агентам (AGENTS.md), сырые данные всех прогонов и вердикты обоих ярусов. Отчёт собирается из этих данных скриптом interview/build_report.py.

Состав данных репозитория

ДанныеГдеЧто внутри
Папки моделейmodels/29 папок, по одной на модель; всё её данные (карточка, прогоны, свод результатов, вердикты) лежат внутри — расшифровка ниже
Карточки моделейmodels/<модель>/model.md29 карточек: характеристики, статус, история прогонов, наблюдения по каждой модели
Прогоныmodels/<модель>/backend/run-XX/96 прогонов: session.json (вопросы, ответы, размышления, тайминги, условия серии) и transcript.md — читаемый транскрипт
Своды результатов моделейmodels/<модель>/backend/scorecard.md6 сводок: итоги прогонов модели — устойчивость ответов, провокации, самооценка, подходы к решениям
Вердикты clef (ярус 1)models/<модель>/backend/judgments/clef/<run>.json — 13, новый формат с телеметрией вызовов; decision-clef-<run>.csv — 86, прежний формат; escalation-clef-<run>.csv — эскалационные признаки. Балл и вероятности галлюцинации по каждому ответу
Вердикты LLM-судьи (ярус 2)models/<модель>/backend/judgments/glm-5.3-flash-iso/27 файлов: балл, флаг галлюцинации, пояснение с проверками кодом; run-16.low.json — артефакт сравнения low/max
Задачи судействаmodels/<модель>/backend/judgments/tasks/26 наборов входных пар вопрос-ответ для воспроизводимости вердиктов
Кросс-модельные агрегатыreports/Своды и исследования: decision-all.csv — свод вердиктов clef/clef-flash (неполон: облачные прогоны есть только в папках моделей), judges-all.csv — все судьи, scoring-calls.jsonl — журнал вызовов оценщиков с латентностью и токенами (с 14 октября), исследования судей (COMPARE-*, AUDIT, EMBEDDINGS, LOW-vs-MAX), журнал трат OpenRouter; field/ — полевые документы эксплуатации (копии отчётов агентов TasK о ревьювере на qwen3.8, §10)
Методикаinterview/вопросники ролей, раннеры, скрипты судейства и оценки; task-roles/ — описания ролей команды TasK (ru), под которые проводятся собеседования

Имена колонок в decision-all.csv и judges-all.csv частично расходятся с целевым score.py: conf — уверенность в балле (в score.py — score_confidence), hall_p — вероятность галлюцинации (в score.py — hallucination_p); столбцы от has_code до contradictions — семь вероятностных метрик эксперимента с судьями (§7), в целевом score.py их нет.

Прогоны

Все завершённые прогоны; ссылки ведут на полные транскрипты в репозитории.

Полнота. Завершённых сессий: 84. Неполные прогоны (оборваны пустыми ответами из-за переполнения контекста мышлением: qwen3.8 runs 01–05, ornith runs 01–02; прерван по бюджету Opus run-01) исключены и лежат в тех же папках. Прогон yandexgpt после 403 (исчерпание баланса) завершён через resume без пересчёта первых вопросов.
Числа. Токены и стоимость — фактические данные API; источники кэш-процентов — в сноске 6 §4, устройство кэша (сессия против прогонов) — в §2. «н/д» в кэше — нет данных (у локальных не измеряли), «выключен» — кэш сессии отключён. Прочерк в кэше — прогоны 6–8 октября с выгрузкой модели после каждого хода: кэш сессии не работал, каждый ход пересчитывал префикс с нуля. Входные токены уточнений в ранних прогонах не сохранялись (учтены основные вопросы).

Opus 5.5

anthropic-claude-opus-5.5/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-02reasoning effort lowv23529 мин3,736,179177,035~94%$5.82
₽495.88

GPT-6.1 Sol

openai-gpt-6.1-sol/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01reasoning effort lowv23514 мин968,80041,90595%$0.62
₽52.96

Haiku 5.5

anthropic-claude-haiku-5.5/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01reasoning effort lowv2356 мин1,483,61167,902выключен$0.18
₽15.52
run-02reasoning effort lowv2356 мин1,447,71065,450~94%$0.0550
₽4.68
run-03reasoning effort lowv2357 мин1,583,84974,88895%$0.0617
₽5.25

GPT-6 Luna

openai-gpt-6-luna/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01reasoning effort lowv2356 мин785,39535,968~94%$0.0300
₽2.56

DeepSeek V4.1 Flash

deepseek-flash/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01effort low (родной API)v23512 мин2,718,519159,05695%$0.25
₽21.22

GigaChat-2 Max

gigachat/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01по умолчаниюv23511 мин832,53436,92965%₽010
10 GigaChat-2 Max: физлицу ₽0 (freemium, 3.5% квоты 25 млн токенов/12 мес); для работы (юрлицо) тариф Сбера ₽650/1M токенов без разбивки вх/вых (асинхронно ₽325/1M, минимальный платёж ₽600/мес), полная сессия ₽216.05–565.15 (~$2.54–6.64), вилка отражает нераскрытую тарификацию кэша.

GigaChat-3 Ultra

gigachat-3-ultra/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01по умолчаниюv23511 мин1,279,49458,86556%₽011
11 GigaChat-3 Ultra: физлицу ₽0 (freemium, 2.7% квоты 50 млн токенов/12 мес); для работы (юрлицо) модель юрлицам у Сбера не продаётся, доступ только cloud.ru Foundation Models (₽96/1M вход + ₽289/1M выход), полная сессия ₽70.71–140.10 (~$0.83–1.65), вилка отражает нераскрытую тарификацию кэша.

YandexGPT Pro 5

yandexgpt/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01по умолчаниюv2354 мин294,22015,30090%
биллинг
$4.36
₽371.42

ornith-1.5 35B

ornith-1.5-35b/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-03мышление включеноv13212 мин973,379137,983—$0.0813
₽6.92
run-04мышление включеноv13212 мин1,131,318138,902—$0.0863
₽7.34
run-05мышление включеноv13213 мин1,085,381156,100—$0.0931
₽7.93
run-06мышление включеноv13214 мин1,206,085164,643—$0.0969
₽8.25
run-07мышление выключеноv1323 мин838,68445,127н/д$0.0182
₽1.55
run-08мышление выключеноv1324 мин1,233,43065,458н/д$0.0264
₽2.24
run-09мышление выключеноv1323 мин996,70554,994н/д$0.0223
₽1.90
run-10мышление выключеноv1323 мин947,32253,501н/д$0.0216
₽1.84
run-11мышление выключеноv1323 мин827,09248,379н/д$0.0194
₽1.66
run-12системный промпт (роль+CoT+недоверие)v1323 мин903,07950,564н/д$0.0199
₽1.70
run-13системный промпт (роль+CoT+недоверие)v1324 мин1,227,67773,176н/д$0.0308
₽2.62
run-14системный промпт (роль+CoT+недоверие)v1324 мин1,197,68668,696н/д$0.0284
₽2.41
run-15системный промпт (роль+CoT+недоверие)v1324 мин1,184,95772,914н/д$0.0308
₽2.62
run-16системный промпт (роль+CoT+недоверие)v1322 мин843,69643,915н/д$0.0175
₽1.49
run-17системный промпт (роль+CoT+недоверие)v2354 мин1,443,98571,329н/д$0.0303
₽2.58
run-18системный промпт (роль+CoT+недоверие)v2355 мин1,575,53285,188н/д$0.0370
₽3.15
run-19системный промпт (роль+CoT+недоверие)v2354 мин1,180,78561,251н/д$0.0252
₽2.14
run-20системный промпт (роль+CoT+недоверие)v2354 мин1,393,92972,884н/д$0.0310
₽2.64
run-21системный промпт (роль+CoT+недоверие)v2356 мин1,612,68388,058н/д$0.0385
₽3.27

qwen3.8 27B

qwen3.8/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-06мышление выключеноv1328 мин1,309,82973,579н/д$0.0585
₽4.98
run-07мышление выключеноv1329 мин1,369,55177,371н/д$0.0640
₽5.45
run-08мышление выключеноv1329 мин1,425,03581,245н/д$0.0632
₽5.38
run-09мышление выключеноv1329 мин1,337,10375,630н/д$0.0619
₽5.27
run-10мышление выключеноv1329 мин1,389,86479,871н/д$0.0652
₽5.56
run-11системный промпт (роль+CoT+недоверие)v23511 мин1,796,73288,344н/д$0.0757
₽6.44
run-12системный промпт (роль+CoT+недоверие)v2359 мин1,515,72975,470н/д$0.0632
₽5.38
run-13системный промпт (роль+CoT+недоверие)v23510 мин1,618,77781,866н/д$0.0680
₽5.79
run-14системный промпт (роль+CoT+недоверие)v23510 мин1,690,97285,084н/д$0.0716
₽6.10
run-15системный промпт (роль+CoT+недоверие)v23510 мин1,675,98483,101н/д$0.0667
₽5.68
run-16мышление включеноv23518 мин2,286,278135,493н/д$0.12
₽10.49
run-21мышление включеноv23526 мин2,729,551166,005н/д$0.18
₽15.44
run-22мышление включеноv23530 мин2,822,954182,784н/д$0.21
₽17.63
run-23мышление включеноv23526 мин2,640,253164,117н/д$0.18
₽15.51
run-24мышление включеноv23526 мин2,817,540163,726н/д$0.19
₽15.81
run-25мышление включеноv23528 мин2,660,952171,851н/д$0.20
₽16.70

muse-glimmer 28B

muse-glimmer/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv2359 мин567,01828,708—$0.0646
₽5.50
run-02мышление выключеноv2355 мин500,39525,605н/д$0.0347
₽2.95

ornith-1.5 9B

ornith-1.5-9b/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление включеноv23511 мин1,102,706114,262—$0.0771
₽6.57
run-02мышление включеноv23512 мин1,070,713122,099—$0.0828
₽7.05
run-03мышление включеноv23510 мин1,081,24595,862—$0.0706
₽6.01
run-04мышление включеноv23511 мин1,063,788115,670—$0.0750
₽6.39
run-05мышление включеноv23516 мин990,372111,868—$0.11
₽9.37

gemma4 26B

gemma4-26b/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv2352 мин843,05442,921н/д$0.0171
₽1.45
run-02мышление выключеноv2352 мин821,15542,023н/д$0.0168
₽1.43
run-03мышление выключеноv2352 мин828,90642,399н/д$0.0172
₽1.46
run-04мышление выключеноv2352 мин826,45542,848н/д$0.0172
₽1.46
run-05мышление выключеноv2352 мин835,35042,770н/д$0.0173
₽1.47
run-06системный промпт (роль+CoT+недоверие)v2353 мин910,88945,613н/д$0.0187
₽1.59
run-07системный промпт (роль+CoT+недоверие)v2353 мин898,63145,097н/д$0.0182
₽1.55
run-08системный промпт (роль+CoT+недоверие)v2353 мин913,43645,805н/д$0.0187
₽1.59
run-09системный промпт (роль+CoT+недоверие)v2353 мин908,53945,739н/д$0.0186
₽1.58
run-10системный промпт (роль+CoT+недоверие)v2353 мин912,33245,598н/д$0.0187
₽1.59

orcarouter 27B (uncensored)

orcarouter-Qwen3.8-27B-Uncensored-latest/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv13217 мин1,391,10979,674н/д$0.12
₽10.09
run-02мышление выключеноv13216 мин1,338,74376,388н/д$0.11
₽9.53
run-03мышление выключеноv13217 мин1,394,14780,018н/д$0.12
₽10.14
run-04мышление выключеноv13216 мин1,401,28178,657н/д$0.12
₽9.81
run-05мышление выключеноv13216 мин1,319,95175,288н/д$0.11
₽9.51
run-06системный промпт (роль+CoT+недоверие)v23517 мин1,602,02180,901н/д$0.12
₽10.23
run-07системный промпт (роль+CoT+недоверие)v23517 мин1,603,62880,768н/д$0.12
₽10.30
run-08системный промпт (роль+CoT+недоверие)v23518 мин1,692,67486,115н/д$0.13
₽10.96
run-09системный промпт (роль+CoT+недоверие)v23518 мин1,606,57781,732н/д$0.12
₽10.51
run-10системный промпт (роль+CoT+недоверие)v23518 мин1,712,78785,438н/д$0.13
₽10.91

huihui abliterated 27B

huihui_ai-Qwen3.8-abliterated-latest/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv1328 мин1,316,29075,223н/д$0.0599
₽5.10
run-02мышление выключеноv1328 мин1,280,21769,756н/д$0.0550
₽4.68
run-03мышление выключеноv1328 мин1,275,13773,393н/д$0.0585
₽4.98
run-04мышление выключеноv1329 мин1,470,87880,398н/д$0.0618
₽5.26
run-05мышление выключеноv1328 мин1,265,80172,177н/д$0.0590
₽5.03
run-06системный промпт (роль+CoT+недоверие)v2359 мин1,546,31077,428н/д$0.0633
₽5.39
run-07системный промпт (роль+CoT+недоверие)v2359 мин1,544,66178,504н/д$0.0658
₽5.60
run-08системный промпт (роль+CoT+недоверие)v23510 мин1,703,81683,651н/д$0.0685
₽5.83
run-09системный промпт (роль+CoT+недоверие)v2359 мин1,557,70877,580н/д$0.0619
₽5.27
run-10системный промпт (роль+CoT+недоверие)v23510 мин1,777,72286,543н/д$0.0681
₽5.80

medgemma 27B

medgemma-27b/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv23520 мин1,272,56963,194—$0.14
₽12.26

gemma4 e2b 4.6B

gemma4-e2b/
ПрогонУсловияВерсия интервьюОтветовВремяВход. токеныВых. токеныКэшСтоимость
run-01мышление выключеноv2353 мин806,45737,990—$0.0236
₽2.01

10Опыт эксплуатации: qwen3.8 как ревьювер кода

Параллельно с тестированием моделей и подготовкой этого отчёта qwen3.8:27b (контекст 102 400 токенов, мышление max) работала ревьювером пул-реквестов в реальном проекте TasK (стек PHP/Symfony/Doctrine/PostgreSQL, DDD). Ниже — что показало ревью и как это соотносится с результатами собеса. За период с 8 по 13 октября модель проверила 17 пул-реквестов и код 4 задач (task-ветки до открытия пул-реквестов); длительность ревью — от 0.6 до 20 минут, медиана 2.7 минуты. Обратную связь по работе ревьювера подготовил агент-тимлид, который вызывает его сабагентом (сводка); более сильная модель в роли Архитектора отвалидировала принятые ревьювером решения (верификация, вырезка о ревьювере бэкенда) — сверила с журналами сессий, git-историей и отчётами ревью: реальны ли пойманные замечания и нет ли пропусков в одобренных. Ниже — только факты, подтверждённые этой проверкой.

Сопоставление с метриками собеса

Метрика собеса (qwen3.8 27B, §4)Что показало ревью
Балл знаний: судья 3.2–3.3, clef 3.33–3.61 — середина рейтингаЗамечания по тому же стеку (PHP, Symfony, Doctrine, PostgreSQL) Архитектор признал реальными и значимыми
Галлюцинации: судья пометил 12 из 30 ответов на знанияВ проверенной выборке проведённых ревью галлюцинаций не обнаружено — замечания сверены с кодом и git-историей
Провокации: 15 из 15 ложных предпосылок распознаныОписанное в пул-реквесте переименование отсутствовало в ветке — ревьювер поднял это как блокер, а не ревьюил по описанию
Мышление (§6): на low clef +0.28 против выключенного; с полным мышлением прогоны собеса обрываются — контекст переполняетсяДля ревью контекста 102 400 токенов хватает даже с полным мышлением

11Проблемы и дальнейшие планы

Слабые места тестирования локальных моделей и планы по ним. Правки, которые делаются прогонами, снабжены планом; остальные — принимать с оговоркой.

Проблема или ограничениеЧто делать
Кэш-покрытие локальных сессий не измеряли: ollama 0.40 отдаёт поле prompt_eval_cached_count, раннер записывает его с 14 октября, измеренных сессий ещё нет; прогоны 6–8 октября шли вовсе без кэша сессииПрогнать серию с записью поля, добавить измеренные проценты в §4 и §9
LLM-судья оценивал по одному прогону на модель: устойчивость его балла к выбору прогона не проверена; разброс между прогонами показывает только дешёвый оценщик clef (колонка ± в §4)Оценить судьёй 2–3 прогона каждой выбранной модели и добавить разброс его балла в таблицу
Баллы clef и судьи систематически расходятся: по всем парам вердиктов (862 ответа, 17 моделей) судья в среднем выше clef на 0.3 балла, у облачных моделей на +0.4–0.5, у ornith-9b ниже на 0.4 — один и тот же порог в двух шкалах означает разноеКалибровать clef к судье по парам вердиктов и пересчитать пороги (качества в §4, эскалации в §7) в терминах шкалы clef
Полная проверка ответов судьёй медленная; состав вопросов, на которые отвечает clef, не оптималенПересмотреть вопросы, на которые отвечает clef: подбирать формулировки, уменьшающие расхождение его балла с баллом судьи (меньше расхождений — меньше причин звать судью); проверять на парах вердиктов
Триггер эскалации (need_review или hallucination > 0.3, §7) поднимает 41% ответовПосле пересмотра вопросов перебрать пороги: меньше ответов судье при той же полноте по сильным расхождениям и галлюцинациям
Влияние уровня мышления на качество ответов не измерено: сравнивались только включено/выключено (§6), промежуточный уровень — одна точка у qwenПрогнать ряд выбранных локальных моделей на нескольких уровнях мышления и измерить зависимость качества и галлюцинаций от уровня
Вопросник только для роли backend — знания других ролей команды не проверялисьНаписать вопросники 2–3 ролей (architect, devops, qa) и прогнать выбранные модели
Собес ведётся только на русском: влияние языка вопросов (английский против русского) на качество ответов и расход токенов не измереноПеревести вопросник на английский, прогнать выбранные модели и сравнить с русскими прогонами баллы, галлюцинации и токены
Собес измеряет знания, а не умение писать код (§1): тестовое задание — спроектировать решение с нуля с запускаемым итогом — не сделаноСделать тестовое задание: одним ответом в чистом чате спроектировать решение с нуля, результат должен запускаться; прогнать выбранные модели и проверить итоги исполнением
Полевые данные эксплуатации (§10) собраны только по qwen3.8 в роли ревьювераСобирать полевые данные по другим ролям и моделям при их подключении