app_config.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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_PRECISION: int = 20
  37. CODE_MAX_STRING_LENGTH: int = 80000
  38. CODE_MAX_STRING_ARRAY_LENGTH: int = 30
  39. CODE_MAX_OBJECT_ARRAY_LENGTH: int = 30
  40. CODE_MAX_NUMBER_ARRAY_LENGTH: int = 1000
  41. HTTP_REQUEST_MAX_CONNECT_TIMEOUT: int = 300
  42. HTTP_REQUEST_MAX_READ_TIMEOUT: int = 600
  43. HTTP_REQUEST_MAX_WRITE_TIMEOUT: int = 600
  44. HTTP_REQUEST_NODE_MAX_BINARY_SIZE: int = 1024 * 1024 * 10
  45. @computed_field
  46. def HTTP_REQUEST_NODE_READABLE_MAX_BINARY_SIZE(self) -> str:
  47. return f'{self.HTTP_REQUEST_NODE_MAX_BINARY_SIZE / 1024 / 1024:.2f}MB'
  48. HTTP_REQUEST_NODE_MAX_TEXT_SIZE: int = 1024 * 1024
  49. @computed_field
  50. def HTTP_REQUEST_NODE_READABLE_MAX_TEXT_SIZE(self) -> str:
  51. return f'{self.HTTP_REQUEST_NODE_MAX_TEXT_SIZE / 1024 / 1024:.2f}MB'
  52. SSRF_PROXY_HTTP_URL: str | None = None
  53. SSRF_PROXY_HTTPS_URL: str | None = None
  54. MODERATION_BUFFER_SIZE: int = Field(default=300, description='The buffer size for moderation.')
  55. MAX_VARIABLE_SIZE: int = Field(default=5 * 1024, description='The maximum size of a variable. default is 5KB.')