config.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. """
  2. config.py - 配置管理模块
  3. 从环境变量读取配置,提供默认值。
  4. 支持通过 set_config() 覆盖默认配置。
  5. """
  6. import os
  7. import logging
  8. from dataclasses import dataclass, field
  9. from typing import Optional
  10. logger = logging.getLogger(__name__)
  11. @dataclass
  12. class Config:
  13. """系统配置"""
  14. # OpenAI 配置
  15. openai_api_key: str = "" # API密钥,默认从 OPENAI_API_KEY 环境变量读取
  16. openai_model: str = "gpt-4o" # 模型名
  17. openai_temperature: float = 0.7 # 生成温度
  18. openai_max_tokens: int = 4096 # 最大生成token数
  19. openai_timeout: int = 120 # 请求超时(秒)
  20. # 系统配置
  21. verbose: bool = False # 详细日志模式
  22. max_text_length: int = 100000 # 发送给AI的最大文本长度
  23. # 全局配置实例
  24. _default_config: Optional[Config] = None
  25. def _load_from_env() -> Config:
  26. """从环境变量加载配置"""
  27. return Config(
  28. openai_api_key=os.environ.get("OPENAI_API_KEY", ""),
  29. verbose=os.environ.get("VERBOSE", "").lower() in ("1", "true", "yes"),
  30. )
  31. def get_config() -> Config:
  32. """获取当前配置(单例)"""
  33. global _default_config
  34. if _default_config is None:
  35. _default_config = _load_from_env()
  36. return _default_config
  37. def set_config(config: Config):
  38. """覆盖默认配置"""
  39. global _default_config
  40. _default_config = config
  41. logger.info("配置已更新")