config.py 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import os
  2. import dotenv
  3. DEFAULTS = {
  4. 'HOSTED_OPENAI_QUOTA_LIMIT': 200,
  5. 'HOSTED_OPENAI_TRIAL_ENABLED': 'False',
  6. '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',
  7. 'HOSTED_OPENAI_PAID_ENABLED': 'False',
  8. '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',
  9. 'HOSTED_AZURE_OPENAI_ENABLED': 'False',
  10. 'HOSTED_AZURE_OPENAI_QUOTA_LIMIT': 200,
  11. 'HOSTED_ANTHROPIC_QUOTA_LIMIT': 600000,
  12. 'HOSTED_ANTHROPIC_TRIAL_ENABLED': 'False',
  13. 'HOSTED_ANTHROPIC_PAID_ENABLED': 'False',
  14. 'HOSTED_MODERATION_ENABLED': 'False',
  15. 'HOSTED_MODERATION_PROVIDERS': '',
  16. 'HOSTED_FETCH_APP_TEMPLATES_MODE': 'remote',
  17. 'HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN': 'https://tmpl.dify.ai',
  18. }
  19. def get_env(key):
  20. return os.environ.get(key, DEFAULTS.get(key))
  21. def get_bool_env(key):
  22. value = get_env(key)
  23. return value.lower() == 'true' if value is not None else False
  24. def get_cors_allow_origins(env, default):
  25. cors_allow_origins = []
  26. if get_env(env):
  27. for origin in get_env(env).split(','):
  28. cors_allow_origins.append(origin)
  29. else:
  30. cors_allow_origins = [default]
  31. return cors_allow_origins
  32. class Config:
  33. """Application configuration class."""
  34. def __init__(self):
  35. dotenv.load_dotenv()
  36. self.TESTING = False
  37. # cors settings
  38. self.CONSOLE_CORS_ALLOW_ORIGINS = get_cors_allow_origins(
  39. 'CONSOLE_CORS_ALLOW_ORIGINS', get_env('CONSOLE_WEB_URL'))
  40. self.WEB_API_CORS_ALLOW_ORIGINS = get_cors_allow_origins(
  41. 'WEB_API_CORS_ALLOW_ORIGINS', '*')
  42. # ------------------------
  43. # Platform Configurations.
  44. # ------------------------
  45. self.HOSTED_OPENAI_API_KEY = get_env('HOSTED_OPENAI_API_KEY')
  46. self.HOSTED_OPENAI_API_BASE = get_env('HOSTED_OPENAI_API_BASE')
  47. self.HOSTED_OPENAI_API_ORGANIZATION = get_env('HOSTED_OPENAI_API_ORGANIZATION')
  48. self.HOSTED_OPENAI_TRIAL_ENABLED = get_bool_env('HOSTED_OPENAI_TRIAL_ENABLED')
  49. self.HOSTED_OPENAI_TRIAL_MODELS = get_env('HOSTED_OPENAI_TRIAL_MODELS')
  50. self.HOSTED_OPENAI_QUOTA_LIMIT = int(get_env('HOSTED_OPENAI_QUOTA_LIMIT'))
  51. self.HOSTED_OPENAI_PAID_ENABLED = get_bool_env('HOSTED_OPENAI_PAID_ENABLED')
  52. self.HOSTED_OPENAI_PAID_MODELS = get_env('HOSTED_OPENAI_PAID_MODELS')
  53. self.HOSTED_AZURE_OPENAI_ENABLED = get_bool_env('HOSTED_AZURE_OPENAI_ENABLED')
  54. self.HOSTED_AZURE_OPENAI_API_KEY = get_env('HOSTED_AZURE_OPENAI_API_KEY')
  55. self.HOSTED_AZURE_OPENAI_API_BASE = get_env('HOSTED_AZURE_OPENAI_API_BASE')
  56. self.HOSTED_AZURE_OPENAI_QUOTA_LIMIT = int(get_env('HOSTED_AZURE_OPENAI_QUOTA_LIMIT'))
  57. self.HOSTED_ANTHROPIC_API_BASE = get_env('HOSTED_ANTHROPIC_API_BASE')
  58. self.HOSTED_ANTHROPIC_API_KEY = get_env('HOSTED_ANTHROPIC_API_KEY')
  59. self.HOSTED_ANTHROPIC_TRIAL_ENABLED = get_bool_env('HOSTED_ANTHROPIC_TRIAL_ENABLED')
  60. self.HOSTED_ANTHROPIC_QUOTA_LIMIT = int(get_env('HOSTED_ANTHROPIC_QUOTA_LIMIT'))
  61. self.HOSTED_ANTHROPIC_PAID_ENABLED = get_bool_env('HOSTED_ANTHROPIC_PAID_ENABLED')
  62. self.HOSTED_MINIMAX_ENABLED = get_bool_env('HOSTED_MINIMAX_ENABLED')
  63. self.HOSTED_SPARK_ENABLED = get_bool_env('HOSTED_SPARK_ENABLED')
  64. self.HOSTED_ZHIPUAI_ENABLED = get_bool_env('HOSTED_ZHIPUAI_ENABLED')
  65. self.HOSTED_MODERATION_ENABLED = get_bool_env('HOSTED_MODERATION_ENABLED')
  66. self.HOSTED_MODERATION_PROVIDERS = get_env('HOSTED_MODERATION_PROVIDERS')
  67. # fetch app templates mode, remote, builtin, db(only for dify SaaS), default: remote
  68. self.HOSTED_FETCH_APP_TEMPLATES_MODE = get_env('HOSTED_FETCH_APP_TEMPLATES_MODE')
  69. self.HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN = get_env('HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN')