ツール
以下のようなシナリオに遭遇した場合:
ツールタイププラグインが機能を実装したが、期待を満たしておらずデータの再処理が必要な場合
タスクがWebクローリングを必要とし、クローリングサービスの選択に柔軟性が必要な場合
複数のツールの戻り値を組み合わせる必要があるが、Workflowアプリケーションでの処理が困難な場合
これらの場合、プラグイン内の他の実装済みツールをリクエストする必要があります。これらのツールは、マーケットプレイスのツールプラグイン、自作のWorkflow as Tool、またはカスタムツールである可能性があります。
上記の要件は、プラグインのself.session.toolフィールドを使用することで達成できます。
インストール済みツールのリクエスト
プラグインが現在のWorkspaceにインストールされている様々なツール(他のツールタイププラグインを含む)をリクエストすることができます。
エントリー:
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で、ツール管理ページで確認できます。
Last updated