settings.py 5.0 KB

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