| import dotenv | import dotenv | ||||
| DEFAULTS = { | DEFAULTS = { | ||||
| 'HOSTED_OPENAI_QUOTA_LIMIT': 200, | |||||
| 'HOSTED_OPENAI_TRIAL_ENABLED': 'False', | |||||
| 'HOSTED_OPENAI_TRIAL_MODELS': 'gpt-3.5-turbo,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-16k,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-0125,text-davinci-003', | |||||
| 'HOSTED_OPENAI_PAID_ENABLED': 'False', | |||||
| 'HOSTED_OPENAI_PAID_MODELS': 'gpt-4,gpt-4-turbo-preview,gpt-4-turbo-2024-04-09,gpt-4-1106-preview,gpt-4-0125-preview,gpt-3.5-turbo,gpt-3.5-turbo-16k,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613,gpt-3.5-turbo-0125,gpt-3.5-turbo-instruct,text-davinci-003', | |||||
| 'HOSTED_AZURE_OPENAI_ENABLED': 'False', | |||||
| 'HOSTED_AZURE_OPENAI_QUOTA_LIMIT': 200, | |||||
| 'HOSTED_ANTHROPIC_QUOTA_LIMIT': 600000, | |||||
| 'HOSTED_ANTHROPIC_TRIAL_ENABLED': 'False', | |||||
| 'HOSTED_ANTHROPIC_PAID_ENABLED': 'False', | |||||
| 'HOSTED_MODERATION_ENABLED': 'False', | |||||
| 'HOSTED_MODERATION_PROVIDERS': '', | |||||
| 'HOSTED_FETCH_APP_TEMPLATES_MODE': 'remote', | |||||
| 'HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN': 'https://tmpl.dify.ai', | |||||
| } | } | ||||
| 'CONSOLE_CORS_ALLOW_ORIGINS', get_env('CONSOLE_WEB_URL')) | 'CONSOLE_CORS_ALLOW_ORIGINS', get_env('CONSOLE_WEB_URL')) | ||||
| self.WEB_API_CORS_ALLOW_ORIGINS = get_cors_allow_origins( | self.WEB_API_CORS_ALLOW_ORIGINS = get_cors_allow_origins( | ||||
| 'WEB_API_CORS_ALLOW_ORIGINS', '*') | 'WEB_API_CORS_ALLOW_ORIGINS', '*') | ||||
| # ------------------------ | |||||
| # Platform Configurations. | |||||
| # ------------------------ | |||||
| self.HOSTED_OPENAI_API_KEY = get_env('HOSTED_OPENAI_API_KEY') | |||||
| self.HOSTED_OPENAI_API_BASE = get_env('HOSTED_OPENAI_API_BASE') | |||||
| self.HOSTED_OPENAI_API_ORGANIZATION = get_env('HOSTED_OPENAI_API_ORGANIZATION') | |||||
| self.HOSTED_OPENAI_TRIAL_ENABLED = get_bool_env('HOSTED_OPENAI_TRIAL_ENABLED') | |||||
| self.HOSTED_OPENAI_TRIAL_MODELS = get_env('HOSTED_OPENAI_TRIAL_MODELS') | |||||
| self.HOSTED_OPENAI_QUOTA_LIMIT = int(get_env('HOSTED_OPENAI_QUOTA_LIMIT')) | |||||
| self.HOSTED_OPENAI_PAID_ENABLED = get_bool_env('HOSTED_OPENAI_PAID_ENABLED') | |||||
| self.HOSTED_OPENAI_PAID_MODELS = get_env('HOSTED_OPENAI_PAID_MODELS') | |||||
| self.HOSTED_AZURE_OPENAI_ENABLED = get_bool_env('HOSTED_AZURE_OPENAI_ENABLED') | |||||
| self.HOSTED_AZURE_OPENAI_API_KEY = get_env('HOSTED_AZURE_OPENAI_API_KEY') | |||||
| self.HOSTED_AZURE_OPENAI_API_BASE = get_env('HOSTED_AZURE_OPENAI_API_BASE') | |||||
| self.HOSTED_AZURE_OPENAI_QUOTA_LIMIT = int(get_env('HOSTED_AZURE_OPENAI_QUOTA_LIMIT')) | |||||
| self.HOSTED_ANTHROPIC_API_BASE = get_env('HOSTED_ANTHROPIC_API_BASE') | |||||
| self.HOSTED_ANTHROPIC_API_KEY = get_env('HOSTED_ANTHROPIC_API_KEY') | |||||
| self.HOSTED_ANTHROPIC_TRIAL_ENABLED = get_bool_env('HOSTED_ANTHROPIC_TRIAL_ENABLED') | |||||
| self.HOSTED_ANTHROPIC_QUOTA_LIMIT = int(get_env('HOSTED_ANTHROPIC_QUOTA_LIMIT')) | |||||
| self.HOSTED_ANTHROPIC_PAID_ENABLED = get_bool_env('HOSTED_ANTHROPIC_PAID_ENABLED') | |||||
| self.HOSTED_MINIMAX_ENABLED = get_bool_env('HOSTED_MINIMAX_ENABLED') | |||||
| self.HOSTED_SPARK_ENABLED = get_bool_env('HOSTED_SPARK_ENABLED') | |||||
| self.HOSTED_ZHIPUAI_ENABLED = get_bool_env('HOSTED_ZHIPUAI_ENABLED') | |||||
| self.HOSTED_MODERATION_ENABLED = get_bool_env('HOSTED_MODERATION_ENABLED') | |||||
| self.HOSTED_MODERATION_PROVIDERS = get_env('HOSTED_MODERATION_PROVIDERS') | |||||
| # fetch app templates mode, remote, builtin, db(only for dify SaaS), default: remote | |||||
| self.HOSTED_FETCH_APP_TEMPLATES_MODE = get_env('HOSTED_FETCH_APP_TEMPLATES_MODE') | |||||
| self.HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN = get_env('HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN') |
| from pydantic import AliasChoices, BaseModel, Field, NonNegativeInt, PositiveInt | from pydantic import AliasChoices, BaseModel, Field, NonNegativeInt, PositiveInt | ||||
| from configs.feature.hosted_service import HostedServiceConfig | |||||
| class SecurityConfig(BaseModel): | class SecurityConfig(BaseModel): | ||||
| """ | """ | ||||
| UpdateConfig, | UpdateConfig, | ||||
| WorkflowConfig, | WorkflowConfig, | ||||
| WorkspaceConfig, | WorkspaceConfig, | ||||
| # hosted services config | |||||
| HostedServiceConfig, | |||||
| ): | ): | ||||
| pass | pass |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, NonNegativeInt | |||||
| class HostedOpenAiConfig(BaseModel): | |||||
| """ | |||||
| Hosted OpenAI service config | |||||
| """ | |||||
| HOSTED_OPENAI_API_KEY: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_OPENAI_API_BASE: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_OPENAI_API_ORGANIZATION: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_OPENAI_TRIAL_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| HOSTED_OPENAI_TRIAL_MODELS: str = Field( | |||||
| description='', | |||||
| default='gpt-3.5-turbo,' | |||||
| 'gpt-3.5-turbo-1106,' | |||||
| 'gpt-3.5-turbo-instruct,' | |||||
| 'gpt-3.5-turbo-16k,' | |||||
| 'gpt-3.5-turbo-16k-0613,' | |||||
| 'gpt-3.5-turbo-0613,' | |||||
| 'gpt-3.5-turbo-0125,' | |||||
| 'text-davinci-003', | |||||
| ) | |||||
| HOSTED_OPENAI_QUOTA_LIMIT: NonNegativeInt = Field( | |||||
| description='', | |||||
| default=200, | |||||
| ) | |||||
| HOSTED_OPENAI_PAID_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| HOSTED_OPENAI_PAID_MODELS: str = Field( | |||||
| description='', | |||||
| default='gpt-4,' | |||||
| 'gpt-4-turbo-preview,' | |||||
| 'gpt-4-turbo-2024-04-09,' | |||||
| 'gpt-4-1106-preview,' | |||||
| 'gpt-4-0125-preview,' | |||||
| 'gpt-3.5-turbo,' | |||||
| 'gpt-3.5-turbo-16k,' | |||||
| 'gpt-3.5-turbo-16k-0613,' | |||||
| 'gpt-3.5-turbo-1106,' | |||||
| 'gpt-3.5-turbo-0613,' | |||||
| 'gpt-3.5-turbo-0125,' | |||||
| 'gpt-3.5-turbo-instruct,' | |||||
| 'text-davinci-003', | |||||
| ) | |||||
| class HostedAzureOpenAiConfig(BaseModel): | |||||
| """ | |||||
| Hosted OpenAI service config | |||||
| """ | |||||
| HOSTED_AZURE_OPENAI_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| HOSTED_OPENAI_API_KEY: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_AZURE_OPENAI_API_BASE: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_AZURE_OPENAI_QUOTA_LIMIT: NonNegativeInt = Field( | |||||
| description='', | |||||
| default=200, | |||||
| ) | |||||
| class HostedAnthropicConfig(BaseModel): | |||||
| """ | |||||
| Hosted Azure OpenAI service config | |||||
| """ | |||||
| HOSTED_ANTHROPIC_API_BASE: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_ANTHROPIC_API_KEY: Optional[str] = Field( | |||||
| description='', | |||||
| default=None, | |||||
| ) | |||||
| HOSTED_ANTHROPIC_TRIAL_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| HOSTED_ANTHROPIC_QUOTA_LIMIT: NonNegativeInt = Field( | |||||
| description='', | |||||
| default=600000, | |||||
| ) | |||||
| HOSTED_ANTHROPIC_PAID_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| class HostedMinmaxConfig(BaseModel): | |||||
| """ | |||||
| Hosted Minmax service config | |||||
| """ | |||||
| HOSTED_MINIMAX_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| class HostedSparkConfig(BaseModel): | |||||
| """ | |||||
| Hosted Spark service config | |||||
| """ | |||||
| HOSTED_SPARK_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| class HostedZhipuAIConfig(BaseModel): | |||||
| """ | |||||
| Hosted Minmax service config | |||||
| """ | |||||
| HOSTED_ZHIPUAI_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| class HostedModerationConfig(BaseModel): | |||||
| """ | |||||
| Hosted Moderation service config | |||||
| """ | |||||
| HOSTED_MODERATION_ENABLED: bool = Field( | |||||
| description='', | |||||
| default=False, | |||||
| ) | |||||
| HOSTED_MODERATION_PROVIDERS: str = Field( | |||||
| description='', | |||||
| default='', | |||||
| ) | |||||
| class HostedFetchAppTemplateConfig(BaseModel): | |||||
| """ | |||||
| Hosted Moderation service config | |||||
| """ | |||||
| HOSTED_FETCH_APP_TEMPLATES_MODE: str = Field( | |||||
| description='the mode for fetching app templates,' | |||||
| ' default to remote,' | |||||
| ' available values: remote, db, builtin', | |||||
| default='remote', | |||||
| ) | |||||
| HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN: str = Field( | |||||
| description='the domain for fetching remote app templates', | |||||
| default='https://tmpl.dify.ai', | |||||
| ) | |||||
| class HostedServiceConfig( | |||||
| # place the configs in alphabet order | |||||
| HostedAnthropicConfig, | |||||
| HostedAzureOpenAiConfig, | |||||
| HostedFetchAppTemplateConfig, | |||||
| HostedMinmaxConfig, | |||||
| HostedOpenAiConfig, | |||||
| HostedSparkConfig, | |||||
| HostedZhipuAIConfig, | |||||
| # moderation | |||||
| HostedModerationConfig, | |||||
| ): | |||||
| pass |