From e359ace6335ddb49cd194cc1a4f90d4d02e7010d Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Fri, 27 Dec 2024 17:55:41 +0800 Subject: [PATCH] fix: add agent logs --- api/core/workflow/nodes/tool/tool_node.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/api/core/workflow/nodes/tool/tool_node.py b/api/core/workflow/nodes/tool/tool_node.py index d19d6413ed..1b692630aa 100644 --- a/api/core/workflow/nodes/tool/tool_node.py +++ b/api/core/workflow/nodes/tool/tool_node.py @@ -193,7 +193,7 @@ class ToolNode(BaseNode[ToolNodeData]): files: list[File] = [] json: list[dict] = [] - agent_logs: list[AgentLog] = [] + agent_logs: list[AgentLogEvent] = [] variables: dict[str, Any] = {} @@ -288,7 +288,7 @@ class ToolNode(BaseNode[ToolNodeData]): files.append(message.meta["file"]) elif message.type == ToolInvokeMessage.MessageType.LOG: assert isinstance(message.message, ToolInvokeMessage.LogMessage) - yield AgentLogEvent( + agent_log = AgentLogEvent( id=message.message.id, node_execution_id=self.id, parent_id=message.message.parent_id, @@ -298,11 +298,25 @@ class ToolNode(BaseNode[ToolNodeData]): label=message.message.label, ) + # check if the agent log is already in the list + for log in agent_logs: + if log.id == agent_log.id: + # update the log + log.data = agent_log.data + log.status = agent_log.status + log.error = agent_log.error + log.label = agent_log.label + break + else: + agent_logs.append(agent_log) + + yield agent_log + yield RunCompletedEvent( run_result=NodeRunResult( status=WorkflowNodeExecutionStatus.SUCCEEDED, outputs={"text": text, "files": files, "json": json, **variables}, - metadata={NodeRunMetadataKey.TOOL_INFO: tool_info}, + metadata={NodeRunMetadataKey.TOOL_INFO: tool_info, NodeRunMetadataKey.AGENT_LOG: agent_logs}, inputs=parameters_for_log, ) )