site.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import os
  2. from dotenv import load_dotenv
  3. from urllib.parse import quote
  4. from pydantic_settings import BaseSettings
  5. from typing import Dict, Union, Optional
  6. load_dotenv()
  7. class SiteConfig:
  8. def __init__(self):
  9. self.load_config()
  10. def load_config(self):
  11. self.config = {
  12. "SITE_NAME": os.getenv("SITE_NAME", "DEMO"),
  13. "SITE_DESCRIPTION": os.getenv("SITE_DESCRIPTION", "ChatGPT"),
  14. "SITE_URL": os.getenv("SITE_URL", ""),
  15. "SITE_LOGO": os.getenv("SITE_LOGO", ""),
  16. "SITE_FAVICON": os.getenv("SITE_FAVICON"),
  17. 'ELASTICSEARCH_HOST': os.getenv("ELASTICSEARCH_HOST"),
  18. 'ELASTICSEARCH_USER': os.getenv("ELASTICSEARCH_USER"),
  19. 'ELASTICSEARCH_PWD': os.getenv("ELASTICSEARCH_PWD"),
  20. 'WORD_INDEX': os.getenv("WORD_INDEX"),
  21. 'TITLE_INDEX': os.getenv("TITLE_INDEX"),
  22. 'CHUNC_INDEX': os.getenv("CHUNC_INDEX"),
  23. 'DEEPSEEK_API_URL': os.getenv("DEEPSEEK_API_URL"),
  24. 'DEEPSEEK_API_KEY': os.getenv("DEEPSEEK_API_KEY"),
  25. 'CACHED_DATA_PATH': os.getenv("CACHED_DATA_PATH"),
  26. 'UPDATE_DATA_PATH': os.getenv("UPDATE_DATA_PATH"),
  27. 'FACTOR_DATA_PATH': os.getenv("FACTOR_DATA_PATH"),
  28. 'GRAPH_API_URL': os.getenv("GRAPH_API_URL"),
  29. 'EMBEDDING_MODEL': os.getenv("EMBEDDING_MODEL"),
  30. 'DOC_PATH': os.getenv("DOC_PATH"),
  31. 'DOC_STORAGE_PATH': os.getenv("DOC_STORAGE_PATH"),
  32. 'TRUNC_OUTPUT_PATH': os.getenv("TRUNC_OUTPUT_PATH"),
  33. 'DOC_ABSTRACT_OUTPUT_PATH': os.getenv("DOC_ABSTRACT_OUTPUT_PATH"),
  34. 'JIEBA_USER_DICT': os.getenv("JIEBA_USER_DICT"),
  35. 'JIEBA_STOP_DICT': os.getenv("JIEBA_STOP_DICT"),
  36. #'POSTGRESQL_HOST': os.getenv("POSTGRESQL_HOST","localhost"),
  37. #'POSTGRESQL_DATABASE': os.getenv("POSTGRESQL_DATABASE","kg"),
  38. #'POSTGRESQL_USER': os.getenv("POSTGRESQL_USER","dify"),
  39. #'POSTGRESQL_PASSWORD': os.getenv("POSTGRESQL_PASSWORD",quote("difyai123456")),
  40. 'POSTGRESQL_HOST': os.getenv("POSTGRESQL_HOST","173.18.12.203"),
  41. 'POSTGRESQL_DATABASE': os.getenv("POSTGRESQL_DATABASE","kg"),
  42. 'POSTGRESQL_USER': os.getenv("POSTGRESQL_USER","knowledge"),
  43. 'POSTGRESQL_PASSWORD': os.getenv("POSTGRESQL_PASSWORD",quote("qwer1234.")),
  44. 'JOB_PATH': os.getenv("JOB_PATH","/app/agent/jobs"),
  45. }
  46. def get_config(self, config_name, default=None):
  47. config_name = config_name.upper()
  48. value = os.getenv(config_name, None)
  49. if value:
  50. return value
  51. if config_name in self.config:
  52. return self.config[config_name]
  53. else:
  54. return default
  55. def check_config(self, config_list):
  56. for item in config_list:
  57. if not self.get_config(item):
  58. raise ValueError(f"Configuration '{item}' is not set.")
  59. class Settings(BaseSettings):
  60. # PostgreSQL配置
  61. DATABASE_URL: str = "postgresql://knowledge:qwer1234.@173.18.12.203:5432/kg"
  62. # MinIO配置
  63. MINIO_ENDPOINT: str = "173.18.12.199:9000"
  64. MINIO_ACCESS_KEY: str = "yvhNcezRwQvPuUylHqrg"
  65. MINIO_SECRET_KEY: str = "QQCejGeENpUIkGr4yfDaubPwWCoV29xHoXv6gHYU"
  66. MINIO_BUCKET_NAME: str = "knowledge-base"
  67. MINIO_SECURE: bool = False
  68. # 文件上传配置
  69. MAX_FILE_COUNT: int = 100
  70. ALLOWED_EXTENSIONS: Dict[str, Dict[str, Union[int, Optional[int]]]] = {
  71. "doc": {"max_size": 50, "max_pages": 1000},
  72. "txt": {"max_size": 10, "max_pages": None},
  73. "docx": {"max_size": 50, "max_pages": 1000},
  74. "pdf": {"max_size": 500, "max_pages": 3000},
  75. "ppt": {"max_size": 50, "max_pages": 1000},
  76. "pptx": {"max_size": 50, "max_pages": 1000},
  77. "md": {"max_size": 10, "max_pages": None}
  78. }
  79. settings = Settings()