Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, status, HTTPException | |
| from pydantic import BaseModel | |
| from src.agents.evaluation.agent import evaluate_conversation | |
| from src.utils.logger import logger | |
| from typing import Optional | |
| router = APIRouter(prefix="/evaluation", tags=["Evaluation"]) | |
| class EvaluationRequest(BaseModel): | |
| session_id: str | |
| learner_level: str = "beginner" | |
| scenario_title: Optional[str] = "" | |
| scenario_description: Optional[str] = "" | |
| key_vocabulary: Optional[str] = "" | |
| class EvaluationResponse(BaseModel): | |
| score: int | |
| feedback: str | |
| strengths: list | |
| improvements: list | |
| suggestions: list | |
| next_steps: list | |
| words_used: list | |
| perfect_response: str | |
| impressive_words: list | |
| async def evaluate_conversation_endpoint(request: EvaluationRequest): | |
| """Evaluate a conversation and provide feedback""" | |
| logger.info( | |
| f"Received evaluation request for session: {request.session_id}") | |
| try: | |
| result = await evaluate_conversation( | |
| session_id=request.session_id, | |
| learner_level=request.learner_level, | |
| scenario_title=request.scenario_title or "", | |
| scenario_description=request.scenario_description or "", | |
| key_vocabulary=request.key_vocabulary or "" | |
| ) | |
| return result | |
| except Exception as e: | |
| logger.error(f"Error in conversation evaluation: {str(e)}") | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Failed to evaluate conversation: {str(e)}" | |
| ) | |