69 lines
1.8 KiB
Python
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
|