Claude и проверка заданий: как игру спасают от ошибок
В учебной игре задания пишет языковая модель Claude, но проверять ответы ей доверять нельзя. Поэтому команда добавила несколько слоёв проверки: часть проблем отсеивается по форме, часть — пересчитывается кодом.
Почему одной модели недостаточно
Команда делает обучающую игру, где пользователь сам формулирует цель — например, «таблица умножения», «дроби за 5 класс» или «английский для поездки». На основе этой цели игра собирает маршрут из локаций, а в каждой локации даёт по пять заданий. Универсальных курсов нет, поэтому упражнения генерирует Claude от Anthropic с учётом темы, уровня и последних ответов игрока.
Проблема в том, что задания модель придумывает неплохо, а с арифметикой и логикой регулярно ошибается. В октябре команда разобрала 68 жалоб через кнопку «Задание с ошибкой?». Самые неприятные случаи — когда модель помечала верный ответ как неправильный или наоборот: ребёнок отвечал правильно, но видел сообщение об ошибке и начинал сомневаться и в себе, и в игре.
Что отбрасывают ещё до проверки смысла
Сначала система смотрит, можно ли вообще показывать задание человеку. Если в тесте не оказалось правильного варианта, если условие внезапно «передумало» на ходу, если в кнопке оказался невидимый пробел или если в задании на сопоставление появились одинаковые пары, такое упражнение просто не выпускают в урок. Это дешевле, чем потом чинить сломанную логику на экране.
Отдельно проверяют формы заданий. У модели ответ приходит в JSON по схеме, так что структура на месте, но схема не гарантирует смысл. Например, для заданий с несколькими верными ответами нужны минимум четыре варианта и хотя бы два правильных; если этого нет, задание выкидывают. Для порядка и группировки ответ пишут дважды: внутри структуры и отдельной строкой. Если эти версии спорят между собой, лучше не показывать упражнение вовсе.
Где код пересчитывает ответ сам
Для задач, которые можно решить без модели, команда использует отдельную проверку. Это арифметика, сравнения, ряды, проверка на чётность и похожие случаи. Внутри — компактный парсер, который умеет числа, четыре действия и скобки, а всё непонятное оставляет без изменений. Главное правило простое: если в задании есть слова, переменные или неоднозначные единицы, система не пытается умничать и ничего не пересчитывает.
Есть и тонкие ограничения. Например, запись вроде «1,000» не считают дробью, если это английский формат с тремя цифрами после запятой. В вопросах «верно или неверно» система сама разбирает левую и правую части и ставит ключ. Для группировки она смотрит на название корзин и проверяет, чтобы каждый объект подходил ровно в одну группу. Если остаётся неоднозначность или какая-то корзина пустует, задание не проходит проверку.