Отчёт подготовлен с 6 по 14 октября 2026 года в ZCode при содействии моделей GLM-5.3 и GLM-5.3-Flash.
Мы провели техническое собеседование на роль 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.
Этот отчёт для тех, кто выбирает модель под задачи и понимает ограничения локальных моделей: до облачных флагманов они не дотягивают, поэтому процесс приходится подстраивать. Как и с людьми, с моделями применима модель ситуационного лидерства Херси и Бланшара: сильной достаточно короткой постановки, слабой нужны детальный контекст и проверки. Рейтинг ниже показывает силу каждой модели по разделам стека, чтобы понимать, как подходить к ней в конкретной задаче.
Скриптованное интервью, одинаковые условия для всех, судейство с проверкой фактов.
Собеседование сделано в виде скриптованного интервью из 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 (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/ (пример).
Кто участвовал и почему: состав отражает вопросы исследования, от потолка облаков и честной цены до локальных кандидатов, российских облаков и негативных контролей.
| Модель | Провайдер вызова | Почему в тесте | Детали |
|---|---|---|---|
| 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 локально | локально · ollama | abliterated-файнтюн qwen3.8: сняты отказохранители | мышление выключено |
| orcarouter 27B uncensored локально | локально · ollama | uncensored-файнтюн qwen3.8: сняты отказохранители | мышление выключено |
| medgemma 27B негат. контроль | локально · ollama | негативный контроль: медицинский файнтюн, проверяем различимость шкалы на чужом домене | мышление выключено |
| gemma4-e2b 4.6B негат. контроль | локально · ollama | негативный контроль: крошка, низ шкалы | мышление выключено |
| Компонент | Модель | Ключевое |
|---|---|---|
| Процессор | AMD Ryzen 9 9950X3D | 16 ядер / 32 потока, Zen 5, до 5.7 ГГц, TDP 170 Вт |
| Видеокарта | Palit GeForce RTX 5090 GameRock OC | 32 ГБ GDDR7, 21 760 CUDA-ядер, 1792 ГБ/с, PCIe 5.0 |
| Материнская плата | MSI MAG X870 TOMAHAWK WIFI | AM5, PCIe 5.0 |
| Память | G.Skill Trident Z5 Royal Neo 96 ГБ | DDR5-6000, 2×48 ГБ |
| Накопители | Kingston FURY Renegade G5 2 ТБ ×2 | NVMe M.2 |
| Подсистема | Режим | Что это значит |
|---|---|---|
| CPU | governor performance, amd_pstate active | буст до ~5.6 ГГц держится под нагрузкой, троттлинга нет |
| GPU PCIe | PCIe 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 | версии зафиксированы на время серий; обновления сервера между сериями не проводились |
| Драйвер и CUDA | NVIDIA 610.57.04, CUDA 13.3 | свежий стек для Blackwell; версия драйвера влияет на скорость ollama (кубы под конкретную CUDA) |
| ollama | 0.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).
Таблица сравнивает модели в стандартных условиях: системный промпт не задавался, мышление у локальных моделей выключено, у облаков 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, ярус 1 | LLM судья, ярус 2 | Провокации5 | Токены6 | Время6 | Цена7 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| балл1 | галл.2 | балл3 | галл.4 | ||||||||
| Opus 5.5 облако |
low | — | 1 | 2/30 | 3/3 | 177,035 ~94% кэш |
29.3 мин | $5.82 ₽495.88 | |||
| GPT-6.1 Sol облако |
low | — | 1 | 0/30 | 3/3 | 41,905 ~95% кэш |
14.2 мин | $0.62 ₽52.96 | |||
| GPT-6 Luna облако |
low | — | 1 | 0/30 | 3/3 | 35,968 ~94% кэш |
6.4 мин | $0.0300 ₽2.56 | |||
| Haiku 5.5 облако |
low | — | 1 | 2/30 | 3/3 | 67,902 ~95% кэш |
6.3 мин | $0.18 ₽15.52 | |||
| DeepSeek V4.1 Flash облако |
low | — | 1 | 10/30 | 3/3 | 159,056 95% кэш |
11.9 мин | $0.25 ₽21.22 | |||
| gemma4 26B локально |
без | да | 5 | 2/30 | 15/15 | 39,234 | 2.6 мин | $0.0186 ₽1.58 | |||
| orcarouter 27B локально |
без | да | 5 | 7/30 | 14/15 | 71,376 | 17.7 мин | $0.12 ₽10.58 | |||
| muse-glimmer 28B локально |
без | — | 1 | 5/30 | 3/3 | 24,778 | 9.2 мин | $0.0646 ₽5.50 | |||
| GigaChat-3 Ultra облако |
нет | — | 1 | 10/30 | 3/3 | 58,865 56% кэш |
10.9 мин | ₽08 | |||
| qwen3.8 27B локально |
без | да | 5 | 12/30 | 15/15 | 70,992 | 9.8 мин | $0.0690 ₽5.88 | |||
| orcarouter 27B uncensored локально |
без | — | 5 | ±0.03 по прогонам |
17/30 | 15/15 | 66,833 | 16.4 мин | $0.12 ₽9.82 | ||
| ornith-1.5 35B локально |
вкл | — | 3 | ±0.01 по прогонам |
14/30 | 9/9 | 128,316 | 12.4 мин | $0.0869 ₽7.40 | ||
| huihui abliterated 27B локально |
без | да | 5 | 13/30 | 14/15 | 68,987 | 9.3 мин | $0.0655 ₽5.58 | |||
| qwen3.8 27B локально |
low | — | 5 | ±0.02 по прогонам |
17/30 | 15/15 | 149,714 | 27.1 мин | $0.19 ₽16.22 | ||
| huihui abliterated 27B локально |
без | — | 5 | ±0.01 по прогонам |
17/30 | 13/15 | 63,397 | 8.4 мин | $0.0588 ₽5.01 | ||
| qwen3.8 27B локально |
без | — | 5 | ±0.03 по прогонам |
12/30 | 15/15 | 65,687 | 8.9 мин | $0.0626 ₽5.33 | ||
| ornith-1.5 35B локально |
без | да | 5 | 17/30 | 11/15 | 65,949 | 4.6 мин | $0.0324 ₽2.76 | |||
| GigaChat-2 Max облако |
нет | — | 1 | 7/30 | 2/3 | 36,929 65% кэш |
11.0 мин | ₽09 | |||
| ornith-1.5 35B локально |
без | — | 5 | ±0.07 по прогонам |
16/30 | 12/15 | 45,502 | 3.1 мин | $0.0216 ₽1.84 | ||
| medgemma 27B | без | — | 1 | 14/30 | 1/3 | 55,430 | 20.5 мин | $0.14 ₽12.26 | |||
| ornith-1.5 9B локально |
вкл | — | 5 | ±0.06 по прогонам |
20/30 | 15/15 | 93,048 | 11.8 мин | $0.0831 ₽7.08 | ||
| gemma4 e2b 4.6B | без | — | 1 | 7/30 | 0/3 | 32,332 | 3.4 мин | $0.0236 ₽2.01 | |||
| YandexGPT Pro 5 облако |
нет | — | 1 | 4/30 | 2/3 | 17,159 90% кэш |
3.6 мин | $4.36 ₽371.42 | |||
В разминке (вопрос 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 всё равно продуктивна, если схема и миграции приходят вместе с задачей, а результат проходит статический анализ. Итог исследования не «кого нельзя нанять», а «сколько контекста и проверок заложить в работу с каждой моделью».
Насколько модель отвечает одинаково от прогона к прогону: разброс оценки clef (ярус 1, шкала 0–4) одного и того же вопроса между прогонами. Постоянство — единственный показатель отчёта на чистой шкале clef, без подстановки итогового балла (судья, где проверял, иначе clef): судья яруса 2 проверил по одному прогону на серию, а для размаха нужны оценки одного вопроса в нескольких прогонах; смешивать шкалу судьи со шкалой clef нельзя — шкалы систематически смещены друг относительно друга (§7), и размах получился бы из разницы шкал, а не из непостоянства модели. Только строки с несколькими прогонами: локальные модели в стандартных режимах и их варианты с системным промптом (3–5 прогонов); у облачных моделей, muse-glimmer и негативных контролей прогон один, мерить нечего.
Свеча — это распределение вопросов одной строки таблицы: тело охватывает половину вопросов в середине распределения (между квартилями), усы ведут к минимальному и максимальному расхождению, тёмная риска — это медиана. У самых постоянных моделей медиана 1–2% от максимального балла, но почти у каждой есть вопросы, гуляющие на четверть шкалы и больше. Самый широкий ус — провокация Q24 (FORCE INDEX) у ornith-1.5 35B без мышления: в двух прогонах из пяти модель уверенно описывает несуществующую конструкцию PostgreSQL (0.5–0.7 балла), в трёх вскрывает ложную предпосылку и называет корректные альтернативы (1.9–2.8). Исключать провокации из расчёта не нужно: медианы от этого сдвигаются не больше чем на полпункта, порядок серий сохраняется.
Каждый радар — это одна строка таблицы: луч темы показывает средний размах её ответов в этой теме; единая шкала для всех радаров, 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) и вынесены на левый край.
● облако · ● локальные · ● русские · ● негативные контроли. Диаметр точки кодирует долю ответов с галлюцинациями (чем больше, тем грязнее). Ось Y обрезана от 1.5: моделей ниже не было.
Каждая точка — строка таблицы выше: по вертикали балл модели, по горизонтали минуты полного собеседования, диаметр точки кодирует объём выходных токенов (многословность). Пунктир делит поле на зоны: порог качества 3.0 балла, порог скорости 10 минут.
«Железное» правило управления проектами «быстро, качественно, дёшево — выберите любые два» работает и здесь. Три оси — цена сессии, балл оценки качества и время полного собеседования в минутах; цена сжата логарифмически, чтобы дешёвые модели не слипались на фоне Opus. Каждый шарик изображает одну модель в одном режиме работы (строку таблицы результатов: например, у ornith-1.5 35B три шарика — без мышления, с мышлением и с системным промптом), а радиус шарика кодирует объём выходных токенов. Сцену можно вращать мышью, приближать колесом; золотой каркасный многогранник у вершины оси качества — маркер недостижимого идеала (максимально дёшево + быстро + качественно), и вокруг него пусто.
Точки цветом повторяют группы карт выше: синие облака, зелёные локальные, голубые российские, терракотовые негативные контроли. Наведите курсор на шарик — карточка с баллом, ценой, минутами и токенами.
Что видно при вращении. Облако точек натянуто по диагонали от идеального угла: правило «выберите любые два» выполняется, ни одна модель не занимает угол целиком. Ближе всех к идеалу 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, но с качеством на дне шкалы.
На одних и тех же 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 отвечали на один и тот же вопрос.
int(15). Модель приписала PHP семантику JavaScript.Вопрос эксперимента: даёт ли системный промпт тот же прирост качества, что и собственное мышление модели. Промпт проверен на пяти локальных моделях: каждая сдавала собеседование дважды, без промпта и с ним, по пять независимых прогонов на вариант; все прогоны оценивает clef, и дополнительно судья GLM-5.3-Flash проверил по одному прогону каждого варианта. Мышление проверено на ornith-1.5 35B в трёх вариантах и на qwen3.8 на уровне think low серией из пяти прогонов (дефолтный medium тогда не помещался в быстрый контекст сервера 131072 — до перевода KV-кэша в q8_0; на 262k medium не проверялся, детали ниже под таблицей). Дословный текст промпта — в карточке ниже.
| Модель | Балл без промпта | С промптом | Δ | Провокации без | с промптом | Δ |
|---|---|---|---|---|---|---|
| ornith-1.5 35B | 2.93 | 3.07 | +0.14 | 2.12 | 2.49 | +0.37 |
| qwen3.8 27B | 3.33 | 3.34 | +0.01 | 3.14 | 3.16 | +0.02 |
| orcarouter 27B | 3.38 | 3.41 | +0.03 | 3.27 | 3.37 | +0.10 |
| huihui abliterated 27B | 3.27 | 3.27 | +0.00 | 3.12 | 3.10 | -0.02 |
| gemma4 26B | 3.26 | 3.24 | -0.02 | 3.19 | 3.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.26 | 3.62 | 0.16 | 3.19 |
| gemma4 26B · без мышления + промпт | 3.24 -0.02 | 3.65 +0.03 | 0.17 +0.01 | 3.17 -0.02 |
| huihui abliterated 27B · без мышления | 3.27 | 3.22 | 0.31 | 3.12 |
| huihui abliterated 27B · без мышления + промпт | 3.27 +0.00 | 3.35 +0.13 | 0.30 -0.01 | 3.10 -0.02 |
| ornith-1.5 35B · без мышления | 2.93 | 2.70 | 0.37 | 2.12 |
| ornith-1.5 35B · без мышления + промпт | 3.07 +0.14 | 3.02 +0.32 | 0.37 +0.00 | 2.49 +0.37 |
| ornith-1.5 35B · с мышлением | 3.43 +0.50 | 3.35 +0.65 | 0.33 -0.04 | 3.38 +1.26 |
| orcarouter 27B uncensored · без мышления | 3.38 | 3.37 | 0.27 | 3.27 |
| orcarouter 27B uncensored · без мышления + промпт | 3.41 +0.03 | 3.62 +0.25 | 0.24 -0.03 | 3.37 +0.10 |
| qwen3.8 27B · без мышления | 3.33 | 3.20 | 0.31 | 3.14 |
| qwen3.8 27B · без мышления + промпт | 3.34 +0.01 | 3.38 +0.18 | 0.28 -0.03 | 3.16 +0.02 |
| qwen3.8 27B · с мышлением low | 3.61 +0.28 | 3.33 +0.13 | 0.20 -0.11 | 3.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 · xhigh | medium |
| muse-glimmer | выкл · low · medium · high · max | high |
| 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%): он оценивает полноту изложения, и длинные обоснования выглядят содержательно в любой группе.
Оценку выставляют два яруса — дешёвый 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 | альтернативы яруса 0 | mxbai непригоден (corr 0.13–0.25); e5 сжимает диапазон (контекст 512 токенов, инструкции и чанкинг не помогли); nomic сопоставим с bge-m3, оставлен запасным |
В итоговый пайплайн (score.py задаёт decision-модели пять вопросов) вошли два подхода:
Отброшено:
Пороги триггера эскалации (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. Метод работает на коротких фактических ответах |
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.8 | 4 ошибки, подтверждённые исполнением кода и первоисточниками; судья на low находит все четыре, как и на max |
| Токены на оценку одного ответа | ~8 тыс. на low против ~27 тыс. на max — на 70% меньше |
Итог: судейство для трендов и сравнения моделей — на low; финальные вердикты и обнаружение тонких фабрикаций — на max. Low ставит в среднем на +0.13 балла выше, поэтому оценки разных режимов в одну таблицу не смешиваются.
Цена облачной сессии — фактическое списание 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.
clef оценил 3 439 ответов в 86 интервью — суммарно 48 минут GPU, или ₽29 по модели стоимости. Оценка одного интервью занимает у clef 33 секунды и стоит ₽0.33.
Время оценочное: латентность clef (время ответа на один запрос) определена контрольными вызовами и умножена на количество прошлых вызовов — их собственные тайминги не сохранялись. Теперь score.py логирует латентность и токены каждого вызова, поэтому вперёд стоимость будет считаться точно.
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 вручную). Подписка токены не тарифицирует.
Всё исследование живёт в репозитории github.com/prikotov/task-llm-hiring: скрипты запуска и судейства, вопросники, инструкции агентам (AGENTS.md), сырые данные всех прогонов и вердикты обоих ярусов. Отчёт собирается из этих данных скриптом interview/build_report.py.
| Данные | Где | Что внутри |
|---|---|---|
| Папки моделей | models/ | 29 папок, по одной на модель; всё её данные (карточка, прогоны, свод результатов, вердикты) лежат внутри — расшифровка ниже |
| Карточки моделей | models/<модель>/model.md | 29 карточек: характеристики, статус, история прогонов, наблюдения по каждой модели |
| Прогоны | models/<модель>/backend/run-XX/ | 96 прогонов: session.json (вопросы, ответы, размышления, тайминги, условия серии) и transcript.md — читаемый транскрипт |
| Своды результатов моделей | models/<модель>/backend/scorecard.md | 6 сводок: итоги прогонов модели — устойчивость ответов, провокации, самооценка, подходы к решениям |
| Вердикты 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 их нет.
Все завершённые прогоны; ссылки ведут на полные транскрипты в репозитории.
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-02 | reasoning effort low | v2 | 35 | 29 мин | 3,736,179 | 177,035 | ~94% | $5.82 ₽495.88 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | reasoning effort low | v2 | 35 | 14 мин | 968,800 | 41,905 | 95% | $0.62 ₽52.96 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | reasoning effort low | v2 | 35 | 6 мин | 1,483,611 | 67,902 | выключен | $0.18 ₽15.52 |
| run-02 | reasoning effort low | v2 | 35 | 6 мин | 1,447,710 | 65,450 | ~94% | $0.0550 ₽4.68 |
| run-03 | reasoning effort low | v2 | 35 | 7 мин | 1,583,849 | 74,888 | 95% | $0.0617 ₽5.25 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | reasoning effort low | v2 | 35 | 6 мин | 785,395 | 35,968 | ~94% | $0.0300 ₽2.56 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | effort low (родной API) | v2 | 35 | 12 мин | 2,718,519 | 159,056 | 95% | $0.25 ₽21.22 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | по умолчанию | v2 | 35 | 11 мин | 832,534 | 36,929 | 65% | ₽010 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | по умолчанию | v2 | 35 | 11 мин | 1,279,494 | 58,865 | 56% | ₽011 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | по умолчанию | v2 | 35 | 4 мин | 294,220 | 15,300 | 90% биллинг | $4.36 ₽371.42 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-03 | мышление включено | v1 | 32 | 12 мин | 973,379 | 137,983 | — | $0.0813 ₽6.92 |
| run-04 | мышление включено | v1 | 32 | 12 мин | 1,131,318 | 138,902 | — | $0.0863 ₽7.34 |
| run-05 | мышление включено | v1 | 32 | 13 мин | 1,085,381 | 156,100 | — | $0.0931 ₽7.93 |
| run-06 | мышление включено | v1 | 32 | 14 мин | 1,206,085 | 164,643 | — | $0.0969 ₽8.25 |
| run-07 | мышление выключено | v1 | 32 | 3 мин | 838,684 | 45,127 | н/д | $0.0182 ₽1.55 |
| run-08 | мышление выключено | v1 | 32 | 4 мин | 1,233,430 | 65,458 | н/д | $0.0264 ₽2.24 |
| run-09 | мышление выключено | v1 | 32 | 3 мин | 996,705 | 54,994 | н/д | $0.0223 ₽1.90 |
| run-10 | мышление выключено | v1 | 32 | 3 мин | 947,322 | 53,501 | н/д | $0.0216 ₽1.84 |
| run-11 | мышление выключено | v1 | 32 | 3 мин | 827,092 | 48,379 | н/д | $0.0194 ₽1.66 |
| run-12 | системный промпт (роль+CoT+недоверие) | v1 | 32 | 3 мин | 903,079 | 50,564 | н/д | $0.0199 ₽1.70 |
| run-13 | системный промпт (роль+CoT+недоверие) | v1 | 32 | 4 мин | 1,227,677 | 73,176 | н/д | $0.0308 ₽2.62 |
| run-14 | системный промпт (роль+CoT+недоверие) | v1 | 32 | 4 мин | 1,197,686 | 68,696 | н/д | $0.0284 ₽2.41 |
| run-15 | системный промпт (роль+CoT+недоверие) | v1 | 32 | 4 мин | 1,184,957 | 72,914 | н/д | $0.0308 ₽2.62 |
| run-16 | системный промпт (роль+CoT+недоверие) | v1 | 32 | 2 мин | 843,696 | 43,915 | н/д | $0.0175 ₽1.49 |
| run-17 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 4 мин | 1,443,985 | 71,329 | н/д | $0.0303 ₽2.58 |
| run-18 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 5 мин | 1,575,532 | 85,188 | н/д | $0.0370 ₽3.15 |
| run-19 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 4 мин | 1,180,785 | 61,251 | н/д | $0.0252 ₽2.14 |
| run-20 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 4 мин | 1,393,929 | 72,884 | н/д | $0.0310 ₽2.64 |
| run-21 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 6 мин | 1,612,683 | 88,058 | н/д | $0.0385 ₽3.27 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-06 | мышление выключено | v1 | 32 | 8 мин | 1,309,829 | 73,579 | н/д | $0.0585 ₽4.98 |
| run-07 | мышление выключено | v1 | 32 | 9 мин | 1,369,551 | 77,371 | н/д | $0.0640 ₽5.45 |
| run-08 | мышление выключено | v1 | 32 | 9 мин | 1,425,035 | 81,245 | н/д | $0.0632 ₽5.38 |
| run-09 | мышление выключено | v1 | 32 | 9 мин | 1,337,103 | 75,630 | н/д | $0.0619 ₽5.27 |
| run-10 | мышление выключено | v1 | 32 | 9 мин | 1,389,864 | 79,871 | н/д | $0.0652 ₽5.56 |
| run-11 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 11 мин | 1,796,732 | 88,344 | н/д | $0.0757 ₽6.44 |
| run-12 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 9 мин | 1,515,729 | 75,470 | н/д | $0.0632 ₽5.38 |
| run-13 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 10 мин | 1,618,777 | 81,866 | н/д | $0.0680 ₽5.79 |
| run-14 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 10 мин | 1,690,972 | 85,084 | н/д | $0.0716 ₽6.10 |
| run-15 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 10 мин | 1,675,984 | 83,101 | н/д | $0.0667 ₽5.68 |
| run-16 | мышление включено | v2 | 35 | 18 мин | 2,286,278 | 135,493 | н/д | $0.12 ₽10.49 |
| run-21 | мышление включено | v2 | 35 | 26 мин | 2,729,551 | 166,005 | н/д | $0.18 ₽15.44 |
| run-22 | мышление включено | v2 | 35 | 30 мин | 2,822,954 | 182,784 | н/д | $0.21 ₽17.63 |
| run-23 | мышление включено | v2 | 35 | 26 мин | 2,640,253 | 164,117 | н/д | $0.18 ₽15.51 |
| run-24 | мышление включено | v2 | 35 | 26 мин | 2,817,540 | 163,726 | н/д | $0.19 ₽15.81 |
| run-25 | мышление включено | v2 | 35 | 28 мин | 2,660,952 | 171,851 | н/д | $0.20 ₽16.70 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v2 | 35 | 9 мин | 567,018 | 28,708 | — | $0.0646 ₽5.50 |
| run-02 | мышление выключено | v2 | 35 | 5 мин | 500,395 | 25,605 | н/д | $0.0347 ₽2.95 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление включено | v2 | 35 | 11 мин | 1,102,706 | 114,262 | — | $0.0771 ₽6.57 |
| run-02 | мышление включено | v2 | 35 | 12 мин | 1,070,713 | 122,099 | — | $0.0828 ₽7.05 |
| run-03 | мышление включено | v2 | 35 | 10 мин | 1,081,245 | 95,862 | — | $0.0706 ₽6.01 |
| run-04 | мышление включено | v2 | 35 | 11 мин | 1,063,788 | 115,670 | — | $0.0750 ₽6.39 |
| run-05 | мышление включено | v2 | 35 | 16 мин | 990,372 | 111,868 | — | $0.11 ₽9.37 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v2 | 35 | 2 мин | 843,054 | 42,921 | н/д | $0.0171 ₽1.45 |
| run-02 | мышление выключено | v2 | 35 | 2 мин | 821,155 | 42,023 | н/д | $0.0168 ₽1.43 |
| run-03 | мышление выключено | v2 | 35 | 2 мин | 828,906 | 42,399 | н/д | $0.0172 ₽1.46 |
| run-04 | мышление выключено | v2 | 35 | 2 мин | 826,455 | 42,848 | н/д | $0.0172 ₽1.46 |
| run-05 | мышление выключено | v2 | 35 | 2 мин | 835,350 | 42,770 | н/д | $0.0173 ₽1.47 |
| run-06 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 3 мин | 910,889 | 45,613 | н/д | $0.0187 ₽1.59 |
| run-07 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 3 мин | 898,631 | 45,097 | н/д | $0.0182 ₽1.55 |
| run-08 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 3 мин | 913,436 | 45,805 | н/д | $0.0187 ₽1.59 |
| run-09 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 3 мин | 908,539 | 45,739 | н/д | $0.0186 ₽1.58 |
| run-10 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 3 мин | 912,332 | 45,598 | н/д | $0.0187 ₽1.59 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v1 | 32 | 17 мин | 1,391,109 | 79,674 | н/д | $0.12 ₽10.09 |
| run-02 | мышление выключено | v1 | 32 | 16 мин | 1,338,743 | 76,388 | н/д | $0.11 ₽9.53 |
| run-03 | мышление выключено | v1 | 32 | 17 мин | 1,394,147 | 80,018 | н/д | $0.12 ₽10.14 |
| run-04 | мышление выключено | v1 | 32 | 16 мин | 1,401,281 | 78,657 | н/д | $0.12 ₽9.81 |
| run-05 | мышление выключено | v1 | 32 | 16 мин | 1,319,951 | 75,288 | н/д | $0.11 ₽9.51 |
| run-06 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 17 мин | 1,602,021 | 80,901 | н/д | $0.12 ₽10.23 |
| run-07 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 17 мин | 1,603,628 | 80,768 | н/д | $0.12 ₽10.30 |
| run-08 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 18 мин | 1,692,674 | 86,115 | н/д | $0.13 ₽10.96 |
| run-09 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 18 мин | 1,606,577 | 81,732 | н/д | $0.12 ₽10.51 |
| run-10 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 18 мин | 1,712,787 | 85,438 | н/д | $0.13 ₽10.91 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v1 | 32 | 8 мин | 1,316,290 | 75,223 | н/д | $0.0599 ₽5.10 |
| run-02 | мышление выключено | v1 | 32 | 8 мин | 1,280,217 | 69,756 | н/д | $0.0550 ₽4.68 |
| run-03 | мышление выключено | v1 | 32 | 8 мин | 1,275,137 | 73,393 | н/д | $0.0585 ₽4.98 |
| run-04 | мышление выключено | v1 | 32 | 9 мин | 1,470,878 | 80,398 | н/д | $0.0618 ₽5.26 |
| run-05 | мышление выключено | v1 | 32 | 8 мин | 1,265,801 | 72,177 | н/д | $0.0590 ₽5.03 |
| run-06 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 9 мин | 1,546,310 | 77,428 | н/д | $0.0633 ₽5.39 |
| run-07 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 9 мин | 1,544,661 | 78,504 | н/д | $0.0658 ₽5.60 |
| run-08 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 10 мин | 1,703,816 | 83,651 | н/д | $0.0685 ₽5.83 |
| run-09 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 9 мин | 1,557,708 | 77,580 | н/д | $0.0619 ₽5.27 |
| run-10 | системный промпт (роль+CoT+недоверие) | v2 | 35 | 10 мин | 1,777,722 | 86,543 | н/д | $0.0681 ₽5.80 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v2 | 35 | 20 мин | 1,272,569 | 63,194 | — | $0.14 ₽12.26 |
| Прогон | Условия | Версия интервью | Ответов | Время | Вход. токены | Вых. токены | Кэш | Стоимость |
|---|---|---|---|---|---|---|---|---|
| run-01 | мышление выключено | v2 | 35 | 3 мин | 806,457 | 37,990 | — | $0.0236 ₽2.01 |
Параллельно с тестированием моделей и подготовкой этого отчёта 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 токенов хватает даже с полным мышлением |
Слабые места тестирования локальных моделей и планы по ним. Правки, которые делаются прогонами, снабжены планом; остальные — принимать с оговоркой.
| Проблема или ограничение | Что делать |
|---|---|
| Кэш-покрытие локальных сессий не измеряли: 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 в роли ревьювера | Собирать полевые данные по другим ролям и моделям при их подключении |