リバース呼び出しツールとは、プラグインがDifyプラットフォーム内の他のツールタイプのプラグインを呼び出すことができることを指します。リバース呼び出しの基本概念にまだ慣れていない場合は、まずDifyサービスのリバース呼び出しをお読みください。

次のような要求に遭遇した場合:

  • あるツールタイプのプラグインが既に機能を実装しているが、期待通りの効果が得られず、データの二次加工が必要な場合。
  • あるタスクでクローラーを使用する必要があり、クローラーサービスを自由に選択したい場合。
  • 複数のツールの結果を統合する必要があるが、Workflowアプリケーションでは処理が難しい場合。

この場合、プラグイン内で既に実装されている他のツールを呼び出す必要があります。そのツールは、マーケットプレイスのツールプラグイン、独自に構築したWorkflow as a Tool、またはカスタムツールである可能性があります。

上記の要求は、プラグインの 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/google のような形式です。tool_name は具体的なツール名で、parameters は最終的にそのツールに渡されるパラメータです。

Workflow as Tool の呼び出し

Workflow as Tool に関する詳細については、ツールプラグインのドキュメントを参照してください。

エントリポイント

    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 となります。具体的な名称はツール管理ページで確認できます。

関連リソース