from typing import Any, Dict from config import settings class ConfigManager: """统一的配置管理服务,处理全局配置和角色特定配置的优先级""" @staticmethod def get_config_value(config_key: str, role_config: Dict[str, Any] = None, default_value: Any = None) -> Any: """ 获取配置值,遵循优先级:角色配置 > 全局配置 > 默认值 Args: config_key: 配置键名 role_config: 角色配置字典 default_value: 默认值,当角色配置和全局配置都没有该键时返回 """ if role_config and config_key in role_config: return role_config[config_key] if hasattr(settings, config_key): return getattr(settings, config_key) return default_value @staticmethod def get_service_config(service_type: str, role_config: Dict[str, Any] = None) -> Dict[str, Any]: """ 获取服务特定配置,整合角色配置和全局配置 Args: service_type: 服务类型 (asr, llm, tts) role_config: 角色配置字典 """ config = {} config_mapping = { 'asr': { 'provider': 'asr_provider', }, 'llm': { 'provider': 'llm_provider', 'model_id': 'volcano_model_id', }, 'tts': { 'provider': 'tts_provider', 'voice_type': 'minimax_voice_id', } } for config_key, setting_key in config_mapping.get(service_type, {}).items(): if setting_key: config[config_key] = ConfigManager.get_config_value(setting_key, role_config) return config config_manager = ConfigManager()