settings.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. """配置管理模块,使用 pydantic-settings 从.env文件加载环境变量"""
  2. from pydantic_settings import BaseSettings, SettingsConfigDict
  3. from pydantic import Field
  4. from typing import List
  5. class AppSettings(BaseSettings):
  6. """应用配置类"""
  7. log_level: str = Field(default="INFO", alias="LOG_LEVEL")
  8. model_config = SettingsConfigDict(
  9. env_file=".env",
  10. env_file_encoding="utf-8",
  11. case_sensitive=False,
  12. extra="ignore"
  13. )
  14. class ModelSettings(BaseSettings):
  15. """模型配置类"""
  16. model_provider: str = Field(default="openai", alias="MODEL_PROVIDER")
  17. model_name: str = Field(default="Qwen/Qwen3-VL-8B-Instruct", alias="MODEL_NAME")
  18. chat_model_name: str = Field(default="deepseek-ai/DeepSeek-V3.2", alias="CHAT_MODEL_NAME")
  19. embedding_model_name: str = Field(default="Qwen/Qwen3-Embedding-0.6B", alias="EMBEDDING_MODEL_NAME")
  20. base_url: str = Field(default="https://api.openai.com/v1", alias="BASE_URL")
  21. api_key: str = Field(default="", alias="API_KEY")
  22. rank_model_name: str = Field(default="Qwen/Qwen3-Reranker-0.6B", alias="RANK_MODEL_NAME")
  23. multimodal_embedding_model_name: str = Field(default="qwen2.5-vl-embedding", alias="MULTIMODAL_EMBEDDING_MODEL_NAME")
  24. dashscope_api_key: str = Field(default="", alias="DASHSCOPE_API_KEY")
  25. model_config = SettingsConfigDict(
  26. env_file=".env",
  27. env_file_encoding="utf-8",
  28. case_sensitive=False,
  29. extra="ignore"
  30. )
  31. class RagflowSettings(BaseSettings):
  32. """RAGFLOW配置类"""
  33. ragflow_api_url: str = Field(default="http://192.168.16.134/", alias="RAGFLOW_API_URL")
  34. ragflow_api_key: str = Field(default="", alias="RAGFLOW_API_KEY")
  35. dataset_id: str = Field(default="", alias="DATASET_ID")
  36. ragflow_user_name: str = Field(default="", alias="RAGFLOW_USER_NAME")
  37. ragflow_passwd: str = Field(default="", alias="RAGFLOW_PASSWD")
  38. model_config = SettingsConfigDict(
  39. env_file=".env",
  40. env_file_encoding="utf-8",
  41. case_sensitive=False,
  42. extra="ignore"
  43. )
  44. class MinioSettings(BaseSettings):
  45. """MinIO配置类"""
  46. minio_endpoint: str = Field(default="http://localhost:9000", alias="MINIO_ENDPOINT")
  47. minio_access_key: str = Field(default="minioadmin", alias="MINIO_ACCESS_KEY")
  48. minio_secret_key: str = Field(default="minioadmin", alias="MINIO_SECRET_KEY")
  49. minio_bucket_name: str = Field(default="ragflow", alias="MINIO_BUCKET_NAME")
  50. minio_secure: bool = Field(default=False, alias="MINIO_SECURE")
  51. model_config = SettingsConfigDict(
  52. env_file=".env",
  53. env_file_encoding="utf-8",
  54. case_sensitive=False,
  55. extra="ignore"
  56. )
  57. class VectorDBSettings(BaseSettings):
  58. """向量数据库配置类"""
  59. vector_db_type: str = Field(default="es", alias="VECTOR_DB_TYPE")
  60. infinity_host: str = Field(default="192.168.16.134", alias="INFINITY_HOST")
  61. infinity_port: int = Field(default=23820, alias="INFINITY_PORT")
  62. infinity_sdk_port: int = Field(default=23817, alias="INFINITY_SDK_PORT")
  63. infinity_user: str = Field(default="admin", alias="INFINITY_USER")
  64. infinity_password: str = Field(default="admin", alias="INFINITY_PASSWORD")
  65. infinity_database: str = Field(default="test", alias="INFINITY_DATABASE")
  66. infinity_table_name: str = Field(default="test", alias="INFINITY_TABLE_NAME")
  67. infinity_page_dataset_id: str = Field(default="", alias="INFINITY_PAGE_DATASET_ID")
  68. infinity_page_table_name: str = Field(default="", alias="INFINITY_PAGE_TABLE_NAME")
  69. infinity_ragflow_database: str = Field(default="default_db", alias="INFINITY_RAGFLOW_DATABASE")
  70. infinity_dataset_prefix: str = Field(default="ragbook_", alias="INFINITY_DATASET_PREFIX")
  71. model_config = SettingsConfigDict(
  72. env_file=".env",
  73. env_file_encoding="utf-8",
  74. case_sensitive=False,
  75. extra="ignore"
  76. )
  77. class MysqlSettings(BaseSettings):
  78. """MySQL配置类"""
  79. mysql_host: str = Field(default="localhost", alias="MYSQL_HOST")
  80. mysql_port: int = Field(default=3306, alias="MYSQL_PORT")
  81. mysql_user: str = Field(default="root", alias="MYSQL_USER")
  82. mysql_password: str = Field(default="", alias="MYSQL_PASSWORD")
  83. mysql_database: str = Field(default="", alias="MYSQL_DATABASE")
  84. mysql_charset: str = Field(default="utf8mb4", alias="MYSQL_CHARSET")
  85. mysql_pool_size: int = Field(default=10, alias="MYSQL_POOL_SIZE")
  86. model_config = SettingsConfigDict(
  87. env_file=".env",
  88. env_file_encoding="utf-8",
  89. case_sensitive=False,
  90. extra="ignore"
  91. )
  92. class TagSearchSettings(BaseSettings):
  93. """标签搜索配置类"""
  94. tag_db_name: str = Field(default="tag_db", alias="TAG_DB_NAME")
  95. tag_table_name: str = Field(default="tag_table", alias="TAG_TABLE_NAME")
  96. tag_document_id: str = Field(default="", alias="TAG_DOCUMENT_ID")
  97. tag_dataset_id: str = Field(default="", alias="TAG_DATASET_ID")
  98. model_config = SettingsConfigDict(
  99. env_file=".env",
  100. env_file_encoding="utf-8",
  101. case_sensitive=False,
  102. extra="ignore"
  103. )
  104. class EsSettings(BaseSettings):
  105. """Elasticsearch配置类"""
  106. es_nodes: List[str] = Field(default=["http://localhost:9200"], alias="ES_NODES")
  107. es_username: str = Field(default="", alias="ES_USERNAME")
  108. es_password: str = Field(default="", alias="ES_PASSWORD")
  109. es_index_name: str = Field(default="rag_documents", alias="ES_INDEX_NAME")
  110. es_connections_per_node: int = Field(default=20, alias="ES_CONNECTIONS_PER_NODE")
  111. es_max_retries: int = Field(default=3, alias="ES_MAX_RETRIES")
  112. es_retry_on_timeout: bool = Field(default=True, alias="ES_RETRY_ON_TIMEOUT")
  113. es_timeout: int = Field(default=30, alias="ES_TIMEOUT")
  114. es_verify_certs: bool = Field(default=False, alias="ES_VERIFY_CERTS")
  115. model_config = SettingsConfigDict(
  116. env_file=".env",
  117. env_file_encoding="utf-8",
  118. case_sensitive=False,
  119. extra="ignore"
  120. )
  121. # 创建配置实例
  122. model_settings = ModelSettings()
  123. ragflow_settings = RagflowSettings()
  124. app_settings = AppSettings()
  125. minio_settings = MinioSettings()
  126. vector_db_settings = VectorDBSettings()
  127. mysql_settings = MysqlSettings()
  128. tag_search_settings = TagSearchSettings()
  129. es_settings = EsSettings()