From 48313bc30234a71254a8c1b373a38776fa179141 Mon Sep 17 00:00:00 2001 From: Sakura-RanChen <1908198662@qq.com> Date: Tue, 18 Nov 2025 11:10:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E5=B7=A5=E5=85=B7=E6=97=B6?= =?UTF-8?q?=E5=8D=8F=E7=A8=8B=E4=B8=8D=E9=98=BB=E5=A1=9E=EF=BC=8C=E4=BB=85?= =?UTF-8?q?=E9=9C=80=E7=AD=89=E5=BE=85=E6=9C=80=E6=85=A2=E9=82=A3=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/core/connection.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/main/xiaozhi-server/core/connection.py b/main/xiaozhi-server/core/connection.py index f6d86215..d2891393 100644 --- a/main/xiaozhi-server/core/connection.py +++ b/main/xiaozhi-server/core/connection.py @@ -872,20 +872,23 @@ class ConnectionHandler: f"检测到 {len(tool_calls_list)} 个工具调用" ) - # 执行所有工具并收集结果 - tool_results = [] + # 收集所有工具调用的 Future + futures_with_data = [] for tool_call_data in tool_calls_list: self.logger.bind(tag=TAG).debug( f"function_name={tool_call_data['name']}, function_id={tool_call_data['id']}, function_arguments={tool_call_data['arguments']}" ) - # 使用统一工具处理器处理所有工具调用 - result = asyncio.run_coroutine_threadsafe( - self.func_handler.handle_llm_function_call( - self, tool_call_data - ), + future = asyncio.run_coroutine_threadsafe( + self.func_handler.handle_llm_function_call(self, tool_call_data), self.loop, - ).result() + ) + futures_with_data.append((future, tool_call_data)) + + # 等待协程结束(实际等待时长为最慢的那个) + tool_results = [] + for future, tool_call_data in futures_with_data: + result = future.result() tool_results.append((result, tool_call_data)) # 统一处理所有工具调用结果