chore: add create_json_message api for tools (#5440)

This commit is contained in:
非法操作
2024-06-24 15:46:16 +08:00
committed by GitHub
parent ba67206bb9
commit 1e28a8c033
7 changed files with 48 additions and 160 deletions

View File

@@ -74,13 +74,14 @@ class ToolNode(BaseNode):
)
# convert tool messages
plain_text, files = self._convert_tool_messages(messages)
plain_text, files, json = self._convert_tool_messages(messages)
return NodeRunResult(
status=WorkflowNodeExecutionStatus.SUCCEEDED,
outputs={
'text': plain_text,
'files': files
'files': files,
'json': json
},
metadata={
NodeRunMetadataKey.TOOL_INFO: tool_info
@@ -149,8 +150,9 @@ class ToolNode(BaseNode):
# extract plain text and files
files = self._extract_tool_response_binary(messages)
plain_text = self._extract_tool_response_text(messages)
json = self._extract_tool_response_json(messages)
return plain_text, files
return plain_text, files, json
def _extract_tool_response_binary(self, tool_response: list[ToolInvokeMessage]) -> list[FileVar]:
"""
@@ -203,7 +205,9 @@ class ToolNode(BaseNode):
f'Link: {message.message}' if message.type == ToolInvokeMessage.MessageType.LINK else ''
for message in tool_response
])
def _extract_tool_response_json(self, tool_response: list[ToolInvokeMessage]) -> list[dict]:
return [message.message for message in tool_response if message.type == ToolInvokeMessage.MessageType.JSON]
@classmethod
def _extract_variable_selector_to_variable_mapping(cls, node_data: ToolNodeData) -> dict[str, list[str]]: