| @@ -3,20 +3,6 @@ import os | |||
| import dotenv | |||
| 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', | |||
| } | |||
| @@ -53,37 +39,3 @@ class Config: | |||
| 'CONSOLE_CORS_ALLOW_ORIGINS', get_env('CONSOLE_WEB_URL')) | |||
| self.WEB_API_CORS_ALLOW_ORIGINS = get_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') | |||
| @@ -2,6 +2,8 @@ from typing import Optional | |||
| from pydantic import AliasChoices, BaseModel, Field, NonNegativeInt, PositiveInt | |||
| from configs.feature.hosted_service import HostedServiceConfig | |||
| class SecurityConfig(BaseModel): | |||
| """ | |||
| @@ -421,5 +423,8 @@ class FeatureConfig( | |||
| UpdateConfig, | |||
| WorkflowConfig, | |||
| WorkspaceConfig, | |||
| # hosted services config | |||
| HostedServiceConfig, | |||
| ): | |||
| pass | |||
| @@ -0,0 +1,208 @@ | |||
| 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 | |||