app_config.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from pydantic import Field, computed_field
  2. from pydantic_settings import SettingsConfigDict
  3. from configs.deploy import DeploymentConfig
  4. from configs.enterprise import EnterpriseFeatureConfig
  5. from configs.extra import ExtraServiceConfig
  6. from configs.feature import FeatureConfig
  7. from configs.middleware import MiddlewareConfig
  8. from configs.packaging import PackagingInfo
  9. class DifyConfig(
  10. # Packaging info
  11. PackagingInfo,
  12. # Deployment configs
  13. DeploymentConfig,
  14. # Feature configs
  15. FeatureConfig,
  16. # Middleware configs
  17. MiddlewareConfig,
  18. # Extra service configs
  19. ExtraServiceConfig,
  20. # Enterprise feature configs
  21. # **Before using, please contact business@dify.ai by email to inquire about licensing matters.**
  22. EnterpriseFeatureConfig,
  23. ):
  24. DEBUG: bool = Field(default=False, description='whether to enable debug mode.')
  25. model_config = SettingsConfigDict(
  26. # read from dotenv format config file
  27. env_file='.env',
  28. env_file_encoding='utf-8',
  29. frozen=True,
  30. # ignore extra attributes
  31. extra='ignore',
  32. )
  33. CODE_MAX_NUMBER: int = 9223372036854775807
  34. CODE_MIN_NUMBER: int = -9223372036854775808
  35. CODE_MAX_DEPTH: int = 5
  36. CODE_MAX_STRING_LENGTH: int = 80000
  37. CODE_MAX_STRING_ARRAY_LENGTH: int = 30
  38. CODE_MAX_OBJECT_ARRAY_LENGTH: int = 30
  39. CODE_MAX_NUMBER_ARRAY_LENGTH: int = 1000
  40. HTTP_REQUEST_MAX_CONNECT_TIMEOUT: int = 300
  41. HTTP_REQUEST_MAX_READ_TIMEOUT: int = 600
  42. HTTP_REQUEST_MAX_WRITE_TIMEOUT: int = 600
  43. HTTP_REQUEST_NODE_MAX_BINARY_SIZE: int = 1024 * 1024 * 10
  44. @computed_field
  45. def HTTP_REQUEST_NODE_READABLE_MAX_BINARY_SIZE(self) -> str:
  46. return f'{self.HTTP_REQUEST_NODE_MAX_BINARY_SIZE / 1024 / 1024:.2f}MB'
  47. HTTP_REQUEST_NODE_MAX_TEXT_SIZE: int = 1024 * 1024
  48. @computed_field
  49. def HTTP_REQUEST_NODE_READABLE_MAX_TEXT_SIZE(self) -> str:
  50. return f'{self.HTTP_REQUEST_NODE_MAX_TEXT_SIZE / 1024 / 1024:.2f}MB'
  51. SSRF_PROXY_HTTP_URL: str | None = None
  52. SSRF_PROXY_HTTPS_URL: str | None = None
  53. MODERATION_BUFFER_SIZE: int = Field(default=300, description='The buffer size for moderation.')
  54. MAX_VARIABLE_SIZE: int = Field(default=5 * 1024, description='The maximum size of a variable. default is 5KB.')