Sfoglia il codice sorgente

feat(tool_node): Suppress exceptions thrown by the Tool (#11724)

Signed-off-by: -LAN- <laipz8200@outlook.com>
-LAN- 4 mesi fa
parent
commit
92a840f1b2

+ 3 - 3
api/core/app/task_pipeline/workflow_cycle_manage.py

@@ -271,9 +271,9 @@ class WorkflowCycleManage:
 
         db.session.close()
 
-        with Session(db.engine, expire_on_commit=False) as session:
-            session.add(workflow_run)
-            session.refresh(workflow_run)
+        # with Session(db.engine, expire_on_commit=False) as session:
+        #     session.add(workflow_run)
+        #     session.refresh(workflow_run)
 
         if trace_manager:
             trace_manager.add_trace_task(

+ 10 - 0
api/core/workflow/nodes/tool/tool_node.py

@@ -92,6 +92,16 @@ class ToolNode(BaseNode[ToolNodeData]):
                 error=f"Failed to invoke tool: {str(e)}",
                 error_type=type(e).__name__,
             )
+        except Exception as e:
+            return NodeRunResult(
+                status=WorkflowNodeExecutionStatus.FAILED,
+                inputs=parameters_for_log,
+                metadata={
+                    NodeRunMetadataKey.TOOL_INFO: tool_info,
+                },
+                error=f"Failed to invoke tool: {str(e)}",
+                error_type="UnknownError",
+            )
 
         # convert tool messages
         plain_text, files, json = self._convert_tool_messages(messages)