From d7678081dae771d22434cb7cf4e68a1f53b3a37a Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 1 Feb 2025 14:36:41 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20Provider=20=E9=87=8D=E5=A4=8D=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E7=9B=B4=E6=8E=A5=E6=8A=A5=E9=94=99=E9=97=AA=E9=80=80?= =?UTF-8?q?=20#265?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/provider/manager.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/astrbot/core/provider/manager.py b/astrbot/core/provider/manager.py index 3709d9f43..fa328de75 100644 --- a/astrbot/core/provider/manager.py +++ b/astrbot/core/provider/manager.py @@ -1,4 +1,5 @@ import traceback +import uuid from astrbot.core.config.astrbot_config import AstrBotConfig from .provider import Provider, STTProvider, TTSProvider, Personality from .entites import ProviderType @@ -65,7 +66,7 @@ class ProviderManager(): '''加载的 Provider 的实例''' self.stt_provider_insts: List[STTProvider] = [] '''加载的 Speech To Text Provider 的实例''' - self.tts_provider_insts: Lieist[TTSProvider] = [] + self.tts_provider_insts: List[TTSProvider] = [] '''加载的 Text To Speech Provider 的实例''' self.llm_tools = llm_tools self.curr_provider_inst: Provider = None @@ -83,12 +84,16 @@ class ProviderManager(): if kdb_cfg and len(kdb_cfg): self.curr_kdb_name = list(kdb_cfg.keys())[0] + changed = False for provider_cfg in self.providers_config: if not provider_cfg['enable']: continue if provider_cfg['id'] in self.loaded_ids: - raise ValueError(f"Provider ID 重复:{provider_cfg['id']}。") + new_id = f"{provider_cfg['id']}_{str(uuid.uuid4())[:8]}" + logger.info(f"Provider ID 重复:{provider_cfg['id']}。已自动更改为 {new_id}。") + provider_cfg['id'] = new_id + changed = True self.loaded_ids[provider_cfg['id']] = True try: @@ -116,7 +121,13 @@ class ProviderManager(): except Exception as e: logger.critical(f"加载 {provider_cfg['type']}({provider_cfg['id']}) 提供商适配器失败:{e}。未知原因") continue - + + if changed: + try: + config.save_config() + except Exception as e: + logger.warning(f"保存配置文件失败:{e}") + async def initialize(self): selected_provider_id = sp.get("curr_provider")