- 重构目录结构,将配置和日志模块分离到独立目录 - 创建 config/ 目录,统一管理平台配置和 API 密钥 - 创建 core/ 目录,集中管理日志系统功能 - 创建 database/ 目录,添加 SQLite 数据库初始化和管理 - 删除不必要的文件:测试文件、缓存文件、重复代码文件 - 更新所有导入路径,确保模块引用正确 主要变更: - config.py → config/settings.py - utils/logger.py → core/logger.py - init_logging.py → core/init.py - 删除 logging.conf(配置已整合到代码中) - 新增 database/__init__.py 提供数据库连接管理 改进点: - 更清晰的模块划分,便于维护和扩展 - 避免命名冲突(logging 模块与 Python 标准库冲突) - 统一的配置和日志管理接口
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")
|