Spaces:
Sleeping
Sleeping
| """ | |
| Pydantic models for request/response validation | |
| """ | |
| from pydantic import BaseModel, Field | |
| from typing import Optional, List, Dict, Any | |
| class AnalysisRequest(BaseModel): | |
| """Request model for sentiment analysis""" | |
| text: str = Field(..., min_length=1, description="Text to analyze") | |
| diario_id: Optional[str] = Field(None, description="Associated diary entry ID") | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "text": "Hoy me siento muy feliz porque logré terminar mi proyecto", | |
| "diario_id": "uuid-123" | |
| } | |
| } | |
| class SentimentResult(BaseModel): | |
| """Response model for sentiment analysis results""" | |
| sentimiento_general: str = Field(..., description="Overall sentiment: positivo, negativo, neutral") | |
| score_positivo: float = Field(..., ge=0, le=1, description="Positive sentiment score (0-1)") | |
| score_negativo: float = Field(..., ge=0, le=1, description="Negative sentiment score (0-1)") | |
| score_neutral: float = Field(..., ge=0, le=1, description="Neutral sentiment score (0-1)") | |
| confianza: float = Field(..., ge=0, le=1, description="Confidence score (0-1)") | |
| modelo_usado: str = Field(..., description="Model used for analysis") | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "sentimiento_general": "positivo", | |
| "score_positivo": 0.85, | |
| "score_negativo": 0.10, | |
| "score_neutral": 0.05, | |
| "confianza": 0.85, | |
| "modelo_usado": "pysentimiento/robertuito-sentiment-analysis" | |
| } | |
| } | |
| class EnhancedSentimentResult(BaseModel): | |
| """Enhanced response with emotion, keywords and alerts""" | |
| sentimiento_general: str = Field(..., description="Overall sentiment: positivo, negativo, neutral") | |
| score_positivo: float = Field(..., ge=0, le=1, description="Positive sentiment score") | |
| score_negativo: float = Field(..., ge=0, le=1, description="Negative sentiment score") | |
| score_neutral: float = Field(..., ge=0, le=1, description="Neutral sentiment score") | |
| confianza: float = Field(..., ge=0, le=1, description="Confidence score") | |
| modelo_usado: str = Field(..., description="Model used") | |
| emocion_predominante: str = Field(..., description="Predominant emotion detected") | |
| palabras_clave: List[Dict[str, Any]] = Field(..., description="Key words found") | |
| alertas: List[Dict[str, str]] = Field(..., description="Alerts detected") | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "sentimiento_general": "positivo", | |
| "score_positivo": 0.85, | |
| "score_negativo": 0.10, | |
| "score_neutral": 0.05, | |
| "confianza": 0.85, | |
| "modelo_usado": "pysentimiento/robertuito-sentiment-analysis", | |
| "emocion_predominante": "Feliz", | |
| "palabras_clave": [ | |
| {"word": "proyecto", "frequency": 3}, | |
| {"word": "logré", "frequency": 2} | |
| ], | |
| "alertas": [] | |
| } | |
| } | |
| class HealthResponse(BaseModel): | |
| """Health check response""" | |
| status: str | |
| model_loaded: bool | |
| model_name: str | |