Tool

When encountering the following scenarios:

  • A tool-type plugin has implemented a feature but hasn't met expectations and needs data reprocessing

  • A task requires web crawling and needs flexibility in choosing crawling services

  • Need to combine multiple tools' return results but difficult to handle through Workflow applications

In these cases, you need to request other implemented tools within the plugin. These tools could be from marketplace tool plugins, self-built Workflow as a Tool, or custom tools.

The above requirements can be achieved by using the plugin's self.session.tool field.

Request Installed Tools

Allows plugins to request various tools installed in the current Workspace, including other tool-type plugins.

Entry:

self.session.tool

Endpoint:

def invoke_builtin_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass

Where provider is the plugin ID plus tool provider name, formatted like langgenius/google/google, tool_name is the specific tool name, and parameters are the parameters passed to that tool.

Request Workflow as Tool

For more information about Workflow as Tool, please refer to this documentation.

Entry:

self.session.tool

Endpoint:

def invoke_workflow_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass

Here, provider is the tool's ID, and tool_name is required when creating the tool.

Request Custom Tool

Entry:

self.session.tool

Endpoint:

def invoke_api_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass

Here, provider is the tool's ID, tool_name is the operation_id in OpenAPI. If it doesn't exist, it's the tool_name automatically generated by Dify, which can be seen in the tool management page.

Last updated