From 92a840f1b2c869f3310e0b5f5291b3600c1b43e3 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Tue, 17 Dec 2024 12:11:50 +0800 Subject: [PATCH] feat(tool_node): Suppress exceptions thrown by the Tool (#11724) Signed-off-by: -LAN- --- api/core/app/task_pipeline/workflow_cycle_manage.py | 6 +++--- api/core/workflow/nodes/tool/tool_node.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/api/core/app/task_pipeline/workflow_cycle_manage.py b/api/core/app/task_pipeline/workflow_cycle_manage.py index d78f124e3a..8b588b48eb 100644 --- a/api/core/app/task_pipeline/workflow_cycle_manage.py +++ b/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( diff --git a/api/core/workflow/nodes/tool/tool_node.py b/api/core/workflow/nodes/tool/tool_node.py index 9b901c026e..3b56f94876 100644 --- a/api/core/workflow/nodes/tool/tool_node.py +++ b/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)