feat: 完善模型管理功能
- 新增模型 API 路由,支持 CRUD 和测试连接 - 支持 MiniMax、GLM、OpenAI Compatible 三种供应商 - 添加连接状态持久化 (untested/connected/disconnected) - 修复 CORS 和数据库模型兼容性问题 - 前端 UI 优化:供应商默认 API 地址自动填充 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,13 @@ from app.schemas.eval import (
|
||||
TaskResponse,
|
||||
)
|
||||
|
||||
from app.schemas.model import (
|
||||
ModelBase,
|
||||
ModelCreate,
|
||||
ModelUpdate,
|
||||
ModelResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
# Base
|
||||
"TimestampMixin",
|
||||
@@ -86,4 +93,9 @@ __all__ = [
|
||||
"EvalDatasetResponse",
|
||||
"TaskBase",
|
||||
"TaskResponse",
|
||||
# Model
|
||||
"ModelBase",
|
||||
"ModelCreate",
|
||||
"ModelUpdate",
|
||||
"ModelResponse",
|
||||
]
|
||||
|
||||
41
backend/app/schemas/model.py
Normal file
41
backend/app/schemas/model.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""
|
||||
Model Schema
|
||||
"""
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
|
||||
|
||||
class ModelBase(BaseModel):
|
||||
"""Base model schema"""
|
||||
provider: str = Field(..., description="Model provider: minimax, glm, openai")
|
||||
model_name: str = Field(..., description="Model name")
|
||||
api_key: Optional[str] = Field(None, description="API key")
|
||||
api_base: Optional[str] = Field(None, description="API base URL")
|
||||
is_default: str = Field(default="false", description="Is default model: true/false")
|
||||
|
||||
|
||||
class ModelCreate(ModelBase):
|
||||
"""Model creation schema"""
|
||||
pass
|
||||
|
||||
|
||||
class ModelUpdate(BaseModel):
|
||||
"""Model update schema"""
|
||||
provider: Optional[str] = None
|
||||
model_name: Optional[str] = None
|
||||
api_key: Optional[str] = None
|
||||
api_base: Optional[str] = None
|
||||
is_default: Optional[str] = None
|
||||
|
||||
|
||||
class ModelResponse(ModelBase):
|
||||
"""Model response schema"""
|
||||
id: UUID
|
||||
created_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
project_id: Optional[UUID] = None
|
||||
connection_status: Optional[str] = Field(default="untested")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
Reference in New Issue
Block a user