from pydantic import BaseModel, Field, field_validator class CopyRequest(BaseModel): source_text: str = Field(..., description="商品资料,可同时包含事实与本次生成要求") product_name: str = Field(default="", description="当前表单商品名") model_code: str = Field(default="", description="型号") model: str = Field(default="", description="模型 id(可选,须在 models.yaml 白名单内)") @field_validator("source_text") @classmethod def source_text_min_length(cls, value: str) -> str: text = (value or "").strip() if len(text) < 10: raise ValueError("source_text 去空白后至少 10 个字符") return text @field_validator("model") @classmethod def normalize_model(cls, value: str) -> str: return (value or "").strip() class UsageInfo(BaseModel): prompt_tokens: int = 0 completion_tokens: int = 0 class CopyResponse(BaseModel): titles_ru: list[str] titles_zh: list[str] description_ru: str description_zh: str tags_ru: list[str] tags_zh: list[str] model: str usage: UsageInfo