|
|
|
|
@ -6,6 +6,7 @@ from sqlalchemy.orm import Session
|
|
|
|
|
|
|
|
|
|
from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler
|
|
|
|
|
from core.file import File, FileTransferMethod
|
|
|
|
|
from core.model_runtime.entities.llm_entities import LLMUsage
|
|
|
|
|
from core.plugin.impl.exc import PluginDaemonClientSideError
|
|
|
|
|
from core.plugin.impl.plugin import PluginInstaller
|
|
|
|
|
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter
|
|
|
|
|
@ -208,7 +209,7 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|
|
|
|
|
|
|
|
|
agent_logs: list[AgentLogEvent] = []
|
|
|
|
|
agent_execution_metadata: Mapping[WorkflowNodeExecutionMetadataKey, Any] = {}
|
|
|
|
|
|
|
|
|
|
llm_usage: LLMUsage | None = None
|
|
|
|
|
variables: dict[str, Any] = {}
|
|
|
|
|
|
|
|
|
|
for message in message_stream:
|
|
|
|
|
@ -276,9 +277,10 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|
|
|
|
elif message.type == ToolInvokeMessage.MessageType.JSON:
|
|
|
|
|
assert isinstance(message.message, ToolInvokeMessage.JsonMessage)
|
|
|
|
|
if self.node_type == NodeType.AGENT:
|
|
|
|
|
msg_metadata = message.message.json_object.pop("execution_metadata", {})
|
|
|
|
|
msg_metadata: dict[str, Any] = message.message.json_object.pop("execution_metadata", {})
|
|
|
|
|
llm_usage = LLMUsage.from_metadata(msg_metadata)
|
|
|
|
|
agent_execution_metadata = {
|
|
|
|
|
key: value
|
|
|
|
|
WorkflowNodeExecutionMetadataKey(key): value
|
|
|
|
|
for key, value in msg_metadata.items()
|
|
|
|
|
if key in WorkflowNodeExecutionMetadataKey.__members__.values()
|
|
|
|
|
}
|
|
|
|
|
@ -377,6 +379,7 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|
|
|
|
WorkflowNodeExecutionMetadataKey.AGENT_LOG: agent_logs,
|
|
|
|
|
},
|
|
|
|
|
inputs=parameters_for_log,
|
|
|
|
|
llm_usage=llm_usage,
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|