高度統合ツール
「ツール」は「プラグイン」エコシステムに完全アップグレードされました。詳しい開発手順についてはプラグイン開発をご参照ください。以下の内容はアーカイブされています。
高度接続を始める前に、クイック接続を読んで、Difyのツール接続プロセスについて基本的な理解を持っていることを確認してください。
ツールインターフェース
Toolクラスには、開発者がより複雑なツールを迅速に構築できるようにするための一連のショートカットメソッドが定義されています。
メッセージ応答
Difyはテキスト、リンク、画像、ファイルBLOBなどのさまざまなメッセージタイプをサポートしており、以下のインターフェースを使用して、LLMやユーザーに異なるタイプのメッセージを返すことができます。
注意点:以下のインターフェースの一部のパラメータは、後の章で紹介します。
画像URL
画像のURLを渡すだけで、Difyは自動的に画像をダウンロードしてユーザーに返します。
def create_image_message(self, image: str, save_as: str = '') -> ToolInvokeMessage:
"""
画像メッセージを作成
:param image: 画像のURL
:return: 画像メッセージ
"""リンク
リンクを返す必要がある場合は、以下のインターフェースを使用できます。
テキスト
テキストメッセージを返す必要がある場合は、以下のインターフェースを使用できます。
ファイルBLOB
画像、音声、動画、PPT、Word、Excelなどのファイルの生データを返す必要がある場合は、以下のインターフェースを使用できます。
blobファイルの生データ、bytesタイプmetaファイルのメタデータ、ファイルタイプが分かる場合はmime_typeを渡すことが推奨されます。そうでない場合、Difyはデフォルトでoctet/streamを使用します。
クイックツール
大規模モデル応用において、以下の2つの一般的なニーズがあります:
長文を事前に要約し、その要約内容をLLMに渡すことで、原文が長すぎてLLMが処理できない問題を防ぐ
ツールが取得した内容がリンクである場合、ウェブページ情報をスクレイピングしてからLLMに返す
これらのニーズを迅速に実現するために、以下の2つのクイックツールを提供しています。
テキスト要約ツール
このツールはuser_idと要約する必要があるテキストを入力し、要約されたテキストを返します。Difyは現在のワークスペースのデフォルトモデルを使用して長文を要約します。
ウェブスクレイピングツール
このツールはスクレイピングするウェブページのリンクとユーザーエージェント(任意)を入力し、そのウェブページ情報を含む文字列を返します。user_agentはオプションのパラメータで、ツールを識別するために使用されます。入力しない場合、Difyはデフォルトのuser_agentを使用します。
変数プール
Toolでは、ツールの実行中に生成される変数やファイルなどを保存するための変数プールを導入しています。これらの変数は、ツールの実行中に他のツールによって使用されることがあります。
以下に、DallE3とVectorizer.AIを例に、変数プールの使用方法を紹介します。
DallE3はテキストに基づいて画像を生成するツールで、ここではDallE3がカフェのロゴを生成します。Vectorizer.AIは画像をベクター画像に変換するツールで、生成された画像を無限に拡大しても劣化しないようにし、ここではDallE3が生成したPNGアイコンをベクター画像に変換し、デザイナーが実際に使用できるようにします。
DallE3
まず、DallE3を使用して画像を生成し、生成された画像を変数プールに保存します。コードは以下の通りです。
ここで、self.VARIABLE_KEY.IMAGE.valueを画像の変数名として使用していることに注意してください。開発者のツールが相互に連携できるように、このKEYを定義しました。自由に使用してもよいし、カスタムのKEYを渡しても構いません。
Vectorizer.AI
次に、Vectorizer.AIを使用して、DallE3が生成したPNGアイコンをベクター画像に変換します。ここで定義した関数を確認します。コードは以下の通りです。
次に、これらの3つの関数を実装します。
ここで注意すべきは、実際にはimage_idを使用していないことです。このツールを呼び出すときに、デフォルトの変数プールに必ず画像があると仮定しているため、直接image_binary = self.get_variable_file(self.VARIABLEを使用しています。 mage_id、私たちはこのツールを呼び出す際には必ず変数プールに画像が存在すると仮定しましたので、画像バイナリ = self.get_variable_file(self.変数キー.画像)を直接使用して画像を取得しました。モデルの能力が弱い場合、開発者の皆さんもこの方法を用いることをお勧めします。これにより、モデルが誤ったパラメータを渡すことを防ぎ、エラー許容率を効果的に向上させることができます。
Last updated