config_manager.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """配置管理工具"""
  2. import json
  3. import logging
  4. import os
  5. from typing import Dict, Optional
  6. logger = logging.getLogger(__name__)
  7. class ConfigManager:
  8. """用户配置管理器"""
  9. def __init__(self):
  10. # 配置文件路径 - 存储到用户家目录中
  11. self.config_dir = os.path.join(os.path.expanduser("~"), ".ai_write_helper")
  12. self.config_file = os.path.join(self.config_dir, "user_config.json")
  13. # 确保配置目录存在
  14. os.makedirs(self.config_dir, exist_ok=True)
  15. def load_config(self) -> Dict:
  16. """从本地JSON文件加载配置"""
  17. default_config = {"api_key": "", "base_url": "", "model_name": "gpt-3.5-turbo"}
  18. if os.path.exists(self.config_file):
  19. try:
  20. with open(self.config_file, "r", encoding="utf-8") as f:
  21. loaded_config = json.load(f)
  22. default_config.update(loaded_config)
  23. except Exception as exc:
  24. logger.warning("读取配置文件失败,使用默认配置: %s", exc)
  25. return default_config
  26. def save_config(self, api_key: str, base_url: str, model_name: str) -> bool:
  27. """保存配置到本地JSON文件"""
  28. config = {"api_key": api_key, "base_url": base_url, "model_name": model_name}
  29. try:
  30. with open(self.config_file, "w", encoding="utf-8") as f:
  31. json.dump(config, f, ensure_ascii=False, indent=2)
  32. return True
  33. except Exception as exc:
  34. logger.warning("保存配置文件失败: %s", exc)
  35. return False
  36. # 全局配置管理器实例
  37. config_manager = ConfigManager()