from pydantic import BaseModel from typing import List, Optional # Module for Pydantic data models class Step(BaseModel): explanation: str output: str class Subtopics(BaseModel): steps: List[Step] result: List[str] class Topics(BaseModel): result: List[Subtopics] class CardFront(BaseModel): question: Optional[str] = None class CardBack(BaseModel): answer: Optional[str] = None explanation: str example: str class Card(BaseModel): front: CardFront back: CardBack metadata: Optional[dict] = None card_type: str = "basic" # Add card_type, default to basic class CardList(BaseModel): topic: str cards: List[Card] class ConceptBreakdown(BaseModel): main_concept: str prerequisites: List[str] learning_outcomes: List[str] common_misconceptions: List[str] difficulty_level: str # "beginner", "intermediate", "advanced" class CardGeneration(BaseModel): concept: str thought_process: str verification_steps: List[str] card: Card class LearningSequence(BaseModel): topic: str concepts: List[ConceptBreakdown] cards: List[CardGeneration] suggested_study_order: List[str] review_recommendations: List[str]