Промты для генерации экзаменационных заданий: структура, шаблоны и контроль качества

Инструкция

Промты для генерации экзаменационных заданий: структура, шаблоны и контроль качества

Разбираем формулу надежного промта, даём готовые шаблоны под разные типы заданий — от тестов до кейсов — и показываем, как проверить качество выдачи нейросети до попадания к студентам.

Анатомия рабочего промта: пять обязательных блоков

Большинство слабых промтов теряют контекст или формат. Сильная инструкция для модели состоит из пяти модулей. Пропуск любого из них превращает генерацию в лотерею.

Роль и экспертиза

Кто пишет задание: «Опытный методист ЕГЭ по информатике», «Преподаватель бизнес-аналитики с 10-летним стажем». Это задаёт глубину и терминологию.

Контекст и аудитория

Уровень группы, пройденные темы, время на выполнение, допустимые материалы. Пример: «Вторая пара курса, тема: рекурсия, 40 минут, без компьютера».

Формат и структура вывода

Жёсткая спецификация: JSON-схема, Markdown-таблица, нумерованный список с баллами. Без этого придётся парсить «просто текст» вручную.

Ограничения и критерии качества

Что запрещено: «Не используй тему указателей», «Без вопросов на определения», «Сложность — только уровни B и C». Это фильтрует мусор на входе.

Примеры (Few-shot)

2–3 эталонных задания в нужном формате. Модель копирует стиль, длину, баланс правильных/неправильных вариантов ответов.

ФОРМУЛА ПРОМТА
# 1. РОЛЬ
Ты — {роль: методист / эксперт / преподаватель}.
# 2. КОНТЕКСТ
Курс: {название}. Тема: {тема}. Уровень: {junior/middle/senior / 1-5 курс}. Время: {N} мин. Материалы: {допустимые/нет}.
# 3. ЗАДАЧА
Сгенерируй {N} заданий типа {тип} на проверку {навык по Блуму}.
# 4. ФОРМАТ ВЫВОДА (JSON)
{ «items»: [ { «id»: «q1», «type»: «single_choice|multiple|open|code|case», «stem»: «Текст вопроса…», «options»: [{«id»: «A», «text»: «…», «correct»: true}, …], «explanation»: «Почему это правильно», «bloom»: «apply|analyze|evaluate», «points»: 2 } ] }
# 5. ОГРАНИЧЕНИЯ
— Исключить: {темы/типы}. — Сложность: {распределение %}. — Без двусмысленности, культурных предвзятостей, утечки ответа в условии.
# 6. ПРИМЕРЫ (Few-shot)
{Вставить 2-3 готовых объекта по схеме выше}

Шаблоны под тип задания: копируй, адаптируй, запускай

Тест с одним верным ответом (Single Choice)
Блум: Remember / Understand

Классика для быстрой проверки знаний. Главная ловушка — слабые дистракторы (неверные варианты), которые выдают правильный ответ.

Ты — методист по тестированию. Сгенерируй 10 вопросов single-choice по теме «{тема}» для {аудитория}. Формат: JSON массив объектов {stem, options[4], correct_index, explanation, bloom_level}. Ограничения: — 1 верный, 3 дистрактора. Дистракторы — типичные ошибки студентов. — Никаких «Все вышеперечисленные» / «Ничего из вышеперечисленного». — Длина стимула ≤ 200 символов. Объяснение — 1-2 предложения. Пример дистрактора: если тема «приоритет операторов», вариант — результат при игнорировании приоритета.
Уровень: Базовый
Открытый вопрос / Эссе (Open-ended)
Блум: Analyze / Evaluate / Create

Проверяет глубокое понимание. Нужна не только формулировка, но и критерий оценки (рубрика), иначе проверка станет субъективной.

Ты — эксперт по {предмет}. Напиши 3 задания на развернутый ответ (эссе/решение задачи) по теме «{тема}». Вывод: JSON {prompt, max_points, rubric: [{criterion, descriptor_0, descriptor_1, descriptor_2, descriptor_3}] }. Требования к рубрике: 4 критерия (понимание, аргументация, структура, терминология), каждый 0-3 балла. Дескрипторы конкретные, без «хорошо/плохо». Пример критерия «Аргументация»: 3 — 3+ обоснования с ссылками на теорию; 1 — только мнение без доказательств.
Уровень: Продвинутый
Кейс-стади / Ситуационная задача (Case Study)
Блум: Apply / Analyze / Evaluate

