settings.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. embedding_model_name: str = Field(default="Qwen/Qwen3-Embedding-0.6B", alias="EMBEDDING_MODEL_NAME")
  18. base_url: str = Field(default="https://api.openai.com/v1", alias="BASE_URL")
  19. api_key: str = Field(default="", alias="API_KEY")
  20. rank_model_name: str = Field(default="Qwen/Qwen3-Reranker-0.6B", alias="RANK_MODEL_NAME")
  21. multimodal_embedding_model_name: str = Field(default="qwen2.5-vl-embedding", alias="MULTIMODAL_EMBEDDING_MODEL_NAME")
  22. dashscope: str = Field(default="", alias="DASHSCOPE")
  23. model_config = SettingsConfigDict(
  24. env_file=".env",
  25. env_file_encoding="utf-8",
  26. case_sensitive=False,
  27. extra="ignore"
  28. )
  29. class RagflowSettings(BaseSettings):
  30. """RAGFLOW配置类"""
  31. ragflow_api_url: str = Field(default="http://192.168.16.134/", alias="RAGFLOW_API_URL")
  32. ragflow_api_key: str = Field(default="", alias="RAGFLOW_API_KEY")
  33. dataset_id: str = Field(default="", alias="DATASET_ID")
  34. ragflow_user_name: str = Field(default="", alias="RAGFLOW_USER_NAME")
  35. ragflow_passwd: str = Field(default="", alias="RAGFLOW_PASSWD")
  36. model_config = SettingsConfigDict(
  37. env_file=".env",
  38. env_file_encoding="utf-8",
  39. case_sensitive=False,
  40. extra="ignore"
  41. )
  42. class MinioSettings(BaseSettings):
  43. """MinIO配置类"""
  44. minio_endpoint: str = Field(default="http://localhost:9000", alias="MINIO_ENDPOINT")
  45. minio_access_key: str = Field(default="minioadmin", alias="MINIO_ACCESS_KEY")
  46. minio_secret_key: str = Field(default="minioadmin", alias="MINIO_SECRET_KEY")
  47. minio_bucket_name: str = Field(default="ragflow", alias="MINIO_BUCKET_NAME")
  48. minio_secure: bool = Field(default=False, alias="MINIO_SECURE")
  49. model_config = SettingsConfigDict(
  50. env_file=".env",
  51. env_file_encoding="utf-8",
  52. case_sensitive=False,
  53. extra="ignore"
  54. )
  55. class VectorDBSettings(BaseSettings):
  56. """向量数据库配置类"""
  57. vector_db_type: str = Field(default="es", alias="VECTOR_DB_TYPE")
  58. infinity_host: str = Field(default="192.168.16.134", alias="INFINITY_HOST")
  59. infinity_port: int = Field(default=23820, alias="INFINITY_PORT")
  60. infinity_sdk_port: int = Field(default=23817, alias="INFINITY_SDK_PORT")
  61. infinity_user: str = Field(default="admin", alias="INFINITY_USER")
  62. infinity_password: str = Field(default="admin", alias="INFINITY_PASSWORD")
  63. infinity_database: str = Field(default="test", alias="INFINITY_DATABASE")
  64. infinity_table_name: str = Field(default="test", alias="INFINITY_TABLE_NAME")
  65. model_config = SettingsConfigDict(
  66. env_file=".env",
  67. env_file_encoding="utf-8",
  68. case_sensitive=False,
  69. extra="ignore"
  70. )
  71. class MysqlSettings(BaseSettings):
  72. """MySQL配置类"""
  73. mysql_host: str = Field(default="localhost", alias="MYSQL_HOST")
  74. mysql_port: int = Field(default=3306, alias="MYSQL_PORT")
  75. mysql_user: str = Field(default="root", alias="MYSQL_USER")
  76. mysql_password: str = Field(default="", alias="MYSQL_PASSWORD")
  77. mysql_database: str = Field(default="", alias="MYSQL_DATABASE")
  78. mysql_charset: str = Field(default="utf8mb4", alias="MYSQL_CHARSET")
  79. mysql_pool_size: int = Field(default=5, alias="MYSQL_POOL_SIZE")
  80. model_config = SettingsConfigDict(
  81. env_file=".env",
  82. env_file_encoding="utf-8",
  83. case_sensitive=False,
  84. extra="ignore"
  85. )
  86. class TagSearchSettings(BaseSettings):
  87. """标签搜索配置类"""
  88. tag_db_name: str = Field(default="tag_db", alias="TAG_DB_NAME")
  89. tag_table_name: str = Field(default="tag_table", alias="TAG_TABLE_NAME")
  90. tag_document_id: str = Field(default="", alias="TAG_DOCUMENT_ID")
  91. tag_dataset_id: str = Field(default="", alias="TAG_DATASET_ID")
  92. model_config = SettingsConfigDict(
  93. env_file=".env",
  94. env_file_encoding="utf-8",
  95. case_sensitive=False,
  96. extra="ignore"
  97. )
  98. # 创建配置实例
  99. model_settings = ModelSettings()
  100. ragflow_settings = RagflowSettings()
  101. app_settings = AppSettings()
  102. minio_settings = MinioSettings()
  103. vector_db_settings = VectorDBSettings()
  104. mysql_settings = MysqlSettings()
  105. tag_search_settings = TagSearchSettings()