From 0452dfd0296de8e5ca30a105d3a985bbe253db08 Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Thu, 28 Nov 2024 19:09:04 +0800 Subject: [PATCH] fix: missing tool invoke messages --- api/core/workflow/nodes/tool/tool_node.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/api/core/workflow/nodes/tool/tool_node.py b/api/core/workflow/nodes/tool/tool_node.py index 7f97558763..adb6351742 100644 --- a/api/core/workflow/nodes/tool/tool_node.py +++ b/api/core/workflow/nodes/tool/tool_node.py @@ -7,6 +7,7 @@ from sqlalchemy.orm import Session from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler from core.file import File, FileTransferMethod, FileType +from core.plugin.manager.exc import PluginInvokeError from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter from core.tools.tool_engine import ToolEngine from core.tools.tool_manager import ToolManager @@ -101,8 +102,18 @@ class ToolNode(BaseNode[ToolNodeData]): ) ) - # convert tool messages - yield from self._transform_message(message_stream, tool_info, parameters_for_log) + try: + # convert tool messages + yield from self._transform_message(message_stream, tool_info, parameters_for_log) + except PluginInvokeError as e: + yield RunCompletedEvent( + run_result=NodeRunResult( + status=WorkflowNodeExecutionStatus.FAILED, + inputs=parameters_for_log, + metadata={NodeRunMetadataKey.TOOL_INFO: tool_info}, + error=f"Failed to transform tool message: {str(e)}", + ) + ) def _generate_parameters( self,