From 847a091a1edb20e0d894e09ebb45811288dd9700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E6=98=A5=E4=B8=9C?= Date: Tue, 4 Feb 2025 09:46:16 +0800 Subject: [PATCH] fix(workflow_tool): enable File parameter support after workflow is published as a tool Fixes langgenius/dify#13159 --- api/core/tools/tool/workflow_tool.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/api/core/tools/tool/workflow_tool.py b/api/core/tools/tool/workflow_tool.py index eea66ee4ed7447..9d13e2c49a55e3 100644 --- a/api/core/tools/tool/workflow_tool.py +++ b/api/core/tools/tool/workflow_tool.py @@ -195,14 +195,14 @@ def _extract_files(self, outputs: dict) -> tuple[dict, list[File]]: if isinstance(value, list): for item in value: if isinstance(item, dict) and item.get("dify_model_identity") == FILE_MODEL_IDENTITY: - item["tool_file_id"] = item.get("related_id") + item = self._update_file_mapping(item) file = build_from_mapping( mapping=item, tenant_id=str(cast(Tool.Runtime, self.runtime).tenant_id), ) files.append(file) elif isinstance(value, dict) and value.get("dify_model_identity") == FILE_MODEL_IDENTITY: - value["tool_file_id"] = value.get("related_id") + value = self._update_file_mapping(value) file = build_from_mapping( mapping=value, tenant_id=str(cast(Tool.Runtime, self.runtime).tenant_id), @@ -211,3 +211,11 @@ def _extract_files(self, outputs: dict) -> tuple[dict, list[File]]: result[key] = value return result, files + + def _update_file_mapping(self, file_dict: dict) -> dict: + transfer_method = FileTransferMethod.value_of(file_dict.get("transfer_method")) + if transfer_method == FileTransferMethod.TOOL_FILE: + file_dict["tool_file_id"] = file_dict.get("related_id") + elif transfer_method == FileTransferMethod.LOCAL_FILE: + file_dict["upload_file_id"] = file_dict.get("related_id") + return file_dict