瀏覽代碼

fix: missing tool invoke messages

Yeuoly 5 月之前
父節點
當前提交
0452dfd029
共有 1 個文件被更改,包括 13 次插入2 次删除
  1. 13 2
      api/core/workflow/nodes/tool/tool_node.py

+ 13 - 2
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,