app_config.py 2.2 KB

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