Учитель сделал бота для проверки ЕГЭ: модель размечает, а баллы считает код
Эксперт ЕГЭ два года делает Telegram-бота для проверки развёрнутых ответов по обществознанию. Главный вывод: модель честно размечает ответ по схеме, но завышает баллы, если доверить ей итог. Поэтому баллы пересчитывает обычный код, а перепроверки могут оценку только снизить. Средняя проверка обходится в 2,3 цента и 9 секунд.
AI-обработка оригинала Habr AI; редакция Hamidun News
Что будет, если доверить языковой модели поставить школьнику балл за развёрнутый ответ? Она оценит щедро: «в целом понимает обществознание», а критерии ФИПИ жёсткие. Пример про «государство Z» вместо России даёт ноль, а план без трёх обязательных пунктов теряет весь критерий. Учитель и эксперт ЕГЭ рассказал, как два года строил бота, который это учитывает.
Модель размечает, код считает
Главный принцип: модель не пишет «ставлю 2 балла, потому что…». Она заполняет JSON-схему через tool_use: какие примеры конкретны, какие суждения верны, какие пункты плана ключевые. Дальше работает обычный код: пересчитывает баллы по критериям, проверяет всё, что можно проверить без модели, и запускает перепроверки, которые способны только понизить оценку.
У каждого задания свой плагин: хендлер, эвалуатор и спецификация. Универсального промпта нет. Закономерность видна по объёму кода: задание 17 занимает 942 строки, а задания 24 и 25 по 6,8–7,2 тысячи. Чем сложнее критерии, тем больше кода вокруг модели, а не длиннее промпт.
Как не наказать невиновного
В задании 19 модель засчитывала пересказ функции органа как пример его действия. Автор добавил второй вызов с отдельной схемой, но первая версия срабатывала везде и снимала баллы у семей и граждан, где органа по условию нет. Теперь перепроверка включается только по явным маркерам в тексте задания. Кроме того, пример отклоняется, лишь если совпали минимум два из четырёх негативных флагов. Урок: защита от завышений сама рождает занижения, и область её срабатывания важна не меньше самой проверки.
В задании 24 баллы за первый и второй критерии целиком считает код: леммы через pymorphy2 и сверка с 185 эталонными планами. Синонимы заголовков («признаки» и «особенности») приводятся к одной форме. Проверка простая: все эталонные планы должны получать максимум. До правки синонимов так было у 147 из 185, теперь у всех.
Снять балл за фактическую ошибку можно, только пройдя четыре фильтра: закрытый список типов ошибок, дословная цитата от 8 символов, два независимых прогона и отдельный верификатор. Последний нужен потому, что два одинаковых ответа одной модели не равны двум независимым мнениям: на эталонных планах оба прогона дружно находили одну и ту же несуществующую ошибку.
Честный отказ вместо выдуманного нуля
Самая коварная ошибка — тихий ноль, когда модель не ответила, а код подставил ноль, и ученик видит обычный разбор. В задании 25 было 16 таких нулей на 110 кейсов, и половина совпадала с эталоном, попадая в метрики как точное попадание. Теперь любой сбой сводится к флагу ai_unavailable: балл не показывается, попытка не списывается, администратор получает алерт. Бесплатная попытка списывается только после доставки результата.
Автор честно признаёт недоделки: в заданиях 21 и 23 при сбое ещё ставится упрощённый балл, а резервный YandexGPT включается вручную.
Цена и практический вывод
Ноябрьский прогон на 393 ответах дал 497 вызовов и 8,87 доллара: в среднем 1,26 вызова, 2,3 цента и 9 секунд на проверку. Дороже всего обходятся не длинные оценки, а перепроверки. Кэш промпта даёт до 66% входа, но на коротких промптах заданий 17, 21 и 22 не срабатывает.
Для тех, кто строит оценивание с LLM: заставляйте модель отвечать структурой с явными флагами, держите арифметику в коде, делайте перепроверки односторонними, требуйте независимости прогонов и отличайте сбой от нуля. А на новых версиях Claude принудительный tool_choice возвращает ошибку 400, поэтому передавайте auto и просите вызвать инструмент в конце запроса.
- 12 нояб. 2026 г.Дженсен Хуанг ушёл с поста CEO Nvidia: компания потеряла $1,4 трлн за две недели
- 12 нояб. 2026 г.Claude in Chrome требует разрешать каждый клик на сайтах с категорией 3
- 12 нояб. 2026 г.AWS Quick получил шесть агентов для продактов: от жалоб клиентов до спеки
- 12 нояб. 2026 г.Anthropic с 12 ноября закрывает Claude для компаний России, даже с юрлицом за рубежом
Вопросы и ответы по материалу
Что известно по теме: модель размечает, код считает?
Главный принцип: модель не пишет «ставлю 2 балла, потому что…». Она заполняет JSON-схему через tool_use: какие примеры конкретны, какие суждения верны, какие пункты плана ключевые. Дальше работает обычный код: пересчитывает баллы по критериям, проверяет всё, что можно проверить без модели, и запускает перепроверки, которые способны только понизить оценку. У каждого задания свой плагин: хендлер, эвалуатор и спецификация. Универсального промпта нет.
Что известно по теме: как не наказать невиновного?
В задании 19 модель засчитывала пересказ функции органа как пример его действия. Автор добавил второй вызов с отдельной схемой, но первая версия срабатывала везде и снимала баллы у семей и граждан, где органа по условию нет. Теперь перепроверка включается только по явным маркерам в тексте задания. Кроме того, пример отклоняется, лишь если совпали минимум два из четырёх негативных флагов. Урок: защита от завышений сама рождает занижения, и область её срабатывания важна не меньше самой проверки.
Что известно по теме: честный отказ вместо выдуманного нуля?
Самая коварная ошибка — тихий ноль, когда модель не ответила, а код подставил ноль, и ученик видит обычный разбор. В задании 25 было 16 таких нулей на 110 кейсов, и половина совпадала с эталоном, попадая в метрики как точное попадание. Теперь любой сбой сводится к флагу ai_unavailable: балл не показывается, попытка не списывается, администратор получает алерт. Бесплатная попытка списывается только после доставки результата.
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.