fix: workflow_as_tool output files raise error (#12061)

This commit is contained in:
非法操作 2024-12-27 20:33:28 +08:00 committed by GitHub
parent 2a909e634b
commit b66c03dfe9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,12 +1,13 @@
import json import json
import logging import logging
from copy import deepcopy from copy import deepcopy
from typing import Any, Optional, Union from typing import Any, Optional, Union, cast
from core.file import FILE_MODEL_IDENTITY, File, FileTransferMethod from core.file import FILE_MODEL_IDENTITY, File, FileTransferMethod
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter, ToolProviderType from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter, ToolProviderType
from core.tools.tool.tool import Tool from core.tools.tool.tool import Tool
from extensions.ext_database import db from extensions.ext_database import db
from factories.file_factory import build_from_mapping
from models.account import Account from models.account import Account
from models.model import App, EndUser from models.model import App, EndUser
from models.workflow import Workflow from models.workflow import Workflow
@ -194,10 +195,18 @@ class WorkflowTool(Tool):
if isinstance(value, list): if isinstance(value, list):
for item in value: for item in value:
if isinstance(item, dict) and item.get("dify_model_identity") == FILE_MODEL_IDENTITY: if isinstance(item, dict) and item.get("dify_model_identity") == FILE_MODEL_IDENTITY:
file = File.model_validate(item) item["tool_file_id"] = item.get("related_id")
file = build_from_mapping(
mapping=item,
tenant_id=str(cast(Tool.Runtime, self.runtime).tenant_id),
)
files.append(file) files.append(file)
elif isinstance(value, dict) and value.get("dify_model_identity") == FILE_MODEL_IDENTITY: elif isinstance(value, dict) and value.get("dify_model_identity") == FILE_MODEL_IDENTITY:
file = File.model_validate(value) value["tool_file_id"] = value.get("related_id")
file = build_from_mapping(
mapping=value,
tenant_id=str(cast(Tool.Runtime, self.runtime).tenant_id),
)
files.append(file) files.append(file)
result[key] = value result[key] = value