AgentEvalTool/backend/agenteval/web/model_config_schemas.py

69 lines
1.8 KiB
Python

"""Request and response schemas for the model configuration center."""
from datetime import datetime
from pydantic import BaseModel, Field
from agenteval.models import ModelCapability
from agenteval.storage.db import ModelConfigDB, iso_utc
class ModelConfigCreate(BaseModel):
name: str = Field(min_length=1, max_length=100)
provider: str = "openai_compatible"
capability: ModelCapability
endpoint_url: str
model_name: str | None = None
api_key: str | None = None
enabled: bool = True
is_default: bool = False
description: str = ""
class ModelConfigUpdate(ModelConfigCreate):
clear_api_key: bool = False
class ModelConfigResponse(BaseModel):
id: str
name: str
provider: str
capability: ModelCapability
endpoint_url: str
model_name: str | None
has_api_key: bool
enabled: bool
is_default: bool
description: str
created_at: str | None
updated_at: str | None
@classmethod
def from_db(cls, config: ModelConfigDB) -> "ModelConfigResponse":
return cls(
id=config.id or "",
name=config.name,
provider=config.provider,
capability=ModelCapability(config.capability),
endpoint_url=config.endpoint_url,
model_name=config.model_name,
has_api_key=bool(config.api_key_encrypted),
enabled=config.enabled,
is_default=config.is_default,
description=config.description,
created_at=iso_utc(config.created_at),
updated_at=iso_utc(config.updated_at),
)
class ModelConfigReference(BaseModel):
scenario_id: str
scenario_name: str
purpose: str
class ModelConnectionTestResponse(BaseModel):
ok: bool
message: str
tested_at: datetime