38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
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
|