Локальный ИИ · Socratic mode · anti-answer-dumping
Как заставить локальный ИИ учить, а не решать домашнее задание за ребёнка
Главная проблема домашнего AI-репетитора не в том, что он «слишком умный», а в том, что обычная LLM по умолчанию старается быть полезной и часто выдаёт готовый результат. Для обучения нужна другая архитектура: ИИ сначала просит попытку, дозирует подсказки, проверяет промежуточный шаг, отделяет обучение от контрольной работы и показывает полный разбор только тогда, когда это действительно уместно.
Почему обычный чат почти неизбежно начинает решать за ребёнка
Большинство универсальных LLM обучены быть полезными. Если пользователь спрашивает: «Реши уравнение», модель обычно старается решить уравнение. Если попросить «напиши сочинение» — она пишет сочинение. Для общего ассистента это нормальное поведение. Для школьного тьютора — нет.
Главная цель — дать результат быстро и понятно.
Главная цель — заставить ребёнка самому сделать следующий когнитивный шаг.
Поэтому хороший tutor должен отвечать не только на вопрос «что является правильным ответом?», но сначала на вопрос «какая минимальная помощь сейчас позволит ученику продолжить самому?».
Что показывают свежие исследования
Исследования последних лет дают важный сигнал: просто предоставить доступ к AI недостаточно. Результат сильно зависит от того, как именно организовано взаимодействие.
В RCT в Harvard авторы использовали специально спроектированного тьютора с педагогическими правилами, последовательным scaffolding и targeted feedback.
Исследование →В эксперименте более чем с 6000 middle-school students AI-помощь улучшала следующую попытку, когда была встроена в структурированный mastery workflow.
Working paper →Khanmigo был настроен на коучинг вместо выдачи ответов, но исследование показало другую проблему: низкую глубину реального взаимодействия с tutor.
Working paper →UNESCO отдельно предупреждает, что готовые решения и зависимость от GenAI могут ослаблять самостоятельное мышление и self-directed inquiry.
Guidance →Почему одного system prompt недостаточно
Можно написать в system prompt: «Никогда не давай готовый ответ, всегда задавай наводящие вопросы». Это полезно, но недостаточно.
Авторы Harvard RCT прямо отмечают, что system prompt не всегда надёжно удерживал правильную последовательность scaffolding в многошаговых задачах. Поэтому платформа сама проводила ученика через части задания по порядку.
Пять режимов, которые лучше разделить явно
Можно объяснять, задавать вопросы, давать escalating hints и разбирать ошибки.
ИИ требует собственную попытку и помогает только вокруг неё. Final answer ограничен.
Подсказки, solution tools и reveal заблокированы до submit.
После завершения можно показать полный путь, сравнить с решением ученика и объяснить ошибки.
Доступен полный ключ, диагностика, ledger подсказок и настройки политики.
Важно, чтобы режим менялся не только надписью в интерфейсе. На backend должны меняться доступные tools, действия и политики reveal.
State machine: где находится ребёнок внутри конкретной задачи
Вместо свободного чата задача может иметь несколько фиксированных состояний.
Условие прочитано.
Нужна собственная попытка.
Проверить тип ошибки.
Минимальная помощь.
Новая попытка.
Короткое объяснение.
Только после достаточного количества самостоятельных попыток или завершения задачи
может открываться состояние FULL_REVIEW.
{
"task_id": "math-eq-034",
"mode": "HOMEWORK",
"state": "RETRY",
"attempts": 2,
"hint_level_used": 1,
"final_answer_allowed": false,
"checker_status": "incorrect",
"misconception": "sign_transfer"
}
Лестница подсказок: помощь должна усиливаться постепенно
Дать ребёнку подумать самому.
Указать, на какой шаг посмотреть.
«Что должно измениться при переносе?»
Без подстановки текущих чисел.
Только если предыдущие уровни не помогли.
После завершения или по разрешённой политике.
Такая лестница позволяет не превращать tutor в стену: ребёнок всё равно получает помощь, но система сохраняет максимальную долю самостоятельного reasoning.
Answer Gate: готовый ответ должен контролироваться кодом
Главное правило: LLM не должна сама решать, «можно ли уже сказать ответ». Это состояние определяет backend.
if mode == "ASSESS":
final_answer_allowed = submitted
elif mode == "HOMEWORK":
final_answer_allowed = (
task_completed
or attempts >= 3 and parent_policy.allow_full_review
)
elif mode == "LEARN":
final_answer_allowed = (
hint_level >= 4
and student_requested_explanation
)
Даже если LLM в черновом ответе случайно сгенерировала финальный результат, middleware может удалить или заменить запрещённую часть до выдачи пользователю.
Попытка ученика должна быть обязательным объектом системы
Фраза «я не знаю» тоже является попыткой, но tutor должен сначала выяснить, что именно ребёнок понимает из условия.
Это также даёт полезные данные для Student DB: система понимает, где ребёнок начал сам, а где всё содержательное reasoning появилось только после подсказки.
Правильность должен подтверждать независимый checker
Если LLM одновременно объясняет и сама решает, правильна ли попытка, ошибки трудно обнаружить. Формализуемые предметы лучше проверять отдельными инструментами.
LLM после этого получает результат checker и формулирует педагогическую реакцию: не «неправильно», а следующий вопрос или hint.
Как измерять самостоятельность, а не только правильность
Верно с первой попытки, hint level 0.
Наводящий вопрос, затем самостоятельное исправление.
Нужно правило или первый шаг.
Самостоятельного решения не получилось.
Это не обязательно превращать в школьную оценку. В Student DB можно хранить
independence_score или просто max_hint_level.
Контрольный режим должен быть настоящим, а не декоративным
В Assessment Mode система не должна иметь возможности случайно «помочь лишнего». На сервере отключаются hints, solution reveal, некоторые tools и RAG-фрагменты с готовым ответом.
Режим домашнего задания: помогать вокруг попытки, а не подменять её
Homework Mode отличается от Assessment Mode тем, что помощь разрешена. Но tutor должен строить её вокруг того, что уже сделал ребёнок.
Если задание слишком сложное и ученик вообще не может начать, режим временно может перейти в LEARN для prerequisite, а затем вернуться к исходной домашней задаче.
Когда полный ответ всё-таки нужно показывать
Анти-cheating не должен превращаться в «ИИ никогда не скажет решение». Полный разбор полезен, если ребёнок уже сделал честную попытку и обучение от следующего самостоятельного шага почти не выигрывает.
Anti-answer policy должна отличаться по предметам
Единая фраза «будь Сократом» слишком груба. Нужны предметные policy presets.
Сочинения, пересказы и письменные ответы: не генерировать работу вместо ученика
Для письменных заданий особенно легко перейти грань между tutoring и ghostwriting. Хороший режим работает по этапам.
Спросить, что ученик хочет сказать.
Помочь структурировать собственные тезисы.
Ребёнок пишет сам.
Отметить слабые места и задать вопросы.
Ученик исправляет текст.
В Homework Mode tutor может предложить варианты улучшения одного предложения, но не должен по умолчанию выдавать готовое сочинение нужного объёма.
{
"can_generate_outline": "only_from_student_ideas",
"can_write_full_essay": false,
"can_rewrite_sentence": "after_student_draft",
"must_explain_edit": true,
"assessment_mode": "feedback_after_submit_only"
}
Интерактивная доска делает Socratic режим сильнее
На доске tutor может не писать ответ текстом, а просто выделить тот шаг, где возникла ошибка, или нарисовать стрелку к месту, которое стоит перепроверить.
Это хороший пример hint level 1–2: визуальная подсказка помогает продолжить, но не содержит финального значения x.
Anti-cheating и карта знаний должны работать вместе
Если ребёнок не может решить текущую задачу даже после нескольких hints, это может быть не «леность», а пробел в prerequisite.
Это лучше, чем бесконечно повышать hint level по задаче, фундамент которой ребёнок пока не понимает.
Что сохранять в Student DB
Именно эти данные позволяют отличить «задача закрыта» от «навык освоен».
Как реализовать детский режим в Open WebUI
Open WebUI удобно использовать как интерфейс и слой model presets, но child policy лучше закреплять на уровне администратора.
Open WebUI документирует RBAC для Workspace, Chat и Features, а admin-defined system prompt на Model preset имеет приоритет над пользовательским system prompt. При этом сама документация отдельно подчёркивает: system prompts — инструкции, а не гарантия поведения модели.
Policy Middleware: последний фильтр перед ребёнком
Даже хороший model preset иногда может выдать лишнее. Поэтому полезно пропускать ответ через policy middleware.
{
"mode": "HOMEWORK",
"state": "ATTEMPT",
"allowed": [
"ask_question",
"highlight_error",
"give_hint_1"
],
"forbidden": [
"final_answer",
"full_solution",
"write_submission"
]
}
Anti-dump evals: как проверить, что tutor не «сломался» после обновления модели
Это один из самых полезных паттернов свежего проекта Socratic Tutor:
у него есть отдельная eval-suite и категория anti-dump.
После смены LLM, quant, prompt или middleware стоит прогонять фиксированные сценарии.
Что делать, если ребёнок пытается обойти ограничения
Не нужно превращать tutor в систему наказаний. Обход ограничений — ожидаемое поведение любопытного пользователя и одновременно хороший тест архитектуры.
Родительский override должен быть отдельным и защищённым
Иногда взрослому действительно нужен полный ключ: проверить домашнюю работу, разобрать спорную оценку или понять, где tutor ошибся.
Пароль или взрослый аккаунт лучше, чем секретная команда вроде «режим родителя», которую ребёнок быстро узнает.
Как не сделать Socratic tutor раздражающим
Есть плохая крайность: на любой вопрос ИИ отвечает ещё одним вопросом. Такой «Сократ» быстро начинает мешать.
NBER-исследование Khanmigo 2026 особенно полезно как напоминание: даже корректно настроенный coach бесполезен, если ученик почти не вступает с ним в содержательный диалог.
Полная архитектура anti-answer-dumping тьютора
Такой дизайн хорошо масштабируется на чат, голос, интерактивную доску и проверку тетради по фото: меняется интерфейс, но policy engine и ledger остаются общими.
Как собрать первую рабочую версию
- Выбрать один режим.Начать с HOMEWORK, а не пытаться сразу покрыть всё.
- Создать Model preset.Закрепить педагогический system prompt на admin level.
- Отключить ребёнку изменение system prompt.RBAC и Chat Controls.
- Ввести состояния задачи.ATTEMPT → HINT → RETRY → REVIEW.
- Сделать Hint Ladder.Хотя бы 0–4.
- Добавить Answer Gate.Final solution разрешается backend, а не LLM.
- Подключить один checker.Например, Python/SymPy для математики.
- Хранить attempt/hint ledger.Чтобы видеть самостоятельность.
- Добавить anti-dump evals.10–20 попыток выпросить ответ.
- Только потом добавлять предметы и голос.Сначала доказать, что базовая политика держится.
Типичные ошибки
Частые вопросы
Можно ли просто написать в prompt «никогда не давай готовый ответ»?
Для прототипа — да, но для надёжного тьютора этого мало. Нужны state machine, answer gate, checker и middleware, потому что модель не гарантирует строгое выполнение инструкций во всех диалогах.
Не станет ли Socratic tutor раздражать ребёнка?
Станет, если отвечать вопросом на каждый вопрос. Хорошая система повышает уровень помощи, признаёт тупик и умеет переключаться от discovery к короткому объяснению.
Когда всё-таки показывать правильный ответ?
После завершения, после достаточных попыток по разрешённой политике или в фазе REVIEW. Затем полезно дать новую похожую задачу без подсказки.
Как проверить, что ребёнок решил сам?
Хранить первую попытку, max hint level, количество попыток и затем проводить независимую проверку похожим заданием без помощи.
Можно ли сделать контрольный режим локально?
Да. На backend блокируются hints, solution reveal и лишние tools. После submit можно открыть отдельную фазу разбора.
Подходит ли Open WebUI для такого режима?
Да как интерфейс и слой presets/RBAC. Но сам answer gate и state machine лучше реализовывать отдельным backend/policy layer, а не только system prompt.
Можно ли полностью предотвратить обход ограничений?
Нельзя полагаться на абсолютную неуязвимость LLM. Но можно сделать так, чтобы текстовый jailbreak не менял backend mode, а запрещённый output перехватывался middleware.
Нужно ли скрывать от ребёнка, что ответ заблокирован?
Нет. Лучше прозрачно и коротко показать текущий режим: «Сначала твоя попытка; могу дать подсказку 1». Это понятнее, чем странные уклончивые ответы.
Работает ли такой подход только для математики?
Нет. Для текстов он превращается в outline/draft-feedback workflow, для языков — в correction-after-attempt, для истории — в тезисы и источники вместо готового ответа.
Источники и проекты
- Socratic Tutor — local-first tutor, anti-dump evals, Ollama
- Scientific Reports 2025 — AI tutoring RCT and structured scaffolding
- NBER 2026 — Making AI Tutoring Productive
- NBER 2026 — Khanmigo two-year school experiment
- UNESCO — Guidance for generative AI in education and research
- Open WebUI — Models / model presets
- Open WebUI — Permissions / RBAC
- Open WebUI — System prompt hierarchy
Следующий материал