Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter,status, Query, Request | |
| from fastapi.responses import HTMLResponse | |
| from app.services.gemini import GenerateAnswer | |
| from app.schemas import SOLOLevel, MCQResponse | |
| from app.core.exceptions import CustomException | |
| from fastapi.templating import Jinja2Templates | |
| from app.core.logging import logger | |
| templates = Jinja2Templates(directory="app/templates") | |
| answer_service = GenerateAnswer() | |
| router = APIRouter() | |
| async def generate_mcq( | |
| request: Request, | |
| topic: str = Query(default=None), | |
| solo_level: SOLOLevel = Query(default=None), | |
| ): | |
| """ | |
| Generate a multiple-choice question (MCQ) based on the provided topic and SOLO level in jinja template. | |
| """ | |
| if topic and solo_level: | |
| mcq = await answer_service.generate_mcq( | |
| topic=topic, solo_level=solo_level | |
| ) # generates mcq | |
| if not mcq: | |
| raise CustomException(detail="No MCQ generated.") | |
| return templates.TemplateResponse( | |
| "index.html", {"request": request, "mcq": mcq} | |
| ) | |
| return templates.TemplateResponse("index.html", {"request": request}) | |
| async def generate_mcq_api( | |
| topic: str, | |
| solo_level: SOLOLevel = Query(...), | |
| ) -> MCQResponse: | |
| """ | |
| Generate a multiple-choice question (MCQ) based on the provided topic and SOLO level. | |
| """ | |
| try: | |
| mcq = await answer_service.generate_mcq(topic=topic, solo_level=solo_level) | |
| if not mcq: | |
| raise CustomException(detail="No MCQ generated.") | |
| return mcq | |
| except Exception: | |
| logger.exception("Unexpected error while generating MCQ.") | |
| raise CustomException(detail="Internal server error during MCQ generation.") | |