Skip to content

abaykopenov/scorm-generator

Repository files navigation

AI Course Generator & eLearning Packager (FastAPI + RLM)

Интеллектуальная система автоматической генерации образовательных курсов на базе исходных PDF-документов (книг, инструкций, дипломов). Проект разделяет контент на модули, уроки и интерактивные слайды с тестами (квизами), а также упаковывает результат в SCORM-пакеты для интеграции в любые современные LMS-системы (Moodle, iSpring Learn, WebTutor).


🚀 Основные возможности архитектуры (4-Level RLM)

Система построена на базе рекурсивно-языковой модели (RLM) с четырьмя уровнями интеграции:

  1. Level 1 (DocumentAnalyzer): Иерархический анализ структуры документа. Текст делится на чанки (родительские и дочерние), для которых строятся краткие суммаризации. Они кэшируются в базе данных и используются для составления верхнеуровневого учебного плана (Syllabus).
  2. Level 2 (AgenticRAG): Агентный поиск контекста. При генерации каждого конкретного урока ИИ совершает до 3 итераций поиска в векторной базе данных (PostgreSQL + pgvector), проверяя полноту собранного материала (>80% покрытия темы).
  3. Level 3 (QualityReviewer): Автоматический контроль качества. Перед сохранением урока ИИ-ревьюер сверяет сгенерированные слайды по 3 критериям (покрытие целей обучения, валидность тестов, фактологическое заземление на исходные чанки). В случае ошибок запускается точечная доработка (до 2 попыток).
  4. Level 4 (Parallel Generation): Поддержка параллельной генерации модулей и уроков для высокопроизводительных облачных API (отключаемая опция).

🛠 Технологический стек

  • Core: Python 3.9+, FastAPI, SQLAlchemy
  • Database: PostgreSQL + расширение pgvector (для хранения векторных представлений текстов)
  • ИИ-Провайдеры (выбор при запуске):
    • Gemini: Модели семейства gemini-2.5-flash и gemini-embedding-2 для эмбеддингов.
    • DeepSeek: Прямая интеграция с официальным API (deepseek-chat).
    • OpenRouter: Доступ к лучшим open-source моделям (например, deepseek/deepseek-chat).
    • Ollama (Локально): Полностью приватная генерация на локальном железе (например, qwen3.5:35b-a3b и локальные эмбеддинги).
  • Export: Генерация архивов SCORM 1.2, HTML5-сайтов и PDF-документов.

📦 Установка и настройка

1. Требования

  • Установленный PostgreSQL с поддержкой pgvector.
  • Установленная СУБД Redis (для очереди задач).

2. Клонирование и установка зависимостей

# Установка виртуального окружения
python3 -m venv .venv
source .venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

3. Конфигурация окружения

Создайте файл .env в корневой директории на основе шаблона .env.example:

# База данных PostgreSQL
DATABASE_URL=postgresql+psycopg://postgres:postgrespassword@localhost:5432/course_generator

# Redis
REDIS_URL=redis://localhost:6379/0

# API-ключи провайдеров
GEMINI_API_KEY=ваш_ключ_gemini
DEEPSEEK_API_KEY=ваш_ключ_deepseek
OPENROUTER_API_KEY=ваш_ключ_openrouter

# Настройки генерации по умолчанию
GENERATION_PROVIDER=gemini
EMBEDDING_PROVIDER=gemini
EMBEDDING_DIMENSION=3072
GEMINI_GENERATION_MODEL=gemini-2.5-flash

🏁 Запуск проекта

1. Запуск Web-сервера (FastAPI)

.venv/bin/python3 -m uvicorn app.main:app --reload

API будет доступно по адресу http://localhost:8000. Интерактивная документация Swagger: http://localhost:8000/docs.

2. Запуск генерации курса (CLI)

Скрипт запускает интерактивный выбор модели и отправляет запрос на бэкенд для генерации:

.venv/bin/python3 trigger_generation.py

3. Просмотр готовых уроков (Превью)

Чтобы посмотреть сгенерированные слайды и тесты, не дожидаясь сборки SCORM-пакета:

.venv/bin/python3 preview_lessons.py

Результат запишется в файл lessons_preview.md в корневой папке.


📑 Основные API-эндпоинты

  • POST /api/v1/courses/generate — запуск асинхронной генерации курса. Принимает document_id и provider.
  • GET /api/v1/courses/{course_id} — получить текущий статус генерации и учебный план.
  • GET /api/v1/courses/{course_id}/lessons — получить все готовые уроки, слайды и тесты.
  • GET /api/v1/courses/{course_id}/export?format={scorm12|pdf|html5} — экспорт курса в выбранный формат.
  • PUT /api/v1/courses/slides/{slide_id} — ручное редактирование контента слайда.
  • POST /api/v1/courses/{course_id}/stop — экстренная остановка генерации.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages