Spaces:
Running
Running
| from typing import List, Dict, Any, Optional, Union | |
| from pydantic import BaseModel, Field | |
| # 聊天完成请求模型 | |
| class ContentItem(BaseModel): | |
| type: str | |
| text: Optional[str] = None | |
| image_url: Optional[Dict[str, str]] = None | |
| class ChatMessage(BaseModel): | |
| role: str | |
| content: Union[str, List[ContentItem]] | |
| class ChatCompletionRequest(BaseModel): | |
| model: str | |
| messages: List[ChatMessage] | |
| temperature: Optional[float] = 1.0 | |
| top_p: Optional[float] = 1.0 | |
| n: Optional[int] = 1 | |
| stream: Optional[bool] = False | |
| max_tokens: Optional[int] = None | |
| presence_penalty: Optional[float] = 0 | |
| frequency_penalty: Optional[float] = 0 | |
| # API密钥创建模型 | |
| class ApiKeyCreate(BaseModel): | |
| name: str = Field(..., description="密钥名称") | |
| key_value: str = Field(..., description="密钥值") | |
| weight: int = Field(1, description="权重") | |
| rate_limit: int = Field(60, description="速率限制(每分钟请求数)") | |
| is_enabled: bool = Field(True, description="是否启用") | |
| notes: Optional[str] = Field(None, description="备注") | |
| # API密钥更新模型 | |
| class ApiKeyUpdate(BaseModel): | |
| name: Optional[str] = Field(None, description="密钥名称") | |
| key_value: Optional[str] = Field(None, description="密钥值") | |
| weight: Optional[int] = Field(None, description="权重") | |
| rate_limit: Optional[int] = Field(None, description="速率限制(每分钟请求数)") | |
| is_enabled: Optional[bool] = Field(None, description="是否启用") | |
| notes: Optional[str] = Field(None, description="备注") | |
| # 批量操作基础模型 | |
| class BatchOperation(BaseModel): | |
| action: str = Field(..., description="操作类型:import, enable, disable, delete") | |
| key_ids: Optional[List[str]] = Field(None, description="要操作的密钥ID列表") | |
| # 批量导入的密钥项模型 | |
| class ImportKeyItem(BaseModel): | |
| name: str = Field(..., description="密钥名称") | |
| key: str = Field(..., description="密钥值") | |
| weight: int = Field(1, description="权重") | |
| rate_limit: int = Field(60, description="速率限制(每分钟请求数)") | |
| enabled: bool = Field(True, description="是否启用") | |
| notes: Optional[str] = Field(None, description="备注") | |
| # 批量导入模型 | |
| class BatchImportOperation(BatchOperation): | |
| keys: List[ImportKeyItem] = Field(..., description="要导入的密钥列表") | |
| key_ids: Optional[List[str]] = None | |
| # 系统配置更新模型 | |
| class ConfigUpdate(BaseModel): | |
| PROXY_HOST: Optional[str] = Field(None, description="代理服务器主机") | |
| PROXY_PORT: Optional[str] = Field(None, description="代理服务器端口") | |
| PROXY_USER: Optional[str] = Field(None, description="代理服务器用户名") | |
| PROXY_PASS: Optional[str] = Field(None, description="代理服务器密码") | |
| BASE_URL: Optional[str] = Field(None, description="基础URL,用于图片访问地址") | |
| IMAGE_LOCALIZATION: Optional[bool] = Field(None, description="是否启用图片本地化存储") | |
| IMAGE_SAVE_DIR: Optional[str] = Field(None, description="图片保存目录") | |
| save_to_env: bool = Field(True, description="是否保存到环境变量文件") | |
| # 日志级别更新模型 | |
| class LogLevelUpdate(BaseModel): | |
| level: str = Field(..., description="日志级别: DEBUG, INFO, WARNING, ERROR, CRITICAL") | |
| save_to_env: bool = Field(True, description="是否保存到环境变量文件") | |
| # JWT认证请求模型 | |
| class LoginRequest(BaseModel): | |
| admin_key: str = Field(..., description="管理员密钥") | |
| # JWT令牌响应模型 | |
| class TokenResponse(BaseModel): | |
| token: str = Field(..., description="JWT令牌") | |
| expires_in: int = Field(..., description="有效期(秒)") | |
| token_type: str = Field("bearer", description="令牌类型") |