ツールの返り値
このドキュメントでは、Difyプラグインにおけるツールのデータ構造と使用方法について詳しく説明します。内容には、さまざまなタイプのメッセージ(画像URL、リンク、テキスト、ファイル、JSON)を返す方法、変数およびストリーミング変数メッセージを作成する方法、そしてworkflowで参照しやすくするためにツールの出力変数スキーマを定義する方法が含まれます。
詳細なインターフェースドキュメントを読む前に、Difyプラグインのツール統合プロセスについて、大まかな理解があることを確認してください。
データ構造
メッセージの返却
Difyは、テキスト
、リンク
、画像
、ファイルBLOB
、JSON
など、さまざまなメッセージタイプをサポートしており、以下の異なるインターフェースを通じてさまざまなタイプのメッセージを返すことができます。
デフォルトでは、workflow
内のツールの出力には、files
、text
、json
の3つの固定変数が含まれ、以下の方法でこれらの変数のデータを返すことができます。
例えば、create_image_message
を使用して画像を返しますが、ツールはカスタム出力変数もサポートしているため、workflow
内でこれらの変数をより便利に参照できます。
画像URL
画像のURLを渡すだけで、Difyはリンクを通じて自動的に画像をダウンロードし、ユーザーに返します。
リンク
リンクを返す必要がある場合は、以下のインターフェースを使用してください。
テキスト
テキストメッセージを返す必要がある場合は、以下のインターフェースを使用してください。
ファイル
画像、音声、動画、PPT、Word、Excelなどのファイルの生データを返す必要がある場合は、以下のインターフェースを使用できます。
blob
ファイルの生データ、bytes型。meta
ファイルのメタデータ。開発者が明確なファイルタイプを必要とする場合は、mime_type
を指定してください。そうでない場合、Difyはデフォルトタイプとしてoctet/stream
を使用します。
JSON
フォーマットされたJSONを返す必要がある場合は、以下のインターフェースを使用できます。これは通常、workflow内のノード間のデータ転送に使用されます。agentモードでは、ほとんどの大規模モデルもJSONを読み取り、理解することができます。
object
Pythonの辞書オブジェクトで、自動的にJSONにシリアライズされます。
変数
非ストリーミング出力の変数の場合、以下のインターフェースを使用して返すことができます。複数作成した場合、後者が前者を上書きします。
ストリーミング変数
「タイプライター」効果でテキストを出力したい場合は、ストリーミング変数を使用してテキストを出力できます。chatflow
アプリケーションでanswer
ノードを使用し、この変数を参照すると、テキストは「タイプライター」効果で出力されます。ただし、現在この方法は文字列型のデータのみをサポートしています。
カスタム変数の返却
workflow
アプリケーションでtool
の出力変数を参照したい場合は、出力される可能性のある変数を事前に定義する必要があります。Difyプラグインは、json_schema
形式の出力変数定義をサポートしています。以下に簡単な例を示します。
上記のサンプルコードは、簡単なツールを定義し、それにoutput_schema
を指定しています。これにはname
フィールドが含まれており、この時点でworkflow
内でこのフィールドを参照できます。ただし、実際に使用するためには、ツールの実装コードで変数を返す必要があることに注意してください。そうしないと、None
の戻り結果が得られます。