ai-chat-ui/server/config/settings.py

60 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
统一配置管理
"""
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")