Spaces:
Build error
Build error
from enum import Enum | |
from typing import Optional | |
from pydantic import BaseModel, ConfigDict | |
from configs import dify_config | |
from core.entities.model_entities import ModelWithProviderEntity, ProviderModelWithStatusEntity | |
from core.entities.provider_entities import QuotaConfiguration | |
from core.model_runtime.entities.common_entities import I18nObject | |
from core.model_runtime.entities.model_entities import ModelType | |
from core.model_runtime.entities.provider_entities import ( | |
ConfigurateMethod, | |
ModelCredentialSchema, | |
ProviderCredentialSchema, | |
ProviderHelpEntity, | |
SimpleProviderEntity, | |
) | |
from models.provider import ProviderQuotaType, ProviderType | |
class CustomConfigurationStatus(Enum): | |
""" | |
Enum class for custom configuration status. | |
""" | |
ACTIVE = "active" | |
NO_CONFIGURE = "no-configure" | |
class CustomConfigurationResponse(BaseModel): | |
""" | |
Model class for provider custom configuration response. | |
""" | |
status: CustomConfigurationStatus | |
class SystemConfigurationResponse(BaseModel): | |
""" | |
Model class for provider system configuration response. | |
""" | |
enabled: bool | |
current_quota_type: Optional[ProviderQuotaType] = None | |
quota_configurations: list[QuotaConfiguration] = [] | |
class ProviderResponse(BaseModel): | |
""" | |
Model class for provider response. | |
""" | |
provider: str | |
label: I18nObject | |
description: Optional[I18nObject] = None | |
icon_small: Optional[I18nObject] = None | |
icon_large: Optional[I18nObject] = None | |
background: Optional[str] = None | |
help: Optional[ProviderHelpEntity] = None | |
supported_model_types: list[ModelType] | |
configurate_methods: list[ConfigurateMethod] | |
provider_credential_schema: Optional[ProviderCredentialSchema] = None | |
model_credential_schema: Optional[ModelCredentialSchema] = None | |
preferred_provider_type: ProviderType | |
custom_configuration: CustomConfigurationResponse | |
system_configuration: SystemConfigurationResponse | |
# pydantic configs | |
model_config = ConfigDict(protected_namespaces=()) | |
def __init__(self, **data) -> None: | |
super().__init__(**data) | |
url_prefix = dify_config.CONSOLE_API_URL + f"/console/api/workspaces/current/model-providers/{self.provider}" | |
if self.icon_small is not None: | |
self.icon_small = I18nObject( | |
en_US=f"{url_prefix}/icon_small/en_US", zh_Hans=f"{url_prefix}/icon_small/zh_Hans" | |
) | |
if self.icon_large is not None: | |
self.icon_large = I18nObject( | |
en_US=f"{url_prefix}/icon_large/en_US", zh_Hans=f"{url_prefix}/icon_large/zh_Hans" | |
) | |
class ProviderWithModelsResponse(BaseModel): | |
""" | |
Model class for provider with models response. | |
""" | |
provider: str | |
label: I18nObject | |
icon_small: Optional[I18nObject] = None | |
icon_large: Optional[I18nObject] = None | |
status: CustomConfigurationStatus | |
models: list[ProviderModelWithStatusEntity] | |
def __init__(self, **data) -> None: | |
super().__init__(**data) | |
url_prefix = dify_config.CONSOLE_API_URL + f"/console/api/workspaces/current/model-providers/{self.provider}" | |
if self.icon_small is not None: | |
self.icon_small = I18nObject( | |
en_US=f"{url_prefix}/icon_small/en_US", zh_Hans=f"{url_prefix}/icon_small/zh_Hans" | |
) | |
if self.icon_large is not None: | |
self.icon_large = I18nObject( | |
en_US=f"{url_prefix}/icon_large/en_US", zh_Hans=f"{url_prefix}/icon_large/zh_Hans" | |
) | |
class SimpleProviderEntityResponse(SimpleProviderEntity): | |
""" | |
Simple provider entity response. | |
""" | |
def __init__(self, **data) -> None: | |
super().__init__(**data) | |
url_prefix = dify_config.CONSOLE_API_URL + f"/console/api/workspaces/current/model-providers/{self.provider}" | |
if self.icon_small is not None: | |
self.icon_small = I18nObject( | |
en_US=f"{url_prefix}/icon_small/en_US", zh_Hans=f"{url_prefix}/icon_small/zh_Hans" | |
) | |
if self.icon_large is not None: | |
self.icon_large = I18nObject( | |
en_US=f"{url_prefix}/icon_large/en_US", zh_Hans=f"{url_prefix}/icon_large/zh_Hans" | |
) | |
class DefaultModelResponse(BaseModel): | |
""" | |
Default model entity. | |
""" | |
model: str | |
model_type: ModelType | |
provider: SimpleProviderEntityResponse | |
# pydantic configs | |
model_config = ConfigDict(protected_namespaces=()) | |
class ModelWithProviderEntityResponse(ModelWithProviderEntity): | |
""" | |
Model with provider entity. | |
""" | |
provider: SimpleProviderEntityResponse | |
def __init__(self, model: ModelWithProviderEntity) -> None: | |
super().__init__(**model.model_dump()) | |