⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。
この記事では、**「ツールプラグイン」**とは、ツールプロバイダーファイル、機能コード、およびその他の構造を含む完全なプロジェクトを指します。ツールプロバイダーには複数のツール(単一のツール内で提供される追加機能として理解できます)を含めることができ、構造は以下の通りです:
この記事では、Google Searchを例として、ツールプラグインを素早く開発する方法を説明します。
前提条件
- Difyプラグインスキャフォールディングツール
- Python環境、バージョン ≥ 3.12
新しいプロジェクトの作成
スキャフォールディングコマンドラインツールを実行して、新しいDifyプラグインプロジェクトを作成します。difyに名前変更し、/usr/local/binパスにコピーした場合は、以下のコマンドを実行して新しいプラグインプロジェクトを作成できます:
以下のテキストでは、difyをコマンドライン例として使用します。問題が発生した場合は、difyコマンドをコマンドラインツールのパスに置き換えてください。
プラグインタイプとテンプレートの選択
スキャフォールディングツールのすべてのテンプレートは完全なコードプロジェクトを提供します。この例では、Toolプラグインを選択します。
すでにプラグイン開発に精通しており、テンプレートに依存する必要がない場合は、一般仕様ガイドを参照して、さまざまなタイプのプラグインの開発を完了できます。
プラグイン権限の設定
プラグインは、Difyプラットフォームから読み取る権限も必要です。このサンプルプラグインに以下の権限を付与します:- Tools
- Apps
- 永続ストレージStorageを有効にし、デフォルトサイズのストレージを割り当てる
- Endpointsの登録を許可
ターミナルの矢印キーを使用して権限を選択し、「Tab」ボタンを使用して権限を付与します。すべての権限項目をチェックした後、Enterを押してプラグインの作成を完了します。システムは自動的にプラグインプロジェクトコードを生成します。
ツールプラグインの開発
1. ツールプロバイダーファイルの作成
ツールプロバイダーファイルはyaml形式のファイルで、ツールプラグインの基本設定エントリとして理解でき、ツールに必要な認証情報を提供するために使用されます。 プラグインテンプレートプロジェクトの/providerパスに移動し、yamlファイルをgoogle.yamlに名前変更します。このyamlファイルには、プロバイダーの名前、アイコン、作者などのツールプロバイダーに関する情報が含まれます。この情報は、プラグインのインストール時に表示されます。
サンプルコード
/toolsディレクトリにあることを確認してください。完全なパスは以下の通りです:
google.yamlは、プラグインプロジェクト内の絶対パスを使用する必要があります。この例では、プロジェクトのルートディレクトリに配置されています。YAMLファイルのidentityフィールドは以下のように説明されます:identityには、作者、名前、ラベル、説明、アイコンなど、ツールプロバイダーに関する基本情報が含まれています。
- アイコンは添付リソースである必要があり、プロジェクトのルートディレクトリの
_assetsフォルダに配置する必要があります。 - タグは、ユーザーがカテゴリを通じてプラグインを素早く見つけるのに役立ちます。以下は現在サポートされているすべてのタグです。
2. サードパーティサービス認証情報の完成
開発の便宜のため、サードパーティサービスSerpApiが提供するGoogle Search APIを使用することを選択します。SerpApiは使用にAPI Keyが必要なため、yamlファイルにcredentials_for_providerフィールドを追加する必要があります。
完全なコードは以下の通りです:
credentials_for_providerのサブレベル構造は、一般仕様の要件を満たす必要があります。- プロバイダーに含まれるツールを指定する必要があります。この例では、
tools/google_search.yamlファイルのみが含まれています。 - プロバイダーとして、基本情報を定義するだけでなく、そのコードロジックの一部を実装する必要があるため、その実装ロジックを指定する必要があります。この例では、機能のコードファイルを
google.pyに配置しますが、まだ実装せず、最初にgoogle_searchのコードを書きます。
3. ツールYAMLファイルの記入
ツールプラグインには複数のツール機能を持たせることができ、各ツール機能には、ツール機能の基本情報、パラメータ、出力などを記述するyamlファイルが必要です。
引き続きGoogleSearchツールを例として、/toolsフォルダに新しいgoogle_search.yamlファイルを作成します。
identityには、名前、作者、ラベル、説明などのツールの基本情報が含まれています。parametersパラメータリストname(必須)パラメータ名、一意で、他のパラメータと同じ名前を持つことはできません。type(必須)パラメータタイプ、現在string、number、boolean、select、secret-inputの5つのタイプをサポートしており、それぞれ文字列、数値、ブール値、ドロップダウン、暗号化入力ボックスに対応しています。機密情報にはsecret-inputタイプを使用してください。label(必須)パラメータラベル、フロントエンド表示用。form(必須)フォームタイプ、現在llm、formの2つのタイプをサポートしています。- エージェントアプリケーションでは、
llmはパラメータがLLM自体によって推論されることを意味し、formはこのツールを使用するために事前にパラメータを設定できることを意味します。 - ワークフローアプリケーションでは、
llmとformの両方をフロントエンドで入力する必要がありますが、llmパラメータはツールノードの入力変数として使用されます。
- エージェントアプリケーションでは、
required必須かどうかllmモードでは、パラメータが必須の場合、エージェントはこのパラメータを推論する必要があります。formモードでは、パラメータが必須の場合、ユーザーは会話開始前にフロントエンドでこのパラメータを入力する必要があります。
optionsパラメータオプションllmモードでは、Difyはすべてのオプションをモデルに渡し、モデルはこれらのオプションに基づいて推論できます。formモードでは、typeがselectの場合、フロントエンドはこれらのオプションを表示します。
defaultデフォルト値。min最小値、パラメータタイプがnumberの場合に設定できます。max最大値、パラメータタイプがnumberの場合に設定できます。human_descriptionフロントエンド表示用の説明、複数言語をサポート。placeholder入力フィールドのプロンプトテキスト、フォームタイプがformでパラメータタイプがstring、number、secret-inputの場合に設定でき、複数言語をサポート。llm_descriptionモデルに渡される説明。モデルがこのパラメータをより良く理解できるように、このパラメータに関するできるだけ詳細な情報をここに記述して、モデルがパラメータを理解できるようにしてください。
4. ツールコードの準備
ツールの設定情報を入力した後、ツールの機能のコードを書き始め、ツールの論理的な目的を実装できます。/toolsディレクトリにgoogle_search.pyを作成し、以下の内容を記述します:
serpapiにリクエストを送信し、self.create_json_messageを使用してフォーマットされたjsonデータ文字列を返すことを意味します。返却データタイプの詳細については、プラグインのリモートデバッグと永続ストレージKVドキュメントを参照してください。
4. ツールプロバイダーコードの完成
最後に、認証情報の検証ロジックを実装するプロバイダーの実装コードを作成する必要があります。認証情報の検証が失敗した場合、ToolProviderCredentialValidationError例外がスローされます。検証が成功すると、google_searchツールサービスが正しくリクエストされます。
/providerディレクトリにgoogle.pyファイルを作成し、以下の内容を記述します:
プラグインのデバッグ
プラグインの開発が完了したら、プラグインが正常に機能するかどうかをテストする必要があります。Difyは、テスト環境でプラグインの機能を素早く検証するのに役立つ便利なリモートデバッグ方法を提供しています。 「プラグイン管理」ページに移動して、リモートサーバーアドレスとデバッグキーを取得します。
プラグインプロジェクトに戻り、.env.exampleファイルをコピーして.envに名前変更し、取得したリモートサーバーアドレスとデバッグキー情報を入力します。
.envファイル:
python -m mainコマンドを実行してプラグインを起動します。プラグインページで、プラグインがワークスペースにインストールされていることを確認でき、チームの他のメンバーもプラグインにアクセスできます。
プラグインのパッケージング(オプション)
プラグインが正常に実行できることを確認した後、以下のコマンドラインツールを使用してプラグインをパッケージ化して名前を付けることができます。実行後、現在のフォルダにgoogle.difypkgファイルが作成されます。これが最終的なプラグインパッケージです。
プラグインの公開(オプション)
プラグインをDify Marketplaceに公開したい場合は、プラグインがDify Marketplaceへの公開の仕様に従っていることを確認してください。レビューに合格すると、コードはメインブランチにマージされ、自動的にDify Marketplaceで公開されます。 公開の概要さらに探索
クイックスタート:
プラグインインターフェースドキュメント:
- 一般仕様 - マニフェスト構造とツール仕様
- Endpoint - 詳細なEndpointの定義
- リバース呼び出し - Dify機能のリバース呼び出し
- モデルスキーマ - モデル
- エージェントプラグイン - エージェント戦略の拡張
次の学習ステップ
- プラグインのリモートデバッグ - より高度なデバッグテクニックを学ぶ
- 永続ストレージ - プラグインでのデータストレージの使用方法を学ぶ
- Slack Botプラグイン開発例 - より複雑なプラグイン開発ケースを見る
- ツールプラグイン - ツールプラグインの高度な機能を探索
Edit this page | Report an issue