sms-classifier-api / app /api /inference.py
cmeneses99's picture
Refactor: reorganize into core/, api/, web/, templates/
84bb476
from fastapi import APIRouter, HTTPException
from ..core.model_loader import get_classifier
from ..core.schemas import PredictRequest, PredictResponse, ClassifyBatchRequest, ClassifyBatchResponse
from ..services.classifier import classify_one, classify_many
from ..utils import normalize
router = APIRouter(tags=["inference"])
@router.post("/classify", response_model=PredictResponse)
def classify(request: PredictRequest):
if get_classifier() is None:
raise HTTPException(status_code=503, detail="Model not available")
return classify_one(normalize(request.text), request.text)
@router.post("/classify/batch", response_model=ClassifyBatchResponse)
def classify_batch(request: ClassifyBatchRequest):
if get_classifier() is None:
raise HTTPException(status_code=503, detail="Model not available")
normalized = [normalize(t) for t in request.texts]
results, from_cache = classify_many(normalized, request.texts)
return ClassifyBatchResponse(results=results, total=len(results), from_cache=from_cache)