from pydantic import BaseModel from typing import Dict, List, Optional # Pydantic model for the base response class BaseResponse(BaseModel): status: str message: Optional[str] = None class WelcomeResponse(BaseResponse): endpoints: Dict[str, str] class ModelInfoResponse(BaseResponse): model_name: str model_version: str supported_formats: List[str] max_file_size_mb: int training_info: Optional[Dict] = None last_updated: Optional[str] = None # Pydantic model for the prediction response class PredictionResponse(BaseModel): status: str lyrics: str audio_file_name: str audio_content_type: str audio_file_size: int results: Optional[Dict] = None class PredictionXAIResponse(BaseModel): status: str lyrics: str audio_file_name: str audio_content_type: str audio_file_size: int results: Optional[Dict] = None # Pydantic model for the error response class ErrorResponse(BaseModel): status: str = "error" code: int message: str