Викладачі витрачають до 40% часу на складання тестів, а студенти легко знаходять готові відповіді. Ручне створення 30-запитанного іспиту займає 4–6 годин — і це лише один варіант. AI-система автогенерації тестів окупається за кілька місяців: економія часу викладача до 70%, а вартість тесту знижується до $0.50 (у 10 разів дешевше від ручної праці). Ми пропонуємо рішення: система генерує унікальні екзаменаційні завдання за вашим матеріалом з урахуванням рівня складності та таксономії Блума. Кожен студент отримує свій варіант, перевірка відкритих відповідей автоматизована. Система інтегрується з LMS (Moodle, iSpring) та підтримує кастомні формати вивантаження. Отримайте консультацію щодо вашого проекту — ми оцінимо можливості автоматизації за один день.
Чому традиційні тести перестають працювати?
Ручне складання питань забирає години, а банки питань швидко застарівають. Студенти обмінюються відповідями, викладач витрачає час на перевірку. AI-генерація вирішує обидві проблеми: створює безліч варіантів і оцінює відкриті відповіді за секунди. Згідно з дослідженням McKinsey, автоматизація рутинних завдань вивільняє до 30% часу викладача.
Як AI генерує питання за таксономією Блума?
Використовуємо GPT-4o з промптами, налаштованими під кожен рівень таксономії Блума: від запам'ятовування фактів до створення нових продуктів. Код нижче показує реалізацію.
from openai import AsyncOpenAI from enum import Enum import json client = AsyncOpenAI() class BloomLevel(Enum): REMEMBER = "remember" UNDERSTAND = "understand" APPLY = "apply" ANALYZE = "analyze" EVALUATE = "evaluate" CREATE = "create" BLOOM_PROMPTS = { BloomLevel.REMEMBER: "Создай вопрос на запоминание фактов, дат, определений", BloomLevel.UNDERSTAND: "Создай вопрос на понимание: объяснение, перефразирование, примеры", BloomLevel.APPLY: "Создай практическую задачу: применение знаний в новой ситуации", BloomLevel.ANALYZE: "Создай вопрос на анализ: сравнение, выявление причин, структурирование", BloomLevel.EVALUATE: "Создай вопрос на оценку: обоснование суждения, критика подхода", BloomLevel.CREATE: "Создай задание на синтез: разработка решения, создание продукта", } async def generate_question( topic: str, source_text: str, question_type: str, bloom_level: BloomLevel = BloomLevel.UNDERSTAND, difficulty: str = "medium" ) -> dict: response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": f"""Создай тестовый вопрос. Тип: {question_type}. Уровень таксономии Блума: {bloom_level.value}. {BLOOM_PROMPTS[bloom_level]}. Сложность: {difficulty}. Для multiple_choice: 4 варианта, 1 правильный, 3 правдоподобных дистрактора. Для open_answer: эталонный ответ + критерии оценки. Для case_study: ситуация + 3-5 вопросов разного уровня. Верни JSON: {{ question: "текст вопроса", type: "{question_type}", bloom_level: "{bloom_level.value}", options: ["A...", "B...", ...], correct_answer: "...", explanation: "почему именно этот ответ", scoring_rubric: {{...}} }}""" }, { "role": "user", "content": f"Тема: {topic}\n\nМатериал:\n{source_text[:2000]}" }], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content) Генерація повного варіанту іспиту
Збираємо білет із питань із заданим розподілом за рівнями. Наприклад, 30% на розуміння, 30% на застосування, 20% на аналіз і 20% на запам'ятовування.
async def generate_exam_variant( course_topics: list[str], total_questions: int = 30, time_limit_min: int = 60, bloom_distribution: dict = None ) -> dict: if not bloom_distribution: bloom_distribution = { BloomLevel.REMEMBER: 0.2, BloomLevel.UNDERSTAND: 0.3, BloomLevel.APPLY: 0.3, BloomLevel.ANALYZE: 0.2 } questions_by_level = { level: int(total_questions * fraction) for level, fraction in bloom_distribution.items() } all_questions = [] tasks = [] for level, count in questions_by_level.items(): for i in range(count): topic = course_topics[i % len(course_topics)] q_type = "multiple_choice" if level in [BloomLevel.REMEMBER, BloomLevel.UNDERSTAND] else "open_answer" tasks.append(generate_question( topic=topic, source_text="", question_type=q_type, bloom_level=level )) all_questions = await asyncio.gather(*tasks) return { "variant_id": f"V{random.randint(1000, 9999)}", "time_limit_min": time_limit_min, "total_points": sum(q.get("points", 1) for q in all_questions), "questions": list(all_questions), "bloom_distribution": {l.value: c for l, c in questions_by_level.items()} } | Рівень таксономії | Тип питання за замовчуванням | Частка в білеті |
|---|---|---|
| Remember | multiple_choice | 20% |
| Understand | multiple_choice | 30% |
| Apply | open_answer | 30% |
| Analyze | open_answer | 20% |
Порівняння AI та ручного методу
AI-генерація в 10 разів швидша за ручне створення тестів: 30 питань за 2 хвилини замість 4–6 годин. Вартість генерації тесту в 5–10 разів нижча, а кількість унікальних варіантів — до 30 на питання.
| Параметр | Ручний метод | AI-система |
|---|---|---|
| Час на 30 питань | 4–6 годин | 2–3 хвилини |
| Кількість варіантів | 1–2 (з копіями) | до 30 унікальних |
| Перевірка відкритих відповідей | вручну, години | автоматично, секунди |
| Вартість за тест | висока (оплата праці) | низька (тільки API) |
Як забезпечити унікальність варіантів?
Кожне питання — не копія. Система генерує до 30 унікальних версій, змінюючи числа, імена, контекст і порядок варіантів. Складність при цьому залишається однаковою — перевірено на десятках проектів.
async def generate_unique_variants( base_question: str, n_variants: int = 30, maintain_difficulty: bool = True ) -> list[dict]: response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": f"""Создай {n_variants} уникальных версий вопроса. Варьируй: числа, имена, контекст, порядок вариантов ответа. Сложность {'должна оставаться одинаковой' if maintain_difficulty else 'может варьироваться'}. Верни JSON массив.""" }, { "role": "user", "content": f"Исходный вопрос: {base_question}" }], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content)["variants"] Автоматична перевірка відкритих відповідей
Для питань з відкритою відповіддю AI-оцінювач звіряє відповідь студента з еталоном за рубрикою та виставляє бали з коментарями.
async def auto_grade_open_answer( question: str, correct_answer: str, rubric: dict, student_answer: str ) -> dict: response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": f"""Проверяй ответ студента по рубрике. Вопрос: {question} Эталонный ответ: {correct_answer} Критерии оценки: {json.dumps(rubric, ensure_ascii=False)} Оцени ответ и верни JSON: {{score: 0-100, feedback: "подробная обратная связь", strengths: [], weaknesses: []}}""" }, { "role": "user", "content": f"Ответ студента: {student_answer}" }], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content) Оцінка на основі ансамблю моделей
Для надійності перевірки спірних відповідей використовуємо ансамбль з трьох різних AI-моделей. Якщо дві моделі дають однакову оцінку — вона фінальна. При розбіжності підключається третя, відповідь позначається на ручне рев’ю. Це знижує ризик помилки до 1% на тест.
Важливість розподілу за рівнями таксономії: він гарантує, що тест оцінює не лише запам'ятовування, а й розуміння, аналіз та синтез, що покращує якість оцінки студентів і відповідає сучасним освітнім стандартам.
Що входить в роботу
- Проектування архітектури генерації під ваш контент
- Розробка промптів для всіх рівнів таксономії Блума
- Інтеграція з LMS (Moodle, iSpring, custom API)
- Генерація до 30 унікальних варіантів на питання
- Модуль автоперевірки відкритих відповідей з рубриками
- Документація, навчання викладачів, підтримка 2 місяці
Процес роботи
- Аналітика — вивчаємо ваш навчальний матеріал та вимоги до тестів
- Проектування — визначаємо типи питань, розподіл за рівнями, формат вивантаження
- Реалізація — пишемо код генерації, інтегруємо з вашою LMS
- Тестування — перевіряємо на реальних студентах, коригуємо промпти
- Деплой — запускаємо в продакшен, передаємо документацію
Строки орієнтовно
- Генератор тестів з готового текстового матеріалу — 1–2 тижні
- Повноцінна платформа з автоперевіркою, аналітикою та інтеграцією в LMS — 2–3 місяці
Вартість розраховується індивідуально під ваш обсяг даних та необхідні інтеграції. Економія бюджету на навчання становить 30–50% від витрат на ручне тестування. Вкладення в автоматизацію окупаються за 2 місяці. Оцінимо проект за один день — замовте індивідуальну демонстрацію, щоб обговорити деталі.
Більше 5 років досвіду в AI/ML, 20+ проектів з генерації контенту. Гарантуємо стабільну роботу та своєчасну здачу. Отримайте консультацію щодо вашого проекту — ми оцінимо можливості автоматизації за один день.







