""" 配置管理模块 """ import os from pathlib import Path from typing import Optional from dotenv import load_dotenv # 加载.env文件 env_path = Path(__file__).parent.parent.parent / ".env" if env_path.exists(): load_dotenv(env_path) class Config: """配置类""" # API Keys OPENAI_API_KEY: Optional[str] = os.getenv("OPENAI_API_KEY") ANTHROPIC_API_KEY: Optional[str] = os.getenv("ANTHROPIC_API_KEY") DASHSCOPE_API_KEY: Optional[str] = os.getenv("DASHSCOPE_API_KEY") VOLCENGINE_ACCESS_KEY: Optional[str] = os.getenv("VOLCENGINE_ACCESS_KEY") VOLCENGINE_SECRET_KEY: Optional[str] = os.getenv("VOLCENGINE_SECRET_KEY") ZHIPUAI_API_KEY: Optional[str] = os.getenv("ZHIPUAI_API_KEY") SILICONFLOW_API_KEY: Optional[str] = os.getenv("SILICONFLOW_API_KEY") SILICONFLOW_API_BASE: Optional[str] = os.getenv("SILICONFLOW_API_BASE", "https://api.siliconflow.cn/v1") # 路径配置 DATA_DIR: str = os.getenv("DATA_DIR", "../data") OUTPUT_DIR: str = os.getenv("OUTPUT_DIR", "./output") # 日志配置 LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") # HanLP配置 HANLP_MODEL_PATH: Optional[str] = os.getenv("HANLP_MODEL_PATH") # LLM配置 TEMPERATURE: float = float(os.getenv("TEMPERATURE", "0.4")) FREQUENCY_PENALTY: float = float(os.getenv("FREQUENCY_PENALTY", "0.6")) PRESENCE_PENALTY: float = float(os.getenv("PRESENCE_PENALTY", "0.6")) # 文本处理配置 MAX_TEXTUNIT_LENGTH: int = int(os.getenv("MAX_TEXTUNIT_LENGTH", "500")) def load_config() -> Config: """加载配置""" return Config()