""" 统一配置管理 """ import os from dataclasses import dataclass from typing import Dict, Optional @dataclass class ProviderConfig: """平台配置""" api_key: Optional[str] = None base_url: Optional[str] = None enabled: bool = True # 平台配置映射 PROVIDERS: Dict[str, ProviderConfig] = { "glm": ProviderConfig( api_key=os.getenv("ZHIPU_API_KEY") or os.getenv("GLM_API_KEY"), enabled=True, ), "dashscope": ProviderConfig( api_key=os.getenv("ALIYUN_API_KEY") or os.getenv("DASHSCOPE_API_KEY"), enabled=True, ), "openai": ProviderConfig( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"), enabled=True, ), "deepseek": ProviderConfig( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1"), enabled=True, ), } def get_provider_config(provider: str) -> Optional[ProviderConfig]: """获取平台配置""" return PROVIDERS.get(provider) def is_provider_available(provider: str) -> bool: """检查平台是否可用(已配置 API Key)""" config = PROVIDERS.get(provider) return config is not None and bool(config.api_key) and config.enabled def get_available_providers() -> list: """获取所有可用的平台列表""" return [name for name, config in PROVIDERS.items() if is_provider_available(name)] # 默认平台 DEFAULT_PROVIDER = os.getenv("DEFAULT_PROVIDER", "glm")