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

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2024-12-17 12:11:50 +08:00 committed by GitHub
parent 74fdc16bd1
commit 92a840f1b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 3 deletions

View File

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

View File

@ -92,6 +92,16 @@ class ToolNode(BaseNode[ToolNodeData]):
error=f"Failed to invoke tool: {str(e)}", error=f"Failed to invoke tool: {str(e)}",
error_type=type(e).__name__, 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 # convert tool messages
plain_text, files, json = self._convert_tool_messages(messages) plain_text, files, json = self._convert_tool_messages(messages)