| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | from enum import Enumfrom typing import Optionalfrom pydantic import BaseModel, ConfigDictfrom core.model_runtime.entities.model_entities import ModelTypefrom models.provider import ProviderQuotaTypeclass QuotaUnit(Enum):    TIMES = 'times'    TOKENS = 'tokens'    CREDITS = 'credits'class SystemConfigurationStatus(Enum):    """    Enum class for system configuration status.    """    ACTIVE = 'active'    QUOTA_EXCEEDED = 'quota-exceeded'    UNSUPPORTED = 'unsupported'class RestrictModel(BaseModel):    model: str    base_model_name: Optional[str] = None    model_type: ModelType    # pydantic configs    model_config = ConfigDict(protected_namespaces=())class QuotaConfiguration(BaseModel):    """    Model class for provider quota configuration.    """    quota_type: ProviderQuotaType    quota_unit: QuotaUnit    quota_limit: int    quota_used: int    is_valid: bool    restrict_models: list[RestrictModel] = []class SystemConfiguration(BaseModel):    """    Model class for provider system configuration.    """    enabled: bool    current_quota_type: Optional[ProviderQuotaType] = None    quota_configurations: list[QuotaConfiguration] = []    credentials: Optional[dict] = Noneclass CustomProviderConfiguration(BaseModel):    """    Model class for provider custom configuration.    """    credentials: dictclass CustomModelConfiguration(BaseModel):    """    Model class for provider custom model configuration.    """    model: str    model_type: ModelType    credentials: dict    # pydantic configs    model_config = ConfigDict(protected_namespaces=())class CustomConfiguration(BaseModel):    """    Model class for provider custom configuration.    """    provider: Optional[CustomProviderConfiguration] = None    models: list[CustomModelConfiguration] = []class ModelLoadBalancingConfiguration(BaseModel):    """    Class for model load balancing configuration.    """    id: str    name: str    credentials: dictclass ModelSettings(BaseModel):    """    Model class for model settings.    """    model: str    model_type: ModelType    enabled: bool = True    load_balancing_configs: list[ModelLoadBalancingConfiguration] = []    # pydantic configs    model_config = ConfigDict(protected_namespaces=())
 |