mcq / app /api /routes.py
puzan789's picture
Added
775ba42
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()
@router.get("/generate_mcq", response_class=HTMLResponse)
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})
@router.get(
"/api/generate_mcq", status_code=status.HTTP_200_OK, tags=["MCQ Generation "]
)
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.")