--- dimensions: type: primary: reference detail: core level: beginner standard_title: Tool language: ja title: ツールの返り値 description: このドキュメントでは、Difyプラグインにおけるツールのデータ構造と使用方法について詳しく説明します。内容には、さまざまなタイプのメッセージ(画像URL、リンク、テキスト、ファイル、JSON)を返す方法、変数およびストリーミング変数メッセージを作成する方法、そしてworkflowで参照しやすくするためにツールの出力変数スキーマを定義する方法が含まれます。 --- 詳細なインターフェースドキュメントを読む前に、Difyプラグインのツール統合プロセスについて、大まかな理解があることを確認してください。 ### データ構造 #### メッセージの返却 Difyは、`テキスト`、`リンク`、`画像`、`ファイルBLOB`、`JSON`など、さまざまなメッセージタイプをサポートしており、以下の異なるインターフェースを通じてさまざまなタイプのメッセージを返すことができます。 デフォルトでは、`workflow`内のツールの出力には、`files`、`text`、`json`の3つの固定変数が含まれ、以下の方法でこれらの変数のデータを返すことができます。 例えば、`create_image_message`を使用して画像を返しますが、ツールはカスタム出力変数もサポートしているため、`workflow`内でこれらの変数をより便利に参照できます。 #### **画像URL** 画像のURLを渡すだけで、Difyはリンクを通じて自動的に画像をダウンロードし、ユーザーに返します。 ```python def create_image_message(self, image: str) -> ToolInvokeMessage: pass ``` #### **リンク** リンクを返す必要がある場合は、以下のインターフェースを使用してください。 ```python def create_link_message(self, link: str) -> ToolInvokeMessage: pass ``` #### **テキスト** テキストメッセージを返す必要がある場合は、以下のインターフェースを使用してください。 ```python def create_text_message(self, text: str) -> ToolInvokeMessage: pass ``` **ファイル** 画像、音声、動画、PPT、Word、Excelなどのファイルの生データを返す必要がある場合は、以下のインターフェースを使用できます。 * `blob` ファイルの生データ、bytes型。 * `meta` ファイルのメタデータ。開発者が明確なファイルタイプを必要とする場合は、`mime_type`を指定してください。そうでない場合、Difyはデフォルトタイプとして`octet/stream`を使用します。 ```python def create_blob_message(self, blob: bytes, meta: dict = None) -> ToolInvokeMessage: pass ``` #### **JSON** フォーマットされたJSONを返す必要がある場合は、以下のインターフェースを使用できます。これは通常、workflow内のノード間のデータ転送に使用されます。agentモードでは、ほとんどの大規模モデルもJSONを読み取り、理解することができます。 * `object` Pythonの辞書オブジェクトで、自動的にJSONにシリアライズされます。 ```python def create_json_message(self, json: dict) -> ToolInvokeMessage: pass ``` #### **変数** 非ストリーミング出力の変数の場合、以下のインターフェースを使用して返すことができます。複数作成した場合、後者が前者を上書きします。 ```python def create_variable_message(self, variable_name: str, variable_value: Any) -> ToolInvokeMessage: pass ``` #### **ストリーミング変数** 「タイプライター」効果でテキストを出力したい場合は、ストリーミング変数を使用してテキストを出力できます。`chatflow`アプリケーションで`answer`ノードを使用し、この変数を参照すると、テキストは「タイプライター」効果で出力されます。ただし、現在この方法は文字列型のデータのみをサポートしています。 ```python def create_stream_variable_message( self, variable_name: str, variable_value: str ) -> ToolInvokeMessage: ``` #### カスタム変数の返却 `workflow`アプリケーションで`tool`の出力変数を参照したい場合は、出力される可能性のある変数を事前に定義する必要があります。Difyプラグインは、[`json_schema`](https://json-schema.org/)形式の出力変数定義をサポートしています。以下に簡単な例を示します。 ```yaml identity: author: author name: tool label: en_US: label zh_Hans: 标签 ja_JP: ラベル pt_BR: etiqueta description: human: en_US: description zh_Hans: 描述 ja_JP: 説明 pt_BR: descrição llm: description output_schema: type: object properties: name: type: string ``` 上記のサンプルコードは、簡単なツールを定義し、それに`output_schema`を指定しています。これには`name`フィールドが含まれており、この時点で`workflow`内でこのフィールドを参照できます。ただし、実際に使用するためには、ツールの実装コードで変数を返す必要があることに注意してください。そうしないと、`None`の戻り結果が得られます。 {/* Contributing Section DO NOT edit this section! It will be automatically generated by the script. */} --- [このページを編集する](https://github.com/langgenius/dify-docs/edit/main/plugin-dev-ja/0411-tool.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)