Spaces:
Sleeping
Sleeping
File size: 2,368 Bytes
72c8410 9be7c54 c0724a5 72c8410 e1e71b6 9be7c54 72c8410 c0724a5 72c8410 9be7c54 e1e71b6 72c8410 c0724a5 72c8410 c0724a5 72c8410 c0724a5 72c8410 c0724a5 72c8410 9be7c54 72c8410 c0724a5 72c8410 c0724a5 72c8410 c0724a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | """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
}
}
)
|