from __future__ import annotations from typing import List from pydantic import BaseModel, Field, ConfigDict class ClassifyRequest(BaseModel): model_config = ConfigDict(extra="forbid") image_base64: str = Field(..., description="Base64-encoded image bytes (jpg/png/webp).") domain_top_n: int = Field(default=2, ge=1, le=3) top_k: int = Field(default=5, ge=1, le=20) class Hit(BaseModel): model_config = ConfigDict(extra="forbid") id: str score: float class ClassifyResponse(BaseModel): model_config = ConfigDict(extra="forbid", protected_namespaces=()) label_set_hash: str model_id: str domain_hits: List[Hit] chosen_domains: List[str] label_hits: List[Hit] elapsed_ms: int elapsed_domain_ms: int elapsed_labels_ms: int