60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
"""
|
||
统一配置管理
|
||
"""
|
||
|
||
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")
|