From 49fefb41a6280ee08dbe37070e8460e11de2c938 Mon Sep 17 00:00:00 2001 From: Huang <1710360675@qq.com> Date: Sun, 23 Mar 2025 16:20:20 +0800 Subject: [PATCH] =?UTF-8?q?update:=E4=BC=98=E5=8C=96=E5=94=A4=E9=86=92?= =?UTF-8?q?=E8=AF=8D=E5=93=8D=E5=BA=94=E6=97=B6=E9=97=B4=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=88=9D=E5=A7=8B=E5=8C=96=E5=87=BD=E6=95=B0=E5=BC=82?= =?UTF-8?q?=E6=AD=A5bug=20(#482)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/core/connection.py | 45 +++++++++++-------- .../plugins_func/loadplugins.py | 4 +- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/main/xiaozhi-server/core/connection.py b/main/xiaozhi-server/core/connection.py index c0db5eb8..54cc0947 100644 --- a/main/xiaozhi-server/core/connection.py +++ b/main/xiaozhi-server/core/connection.py @@ -9,7 +9,7 @@ import traceback import threading import websockets from typing import Dict, Any -import plugins_func.loadplugins +from plugins_func.loadplugins import auto_import_modules from config.logger import setup_logging from core.utils.dialogue import Message, Dialogue from core.handle.textHandle import handleTextMessage @@ -25,6 +25,8 @@ from core.utils.auth_code_gen import AuthCodeGenerator TAG = __name__ +auto_import_modules('plugins_func.functions') + class TTSException(RuntimeError): pass @@ -109,11 +111,15 @@ class ConnectionHandler: # 进行认证 await self.auth.authenticate(self.headers) - device_id = self.headers.get("device-id", None) - self.memory.init_memory(device_id, self.llm) - self.intent.set_llm(self.llm) + # 认证通过,继续处理 + self.websocket = ws + self.session_id = str(uuid.uuid4()) + + self.welcome_msg = self.config["xiaozhi"] + self.welcome_msg["session_id"] = self.session_id + await self.websocket.send(json.dumps(self.welcome_msg)) # Load private configuration if device_id is provided bUsePrivateConfig = self.config.get("use_private_config", False) self.logger.bind(tag=TAG).info(f"bUsePrivateConfig: {bUsePrivateConfig}, device_id: {device_id}") @@ -141,17 +147,8 @@ class ConnectionHandler: self.private_config = None raise - # 认证通过,继续处理 - self.websocket = ws - self.session_id = str(uuid.uuid4()) - - self.welcome_msg = self.config["xiaozhi"] - self.welcome_msg["session_id"] = self.session_id - await self.websocket.send(json.dumps(self.welcome_msg)) - # 异步初始化 - await self.loop.run_in_executor(None, self._initialize_components) - + self.executor.submit(self._initialize_components) # tts 消化线程 tts_priority = threading.Thread(target=self._tts_priority_thread, daemon=True) tts_priority.start() @@ -187,16 +184,26 @@ class ConnectionHandler: await handleAudioMessage(self, message) def _initialize_components(self): + """加载插件""" + self.func_handler = FunctionHandler(self) + + """加载提示词""" self.prompt = self.config["prompt"] if self.private_config: self.prompt = self.private_config.private_config.get("prompt", self.prompt) - - self.client_ip_info = get_ip_info(self.client_ip) - self.logger.bind(tag=TAG).info(f"Client ip info: {self.client_ip_info}") - self.prompt = self.prompt + f"\n我在:{self.client_ip_info}" self.dialogue.put(Message(role="system", content=self.prompt)) - self.func_handler = FunctionHandler(self) + """加载记忆""" + device_id = self.headers.get("device-id", None) + self.memory.init_memory(device_id, self.llm) + self.intent.set_llm(self.llm) + + """加载位置信息""" + self.client_ip_info = get_ip_info(self.client_ip) + if self.client_ip_info is not None and "city" in self.client_ip_info: + self.logger.bind(tag=TAG).info(f"Client ip info: {self.client_ip_info}") + self.prompt = self.prompt + f"\n我在:{self.client_ip_info}" + self.dialogue.update_system_message(self.prompt) def change_system_prompt(self, prompt): self.prompt = prompt diff --git a/main/xiaozhi-server/plugins_func/loadplugins.py b/main/xiaozhi-server/plugins_func/loadplugins.py index d826fac8..9b20355e 100644 --- a/main/xiaozhi-server/plugins_func/loadplugins.py +++ b/main/xiaozhi-server/plugins_func/loadplugins.py @@ -22,6 +22,4 @@ def auto_import_modules(package_name): # 导入模块 full_module_name = f"{package_name}.{module_name}" importlib.import_module(full_module_name) - #logger.bind(tag=TAG).info(f"模块 '{full_module_name}' 已加载") - -auto_import_modules('plugins_func.functions') \ No newline at end of file + #logger.bind(tag=TAG).info(f"模块 '{full_module_name}' 已加载") \ No newline at end of file