from interfaces.asr import ASR from interfaces.llm import LLM from interfaces.tts import TTS from services.registry import get_service from config import settings from utils.logger import session_logger from services.config_manager import config_manager from implementations.aliyun_asr import AliyunASR from implementations.volcano_llm import VolcanoLLM from implementations.minimax_tts import MiniMaxTTS async def get_asr(selected_role: dict = None) -> ASR: """获取ASR服务实例 - 固定使用阿里云""" session_logger.info( "system", "factory", f"ASR提供商: Aliyun (固定)" ) return AliyunASR(selected_role=selected_role) async def get_llm(selected_role: dict = None) -> LLM: """获取LLM服务实例 - 固定使用火山引擎""" role_selected_language = selected_role.get('_selected_language') if selected_role else None session_logger.info( "system", "factory", f"LLM提供商: Volcano (固定)" + (f", 语言: {role_selected_language}" if role_selected_language else "") ) instance = VolcanoLLM(selected_role=selected_role) if selected_role and "role_key" not in selected_role: selected_role["role_key"] = "Volcano" # 使用provider作为默认值 if hasattr(instance, "current_language"): instance.current_language = role_selected_language return instance async def get_tts(selected_role: dict = None, language: str = None) -> TTS: """获取TTS服务实例 - 固定使用MiniMax""" role_selected_language = selected_role.get('_selected_language') if selected_role else None effective_language = language or role_selected_language session_logger.info( "system", "factory", f"TTS提供商: MiniMax (固定)" + (f", 语言: {effective_language}" if effective_language else "") ) instance = MiniMaxTTS(selected_role=selected_role) if hasattr(instance, "current_language"): instance.current_language = effective_language return instance