The project adopts a modular design with clear responsibilities for each component:
Prompt Manager
Developed by Magdalena, it manages and optimizes prompt templates sent to LLMs to ensure high-quality quiz question generation.
LLM Integration Layer
Led by Krystian, it handles communication with large language models, including:
- Model calling and response processing
- Fallback mechanism to ensure service availability
- Result reduction to optimize output quality
- Quality checks to ensure the accuracy of generated content
- Guardrails to prevent inappropriate content generation
Pydantic Validation Layer
Implemented by Joanna Czarnocka, it uses Pydantic models to perform structured validation on LLM outputs, ensuring correct data format and complete fields.
User Interface (Streamlit UI)
Also developed by Joanna, it provides three main interfaces:
- Configuration interface: Set model parameters and API keys
- Quiz interface: Interactive interface for taking quizzes
- Summary interface: Display quiz results and statistics
File Processing Module
Supports loading content from text files (.txt) and PDF files as context sources for quiz generation.