Fix: Correct file variable handling for custom tools in workflow

pull/18427/head
liujin-patsnap 10 months ago
parent 9b3696a18e
commit 635d25d330

@ -279,15 +279,13 @@ class ToolNode(BaseNode[ToolNodeData]):
json.append(message.message.json_object)
elif message.type == ToolInvokeMessage.MessageType.LINK:
assert isinstance(message.message, ToolInvokeMessage.TextMessage)
url = message.message.text
# 获取 transfer_method与其他类型保持一致
if message.meta:
transfer_method = message.meta.get("transfer_method", FileTransferMethod.TOOL_FILE)
else:
transfer_method = FileTransferMethod.TOOL_FILE
tool_file_id = str(url).rsplit('/', maxsplit=1)[-1].split(".")[0]
tool_file_id = message.message.text.split("/")[-1].split(".")[0]
with Session(db.engine) as session:
stmt = select(ToolFile).where(ToolFile.id == tool_file_id)
@ -295,12 +293,11 @@ class ToolNode(BaseNode[ToolNodeData]):
if tool_file is None:
raise ToolFileError(f"Tool file {tool_file_id} does not exist")
# 完整的 mapping 信息
mapping = {
"tool_file_id": tool_file_id,
"type": file_factory.get_file_type_by_mime_type(tool_file.mimetype),
"transfer_method": transfer_method,
"url": url,
"url": message.message.text,
}
file = file_factory.build_from_mapping(
@ -309,7 +306,6 @@ class ToolNode(BaseNode[ToolNodeData]):
)
files.append(file)
# 保持原有的文本处理
stream_text = f"Link: {message.message.text}\n"
text += stream_text
yield RunStreamChunkEvent(chunk_content=stream_text, from_variable_selector=[self.node_id, "text"])

Loading…
Cancel
Save