Browse Source

fix: workflow_as_tool output files raise error (#12061)

tags/0.15.0
非法操作 10 months ago
parent
commit
b66c03dfe9
No account linked to committer's email address
1 changed files with 12 additions and 3 deletions
  1. 12
    3
      api/core/tools/tool/workflow_tool.py

+ 12
- 3
api/core/tools/tool/workflow_tool.py View File

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
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

Loading…
Cancel
Save