Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
"""
|
||||
LLM 模型 Schema
|
||||
"""
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
|
||||
from app.base_schema import CSTDatetime
|
||||
|
||||
|
||||
class ModelCreate(BaseModel):
|
||||
"""创建模型"""
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
provider_id: str = Field(..., description="提供商 ID")
|
||||
model_name: str = Field(..., max_length=100, description="模型名称")
|
||||
display_name: str = Field(..., max_length=100, description="显示名称")
|
||||
model_type: str = Field(default="chat", description="模型类型")
|
||||
max_tokens: int = Field(default=4096, description="最大 Token")
|
||||
context_window: int = Field(default=4096, description="上下文窗口")
|
||||
default_temperature: float = Field(default=0.7, description="默认温度")
|
||||
default_top_p: float = Field(default=1.0, description="默认 top_p")
|
||||
input_price: Decimal = Field(default=0, description="输入价格")
|
||||
output_price: Decimal = Field(default=0, description="输出价格")
|
||||
supports_vision: bool = Field(default=False, description="支持视觉")
|
||||
supports_function_call: bool = Field(default=False, description="支持函数调用")
|
||||
supports_streaming: bool = Field(default=True, description="支持流式")
|
||||
is_active: bool = Field(default=True, description="是否启用")
|
||||
|
||||
|
||||
class ModelUpdate(BaseModel):
|
||||
"""更新模型"""
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
display_name: Optional[str] = None
|
||||
model_type: Optional[str] = None
|
||||
max_tokens: Optional[int] = None
|
||||
context_window: Optional[int] = None
|
||||
default_temperature: Optional[float] = None
|
||||
default_top_p: Optional[float] = None
|
||||
input_price: Optional[Decimal] = None
|
||||
output_price: Optional[Decimal] = None
|
||||
supports_vision: Optional[bool] = None
|
||||
supports_function_call: Optional[bool] = None
|
||||
supports_streaming: Optional[bool] = None
|
||||
is_active: Optional[bool] = None
|
||||
|
||||
|
||||
class ModelResponse(BaseModel):
|
||||
"""模型输出"""
|
||||
model_config = ConfigDict(from_attributes=True, protected_namespaces=())
|
||||
|
||||
id: str
|
||||
provider_id: str
|
||||
provider_name: str = ""
|
||||
model_name: str
|
||||
display_name: str
|
||||
model_type: str = "chat"
|
||||
max_tokens: int = 4096
|
||||
context_window: int = 4096
|
||||
default_temperature: float = 0.7
|
||||
default_top_p: float = 1.0
|
||||
input_price: Decimal = Decimal(0)
|
||||
output_price: Decimal = Decimal(0)
|
||||
supports_vision: bool = False
|
||||
supports_function_call: bool = False
|
||||
supports_streaming: bool = True
|
||||
is_active: bool = True
|
||||
sort: int = 0
|
||||
sys_create_datetime: Optional[CSTDatetime] = None
|
||||
sys_update_datetime: Optional[CSTDatetime] = None
|
||||
|
||||
|
||||
class ModelListResponse(BaseModel):
|
||||
"""模型列表输出"""
|
||||
model_config = ConfigDict(from_attributes=True, protected_namespaces=())
|
||||
|
||||
id: str
|
||||
provider_id: str
|
||||
provider_name: str = ""
|
||||
model_name: str
|
||||
display_name: str
|
||||
model_type: str = "chat"
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class DefaultModelResponse(BaseModel):
|
||||
"""默认模型信息"""
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
model_name: str
|
||||
display_name: str
|
||||
model_type: str = "chat"
|
||||
max_tokens: int = 4096
|
||||
context_window: int = 4096
|
||||
supports_vision: bool = False
|
||||
supports_function_call: bool = False
|
||||
input_price: float = 0
|
||||
output_price: float = 0
|
||||
Reference in New Issue
Block a user