ai-chat-ui/server/config/settings.py
MT-Fire d8a6f696e7 refactor: 优化后端目录结构和代码组织
- 重构目录结构,将配置和日志模块分离到独立目录
- 创建 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 标准库冲突)
- 统一的配置和日志管理接口
2026-03-08 17:12:08 +08:00

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")