AcharO's picture
feat: sync main → hf-deploy — SW F1=0.840, EN=1.000, FR=0.970, KI=0.667
f829e35
"""Pydantic request/response models for the correction API."""
from typing import Literal, Optional
from pydantic import BaseModel, Field
# Supported language codes (must match rules_engine and detector)
SUPPORTED_LANGS = ("en", "sw", "fr", "ki")
LangCode = Literal["en", "sw", "fr", "ki"]
class RewriteRequest(BaseModel):
id: str
lang: LangCode
text: str = Field(..., min_length=1, max_length=5000)
flags: Optional[list] = None
region_dialect: Optional[str] = None # "kenya" | "tanzania" | "uganda" | "sheng" | "coastal"
class BatchRewriteRequest(BaseModel):
"""Request body for POST /rewrite/batch. Validated so invalid items return 422."""
items: list[RewriteRequest] = Field(..., min_length=1, max_length=100)
class RewriteResponse(BaseModel):
id: str
original_text: str
rewrite: str
edits: list
confidence: float
needs_review: bool
source: str # "rules" | "ml" | "preserved"
reason: str
semantic_score: Optional[float] = None
skipped_context: Optional[list] = None
has_bias_detected: bool = False