config.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. """配置管理模块,从.env文件加载环境变量"""
  2. import os
  3. from dotenv import load_dotenv
  4. # 加载.env文件中的环境变量
  5. load_dotenv()
  6. class ModelConfig:
  7. """模型配置类"""
  8. @staticmethod
  9. def get_model_provider() -> str:
  10. """获取模型提供商"""
  11. return os.getenv("MODEL_PROVIDER", "openai")
  12. @staticmethod
  13. def get_model_name() -> str:
  14. """获取模型名称"""
  15. return os.getenv("MODEL_NAME", "Qwen/Qwen3-VL-8B-Instruct")
  16. @staticmethod
  17. def get_embedding_model_name() -> str:
  18. """获取模型名称"""
  19. return os.getenv("EMBEDDING_MODEL_NAME", "Qwen/Qwen3-Embedding-0.6B")
  20. @staticmethod
  21. def get_base_url() -> str:
  22. """获取模型API基础URL"""
  23. return os.getenv("BASE_URL", "https://api.openai.com/v1")
  24. @staticmethod
  25. def get_api_key() -> str:
  26. """获取模型API密钥"""
  27. return os.getenv("API_KEY", "")
  28. @staticmethod
  29. def get_model_config() -> dict:
  30. """获取完整的模型配置"""
  31. return {
  32. "model_provider": ModelConfig.get_model_provider(),
  33. "model": ModelConfig.get_model_name(),
  34. "base_url": ModelConfig.get_base_url(),
  35. "api_key": ModelConfig.get_api_key()
  36. }
  37. @staticmethod
  38. def get_embedding_model_config() -> dict:
  39. """获取完整的模型配置"""
  40. return {
  41. "model_provider": ModelConfig.get_model_provider(),
  42. "model": ModelConfig.get_embedding_model_name(),
  43. "base_url": ModelConfig.get_base_url(),
  44. "api_key": ModelConfig.get_api_key()
  45. }
  46. class AppConfig:
  47. """应用配置类"""
  48. @staticmethod
  49. def get_log_level() -> str:
  50. """获取日志级别"""
  51. return os.getenv("LOG_LEVEL", "INFO")
  52. # 导出配置实例
  53. model_config = ModelConfig.get_model_config()
  54. app_config = {
  55. "log_level": AppConfig.get_log_level()
  56. }