from pydantic import BaseModel, Field, ConfigDict from typing import Optional, Any from datetime import datetime class AIModelBase(BaseModel): model_config = ConfigDict(protected_namespaces=()) model_type: str = Field(..., pattern="^(asr|llm)$") provider: str = Field(..., max_length=50) model_name: str = Field(..., max_length=100) api_key: Optional[str] = None base_url: Optional[str] = None api_path: Optional[str] = None config: Optional[dict[str, Any]] = None is_default: bool = False status: int = 1 class AIModelCreate(AIModelBase): pass class AIModelUpdate(BaseModel): model_config = ConfigDict(protected_namespaces=()) model_type: Optional[str] = None provider: Optional[str] = None model_name: Optional[str] = None api_key: Optional[str] = None base_url: Optional[str] = None api_path: Optional[str] = None config: Optional[dict[str, Any]] = None is_default: Optional[bool] = None status: Optional[int] = None class AIModelOut(AIModelBase): model_id: int created_at: datetime updated_at: datetime class Config: from_attributes = True