Розробка AI-системи автогенерації тестів та іспитів

Викладачі витрачають до 40% часу на складання тестів, а студенти легко знаходять готові відповіді. Ручне створення 30-запитанного іспиту займає 4–6 годин — і це лише один варіант. AI-система автогенерації тестів окупається за кілька місяців: економія часу викладача до 70%, а вартість тесту знижуєтьс

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Викладачі витрачають до 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 місяці

Процес роботи

  1. Аналітика — вивчаємо ваш навчальний матеріал та вимоги до тестів
  2. Проектування — визначаємо типи питань, розподіл за рівнями, формат вивантаження
  3. Реалізація — пишемо код генерації, інтегруємо з вашою LMS
  4. Тестування — перевіряємо на реальних студентах, коригуємо промпти
  5. Деплой — запускаємо в продакшен, передаємо документацію

Строки орієнтовно

  • Генератор тестів з готового текстового матеріалу — 1–2 тижні
  • Повноцінна платформа з автоперевіркою, аналітикою та інтеграцією в LMS — 2–3 місяці

Вартість розраховується індивідуально під ваш обсяг даних та необхідні інтеграції. Економія бюджету на навчання становить 30–50% від витрат на ручне тестування. Вкладення в автоматизацію окупаються за 2 місяці. Оцінимо проект за один день — замовте індивідуальну демонстрацію, щоб обговорити деталі.

Більше 5 років досвіду в AI/ML, 20+ проектів з генерації контенту. Гарантуємо стабільну роботу та своєчасну здачу. Отримайте консультацію щодо вашого проекту — ми оцінимо можливості автоматизації за один день.