Skip to main content
⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版
反向调用工具意味着插件可以调用 Dify 平台内的其他工具类型插件。如果您不熟悉反向调用的基本概念,请先阅读反向调用 Dify 服务 考虑以下场景:
  • 一个工具类型插件实现了某个功能,但结果不如预期,需要对数据进行后处理。
  • 某个任务需要网页爬虫,而您希望灵活选择爬取服务。
  • 您需要聚合多个工具的结果,但使用工作流应用难以处理。
在这些情况下,您需要在插件中调用其他现有工具。这些工具可能来自市场、自建的工作流作为工具,或自定义工具。 这些需求可以通过调用插件的 self.session.tool 字段来满足。

调用已安装工具

允许插件调用当前工作区中安装的各种工具,包括其他工具类型插件。 入口点
    self.session.tool
接口
    def invoke_builtin_tool(
        self, provider: str, tool_name: str, parameters: dict[str, Any]
    ) -> Generator[ToolInvokeMessage, None, None]:
        pass
这里,provider 是插件 ID 加上工具提供者名称,格式如 langgenius/google/googletool_name 是具体的工具名称,parameters 是传递给工具的参数。

调用工作流作为工具

有关工作流作为工具的更多信息,请参阅工具插件文档 入口点
    self.session.tool
接口
    def invoke_workflow_tool(
        self, provider: str, tool_name: str, parameters: dict[str, Any]
    ) -> Generator[ToolInvokeMessage, None, None]:
        pass
在这种情况下,provider 是该工具的 ID,tool_name 在创建工具时指定。

调用自定义工具

入口点
    self.session.tool
接口
    def invoke_api_tool(
        self, provider: str, tool_name: str, parameters: dict[str, Any]
    ) -> Generator[ToolInvokeMessage, None, None]:
        pass
这里,provider 是该工具的 ID,tool_name 是 OpenAPI 规范中的 operation_id。如果不存在,则是 Dify 自动生成的 tool_name,可在工具管理页面找到。

相关资源


编辑此页面 | 报告问题