Fix: Resolve issue with json_output (#22053)
This commit is contained in:
@@ -285,6 +285,7 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|||||||
for key, value in msg_metadata.items()
|
for key, value in msg_metadata.items()
|
||||||
if key in WorkflowNodeExecutionMetadataKey.__members__.values()
|
if key in WorkflowNodeExecutionMetadataKey.__members__.values()
|
||||||
}
|
}
|
||||||
|
if message.message.json_object is not None:
|
||||||
json.append(message.message.json_object)
|
json.append(message.message.json_object)
|
||||||
elif message.type == ToolInvokeMessage.MessageType.LINK:
|
elif message.type == ToolInvokeMessage.MessageType.LINK:
|
||||||
assert isinstance(message.message, ToolInvokeMessage.TextMessage)
|
assert isinstance(message.message, ToolInvokeMessage.TextMessage)
|
||||||
@@ -369,19 +370,14 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|||||||
agent_logs.append(agent_log)
|
agent_logs.append(agent_log)
|
||||||
|
|
||||||
yield agent_log
|
yield agent_log
|
||||||
# Add agent_logs to outputs['json'] to ensure frontend can access thinking process
|
|
||||||
json_output: dict[str, Any] = {}
|
|
||||||
if json:
|
|
||||||
if isinstance(json, list) and len(json) == 1:
|
|
||||||
# If json is a list with only one element, convert it to a dictionary
|
|
||||||
json_output = json[0] if isinstance(json[0], dict) else {"data": json[0]}
|
|
||||||
elif isinstance(json, list):
|
|
||||||
# If json is a list with multiple elements, create a dictionary containing all data
|
|
||||||
json_output = {"data": json}
|
|
||||||
|
|
||||||
|
# Add agent_logs to outputs['json'] to ensure frontend can access thinking process
|
||||||
|
json_output: list[dict[str, Any]] = []
|
||||||
|
|
||||||
|
# Step 1: append each agent log as its own dict.
|
||||||
if agent_logs:
|
if agent_logs:
|
||||||
# Add agent_logs to json output
|
for log in agent_logs:
|
||||||
json_output["agent_logs"] = [
|
json_output.append(
|
||||||
{
|
{
|
||||||
"id": log.id,
|
"id": log.id,
|
||||||
"parent_id": log.parent_id,
|
"parent_id": log.parent_id,
|
||||||
@@ -392,8 +388,13 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|||||||
"metadata": log.metadata,
|
"metadata": log.metadata,
|
||||||
"node_id": log.node_id,
|
"node_id": log.node_id,
|
||||||
}
|
}
|
||||||
for log in agent_logs
|
)
|
||||||
]
|
# Step 2: normalize JSON into {"data": [...]}.change json to list[dict]
|
||||||
|
if json:
|
||||||
|
json_output.extend(json)
|
||||||
|
else:
|
||||||
|
json_output.append({"data": []})
|
||||||
|
|
||||||
yield RunCompletedEvent(
|
yield RunCompletedEvent(
|
||||||
run_result=NodeRunResult(
|
run_result=NodeRunResult(
|
||||||
status=WorkflowNodeExecutionStatus.SUCCEEDED,
|
status=WorkflowNodeExecutionStatus.SUCCEEDED,
|
||||||
|
Reference in New Issue
Block a user