Spaces:
Sleeping
Sleeping
| """Modèles Pydantic pour les requêtes et réponses API.""" | |
| from typing import Optional | |
| from pydantic import BaseModel, Field, ConfigDict | |
| class QuestionInput(BaseModel): | |
| """Modèle pour une question d'entrée.""" | |
| question: str = Field(..., min_length=1, max_length=500, description="Question en texte libre") | |
| threshold: Optional[float] = Field( | |
| None, | |
| ge=0.0, | |
| le=1.0, | |
| description="Seuil de similarité cosinus souhaité entre 0.0 et 1.0. Si omis, la valeur par défaut du service est utilisée.", | |
| ) | |
| model_config = ConfigDict( | |
| json_schema_extra={ | |
| "example": { | |
| "question": "On a besoin de télécharger une application côté famille ?", | |
| "threshold": 0.85 | |
| } | |
| } | |
| ) | |
| class AnswerOutput(BaseModel): | |
| """Modèle pour une réponse de sortie.""" | |
| question: str = Field(..., description="Question posée") | |
| formulation: str = Field(..., description="Formulation de la question trouvée dans la base FAQ") | |
| answer: str = Field(..., description="Réponse trouvée dans la base FAQ") | |
| theme: str = Field(..., description="Thème/catégorie de la réponse") | |
| similarity_score: float = Field(..., ge=0.0, le=1.0, description="Score de similarité cosinus [0, 1]") | |
| confidence: bool = Field(..., description="True si score >= seuil de confiance, False sinon") | |
| model_config = ConfigDict( | |
| json_schema_extra={ | |
| "example": { | |
| "question": "On a besoin de télécharger une application côté famille ?", | |
| "formulation": "Les parents ont-ils besoin de télécharger une application ?", | |
| "answer": "Non. Les parents accèdent aux médias via un lien web reçu par e-mail, sans installation requise.", | |
| "theme": "need_download_family_app", | |
| "similarity_score": 0.889, | |
| "confidence": True | |
| } | |
| } | |
| ) | |
| class HealthResponse(BaseModel): | |
| """Modèle pour la réponse health check.""" | |
| status: str = Field(..., description="État du service") | |
| faq_count: int = Field(..., description="Nombre de questions dans la base FAQ") | |
| model_config = ConfigDict( | |
| json_schema_extra={ | |
| "example": { | |
| "status": "ok", | |
| "faq_count": 3 | |
| } | |
| } | |
| ) | |