mirror of
https://github.com/langgenius/dify.git
synced 2025-07-13 20:21:37 +00:00
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
![]() |
from collections.abc import Generator
|
||
|
from typing import Any
|
||
|
|
||
|
from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler
|
||
|
from core.plugin.backwards_invocation.base import BaseBackwardsInvocation
|
||
|
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolProviderType
|
||
|
from core.tools.tool_engine import ToolEngine
|
||
|
from core.tools.tool_manager import ToolManager
|
||
|
from core.tools.utils.message_transformer import ToolFileMessageTransformer
|
||
|
|
||
|
|
||
|
class PluginToolBackwardsInvocation(BaseBackwardsInvocation):
|
||
|
"""
|
||
|
Backwards invocation for plugin tools.
|
||
|
"""
|
||
|
|
||
|
@classmethod
|
||
|
def invoke_tool(
|
||
|
cls,
|
||
|
tenant_id: str,
|
||
|
user_id: str,
|
||
|
tool_type: ToolProviderType,
|
||
|
provider: str,
|
||
|
tool_name: str,
|
||
|
tool_parameters: dict[str, Any],
|
||
|
) -> Generator[ToolInvokeMessage, None, None]:
|
||
|
"""
|
||
|
invoke tool
|
||
|
"""
|
||
|
# get tool runtime
|
||
|
try:
|
||
|
tool_runtime = ToolManager.get_tool_runtime_from_plugin(
|
||
|
tool_type, tenant_id, provider, tool_name, tool_parameters
|
||
|
)
|
||
|
response = ToolEngine.generic_invoke(
|
||
|
tool_runtime, tool_parameters, user_id, DifyWorkflowCallbackHandler(), workflow_call_depth=1
|
||
|
)
|
||
|
|
||
|
response = ToolFileMessageTransformer.transform_tool_invoke_messages(
|
||
|
response, user_id=user_id, tenant_id=tenant_id
|
||
|
)
|
||
|
|
||
|
return response
|
||
|
except Exception as e:
|
||
|
raise e
|