| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- """
- 本地模型数据传输对象定义
- """
- from datetime import datetime
- from typing import List, Optional
- from pydantic import BaseModel, ConfigDict, Field
- class LocalModelCreate(BaseModel):
- """创建本地模型请求"""
- name: str = Field(..., min_length=1, max_length=100)
- supplier: str = Field("Custom", min_length=1, max_length=100)
- base_url: str = Field(..., min_length=1, max_length=500)
- api_key: Optional[str] = Field(None, max_length=500)
- visibility: Optional[str] = Field('user')
- categories: Optional[List[int]] = Field([0], description="模型分类数组: 0=LLM,1=多模态,2=TTS,3=STT,4=图像生成,5=视频生成,6=图像编辑,7=Embedding,8=Rerank")
- class LocalModelUpdate(BaseModel):
- """更新本地模型请求"""
- name: Optional[str] = Field(None, min_length=1, max_length=100)
- supplier: Optional[str] = Field(None, min_length=1, max_length=100)
- base_url: Optional[str] = Field(None, min_length=1, max_length=500)
- api_key: Optional[str] = Field(None, max_length=500)
- visibility: Optional[str] = Field(None)
- categories: Optional[List[int]] = Field(None, description="模型分类数组")
- class LocalModelResponse(BaseModel):
- """本地模型响应"""
- id: int
- name: str
- supplier: str = Field("Custom")
- base_url: str = Field("")
- has_api_key: bool = Field(False)
- visibility: str = Field('user')
- categories: List[int] = Field([0], description="模型分类数组")
- category: int = Field(0, description="主分类(兼容字段,取 categories[0])")
- created_at: datetime
- updated_at: datetime
- model_config = ConfigDict(from_attributes=True)
- @classmethod
- def from_model(cls, model) -> "LocalModelResponse":
- cats = model.categories or [0]
- return cls(
- id=model.id,
- name=model.name,
- supplier=model.supplier or "Custom",
- base_url=model.base_url or "",
- has_api_key=bool(model.local_api_key),
- visibility=model.visibility or 'user',
- categories=cats,
- category=cats[0] if cats else 0,
- created_at=model.created_at,
- updated_at=model.updated_at
- )
- class ConnectionTestRequest(BaseModel):
- """连接测试请求"""
- base_url: str = Field(..., min_length=1, max_length=500)
- api_key: Optional[str] = Field(None, max_length=500)
- model_name: Optional[str] = Field(None, max_length=100)
- categories: Optional[List[int]] = Field(None)
- class ConnectionTestResponse(BaseModel):
- """连接测试响应"""
- success: bool
- message: str
|