muhammadjalaludin
Add dataset and file handler classes for transaction data processing; include Pydantic models for API validation
ea2348b Download models/api.py from kota101/ta_ml: direct link, hf CLI and curl.
- Browser
- Download file 2.67 kB
-
https://huggingface.co/spaces/kota101/ta_ml/resolve/main/models/api.py
- Command line
-
hf download hf://spaces/kota101/ta_ml/models/api.py
-
curl -L -o api.py https://huggingface.co/spaces/kota101/ta_ml/resolve/main/models/api.py
2.67 kB
| # ta_ml/models/api.py | |
| """ | |
| Pydantic models for API request and response validation. | |
| This module centralizes all data transfer objects (DTOs) used by the FastAPI | |
| application, ensuring consistent and validated data structures across the API. | |
| """ | |
| from typing import List, Optional | |
| from pydantic import BaseModel, Field | |
| # --- Prediction Models --- | |
| class PredictRequest(BaseModel): | |
| """Request model for the prediction endpoint.""" | |
| text: str = Field(..., min_length=1, | |
| description="The transaction text to classify.") | |
| class PredictResponse(BaseModel): | |
| """Response model for a successful prediction.""" | |
| predicted_label: str = Field(..., description="The most likely category.") | |
| confidence: float = Field(..., ge=0, le=1, | |
| description="The model's confidence score.") | |
| # --- Tokenization Models --- | |
| class TokenizationResult(BaseModel): | |
| """Detailed tokenization result for a single word or text.""" | |
| word: str | |
| tokens: List[str] | |
| token_ids: List[int] | |
| token_vocab_flags: List[bool] | |
| all_tokens_in_vocab: bool | |
| vocab_status: str | |
| class TokenizationDatasetStats(BaseModel): | |
| """Statistics for a tokenized dataset.""" | |
| total_entries_processed: int | |
| in_vocab_count: int | |
| oov_token_count: int | |
| total_token_count: int | |
| in_vocab_ratio: float | |
| oov_token_ratio: float | |
| class TokenizationDatasetResponse(BaseModel): | |
| """Response model for the file tokenization endpoint.""" | |
| stats: TokenizationDatasetStats | |
| results: List[TokenizationResult] | |
| # --- Training Models --- | |
| class TrainDirectRequest(BaseModel): | |
| """Request model for training directly from text/label lists.""" | |
| texts: List[str] = Field(..., min_items=1) | |
| labels: List[str] = Field(..., min_items=1) | |
| class TrainingResponse(BaseModel): | |
| """Standard response for initiating a training job.""" | |
| message: str | |
| class TrainingMetrics(BaseModel): | |
| """Detailed metrics from a completed training process.""" | |
| accuracy: float | |
| precision: float | |
| recall: float | |
| f1_score: float | |
| details: str | |
| class TrainingCompletionResponse(BaseModel): | |
| """Response model for a completed training job.""" | |
| message: str | |
| metrics: TrainingMetrics | |
| # --- Backup Models --- | |
| class CacheFileListResponse(BaseModel): | |
| """Response model for listing files in the cache.""" | |
| files: List[str] | |
| class BackupUploadResponse(BaseModel): | |
| """Response model for a successful cache upload.""" | |
| status: str | |
| repo: str | |
| # --- Admin Models --- | |
| class ReloadResponse(BaseModel): | |
| """Response model for a model reload request.""" | |
| status: str | |
| detail: Optional[str] = None | |