Проверка Python-задачи студента и подсказки
Как проверять код студента и давать подсказку, не раскрывая готовое решение?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Запускать код в sandbox на тестах, ограничивать ресурсы, передавать LLM ошибку и контекст задания, а подсказку генерировать по уровню, без полного solution dump.
Полный разбор
Код студента нельзя выполнять в основном процессе. Нужен sandbox: timeout, memory limit, запрет сети/файлов, отдельный контейнер или изолированный runner. Проверка начинается с unit tests и hidden tests. Если тесты падают, система собирает stderr, traceback, failing case и краткое условие.
LLM для подсказок получает не весь эталонный код как готовый ответ, а контролируемый контекст: условие, код студента, тип ошибки, ближайший концепт и policy "не писать полное решение". Можно делать уровни помощи: намек, указание на строку, объяснение ошибки, минимальный patch.
Даже если тесты прошли, полезно проверять требования: сложность, запрет hardcode, edge cases, стиль API. Для этого подходят static checks, property-based tests и иногда LLM review с четким rubric.
Теория
Code assistant в обучении должен проверять correctness и помогать учиться, а не просто выдавать solution.
Типичные ошибки
- Запускать пользовательский код без sandbox.
- Давать LLM эталонное решение и просить "не раскрывать".
- Ограничиться public tests и пропустить hardcode.