Spaces:
Sleeping
Sleeping
| from typing import List, Optional | |
| from datetime import datetime | |
| from pydantic import BaseModel, Field | |
| class BaseUserLLMConfigDTO(BaseModel): | |
| """Base User LLM Configuration DTO with separate chat and embedding settings""" | |
| provider_type: str = 'openai' | |
| key: Optional[str] = None | |
| # Chat configuration | |
| chat_endpoint: Optional[str] = None | |
| chat_api_key: Optional[str] = None | |
| chat_model_name: Optional[str] = None | |
| # Embedding configuration | |
| embedding_endpoint: Optional[str] = None | |
| embedding_api_key: Optional[str] = None | |
| embedding_model_name: Optional[str] = None | |
| # Thinking configuration | |
| thinking_model_name: Optional[str] = None | |
| thinking_endpoint: Optional[str] = None | |
| thinking_api_key: Optional[str] = None | |
| def dict(self, *args, **kwargs): | |
| result = super().dict(*args, **kwargs) | |
| return result | |
| class CreateUserLLMConfigDTO(BaseUserLLMConfigDTO): | |
| """Create User LLM Configuration DTO""" | |
| pass | |
| class UpdateUserLLMConfigDTO(BaseModel): | |
| """Update User LLM Configuration DTO""" | |
| provider_type: Optional[str] = None | |
| key: Optional[str] = None | |
| # Chat configuration | |
| chat_endpoint: Optional[str] = None | |
| chat_api_key: Optional[str] = None | |
| chat_model_name: Optional[str] = None | |
| # Embedding configuration | |
| embedding_endpoint: Optional[str] = None | |
| embedding_api_key: Optional[str] = None | |
| embedding_model_name: Optional[str] = None | |
| # Thinking configuration | |
| thinking_model_name: Optional[str] = None | |
| thinking_endpoint: Optional[str] = None | |
| thinking_api_key: Optional[str] = None | |
| def dict(self, *args, **kwargs): | |
| result = super().dict(*args, **kwargs) | |
| return result | |
| class UserLLMConfigDTO(BaseUserLLMConfigDTO): | |
| """User LLM Configuration DTO""" | |
| id: Optional[int] = None | |
| created_at: Optional[datetime] = None | |
| updated_at: Optional[datetime] = None | |
| def from_model(cls, model): | |
| """Create DTO from model""" | |
| if not model: | |
| return None | |
| return cls( | |
| id=model.id, | |
| provider_type=model.provider_type, | |
| key=model.key, | |
| chat_endpoint=model.chat_endpoint, | |
| chat_api_key=model.chat_api_key, | |
| chat_model_name=model.chat_model_name, | |
| embedding_endpoint=model.embedding_endpoint, | |
| embedding_api_key=model.embedding_api_key, | |
| embedding_model_name=model.embedding_model_name, | |
| thinking_model_name=model.thinking_model_name, | |
| thinking_endpoint=model.thinking_endpoint, | |
| thinking_api_key=model.thinking_api_key, | |
| created_at=model.created_at, | |
| updated_at=model.updated_at | |
| ) | |
| class UserLLMConfigListDTO(BaseModel): | |
| """User LLM Configuration List DTO""" | |
| items: List[UserLLMConfigDTO] | |