Имитирует реальную профессиональную ситуацию. Требует связать несколько тем. Выход — набор подзадач с общей легендой.

Ты — практик {сфера}. Создай кейс для экзамена: предыстория (150-200 слов), данные (таблица/граф/логи в тексте), 4 подзадачи разного типа (расчёт, выбор стратегии, риск-анализ, Презентация решения). Вывод: JSON {case_id, legend, data_md, questions: [{type, stem, answer_key, points}] }. Важно: данные в легенде должны быть достаточны для решения, но содержать «шум» (лишние цифры), как в жизни.
Уровень: Экспертный
Практическое задание / Код (Code / Lab)
Блум: Apply / Create

Для IT и инженерных дисциплин. Критично: чёткий spec ввода/вывода, ограничения по памяти/времени, скрытые тесты для автопроверки.

Ты — автор задач для контестов (ACM ICPC style). Задача: {алгоритмическая тема}. Вывод: JSON {legend_md, input_spec, output_spec, constraints, samples: [{input, output}], hidden_tests_count: 10, solution_python, complexity}. Ограничения: N ≤ 10^5, TL 1s, ML 256MB. Сэмплы — edge cases (пустой ввод, максимум, симметрия). Решение — оптимальное по Big-O.
Уровень: Технический

Продвинутые техники: заставь модель «подумать»

Базовый промт даёт средний результат. Эти приёмы поднимают качество на уровень опытного методиста.

Chain-of-Thought (Цепочка рассуждений)

Добавь в промт: «Перед генерацией каждого задания пошагово опиши рассуждение: какой навык проверяем, почему этот дистрактор сработает, где может быть двусмысленность». Модель «видит» ошибки до генерации.

Self-Consistency (Самосогласованность)

Запусти один промт 3–5 раз при temperature=0.7. Собери только те задания, которые повторились во всех запусках (или их ядро). Случайные галлюцинации отсеются сами.

Persona Adoption (Принятие персоны студента)

После генерации добавь шаг: «Теперь действуй как студент {уровень}. Реши задание. Где застрянешь? Что непонятно?». Это мгновенно находит дыры в условии.

Taxonomy Alignment Check

В промте требуй поле «bloom_level» для каждого вопроса. После генерации прогони отдельным промтом-валидатором: «Соответствует ли заявленный уровень реальному когнитивному усилию? Исправь несоответствия».

Сравнение: «Сырое» vs «Инженерное» промт

Сырое
«Сделай 20 вопросов по Python для джунов на собеседование. С ответами.»
Инженерное
Роль: Senior Python Developer + Interviewer.
Контекст: Джуниоры, 0-1 год опыта, 45 мин, без IDE.
Задача: 15 задач (5 theory, 5 code reading, 5 debug).
Формат: JSON (id, type, stem, code?, options?, answer, explanation, bloom, tags[]).
Ограничения: Нет вопросов «Что такое список?». Только применение. Дистракторы — реальные баги.
Few-shot: 3 примера вложены.

Результат: Второе даёт готовую к загрузке в LMS банку с балансом уровней Блума, пояснениями для разбора и тегами для аналитики. Первое — список 정의й из википедии.

Чек-лист валидации: приёмка партии перед экзаменом

Фактическая точность

Нет галлюцинаций: несуществующие функции, устаревшие API, неверные даты, законы. Проверяй по исходникам курса.

Соответствие Блуму

Заявленный «Analyze» требует сравнения/классификации, а не воспроизведения определения. Переразмечай или перегенерируй.

Качество дистракторов

Неверные варианты плаузибельны, не абсурдны. Идеально — если они покрывают топ-3 типичные ошибки по теме.

Отсутствие утечек (Cueing)

Правильный ответ не выделяется длиной, лексикой, грамматикой, позицией (не всегда «C»), наличием абсолютов (всегда/никогда).

Баланс покрытия программы

Все ключевые темы модуля представлены пропорционально часам обучения. Нет перекоса к «любимым» темам модели.

Техническая валидность JSON

Схема валидна, экранирование кавычек в строках корректно, обязательные поля заполнены. Парсер не упадёт на импорте.

Нейросеть не заменит методиста. Она уберёт рутину.

Хороший промт — это зафиксированная экспертиза. Раз ты научился описывать задачу так, что модель выдаёт качественный экзамен — ты структурировал своё знание. Теперь это знание масштабируется, версионируется и передаётся коллегам.

Промт — это кодИтерация — это тестВалидация — это код-ревью