Назад к подготовке

Проверка 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.