ドキュメント再編の一環として、このページは段階的に廃止されます。
このカードをクリックして、最新情報が含まれる更新版にリダイレクトしてください。
新しいドキュメントに不一致や改善が必要な箇所を見つけた場合は、ページ下部の「問題を報告」ボタンを使用してください。
GoogleSearch
を例に、ツールプラグインを迅速に開発する方法をご紹介します。
dify
に変更し、/usr/local/bin
ディレクトリにコピーした場合は、次のコマンドを実行して新しいプラグインプロジェクトを作成できます。
以下、コマンドラインツールdify
を使用します。もし問題が発生した場合は、dify
コマンドを、お使いのツールの実行パスに置き換えてください。
プラグイン開発に精通されている方は、各種プラグインの実装にあたり、スキーマ仕様をご参照ください。
ターミナルで方向キーを使って権限を選択し、“タグ”のブタンで権限を付与してください。すべての権限項目にチェックを入れたら、Enterキーを押してプラグインの作成を完了させてください。システムが自動的にプラグインプロジェクトのコードを生成します。
yaml
ファイルの記述方法について説明します。
/provider
ディレクトリに移動し、その中にある yaml ファイルの名前を google.yaml
に変更します。この yaml
ファイルには、プロバイダー名、アイコン、作成者など、ツールプロバイダーに関する情報が含まれます。これらの情報は、プラグインのインストール時に表示されます。
サンプルコード
identity
には、作成者、名前、ラベル、説明、アイコンなど、ツールプロバイダーの基本的な情報が含まれます。
_assets
フォルダに配置する必要があります。/tools
ディレクトリにあることを確認してください。完全なパスは次のようになります。
google.yaml
ファイルのパスは、プラグインプロジェクト内の絶対パスで指定する必要があります。
SerpApi
が提供する Google Search API を利用することにしました。SerpApi
を使用するには API キーが必要となるため、yaml
ファイルに credentials_for_provider
フィールドを追加する必要があります。
完全なコードは次のとおりです。
credentials_for_provider
の子構造は、ProviderConfig の仕様に準拠する必要があります。tools/google_search.yaml
ファイルが 1 つだけ含まれています。google.py
に配置されていますが、ここではまだ実装せず、先に google_search
のコードを作成します。これは、google_search
の機能が google.py
の実装に依存するためです。yaml
ファイルによって定義される必要があります。
ここでは、GoogleSearch
ツールを例にとり、/tools
フォルダに新しい google_search.yaml
ファイルを作成する手順を見ていきましょう。
identity
: ツールの名前、作成者、ラベル、説明といった基本的な情報が含まれます。parameters
: パラメータに関する設定項目です。各項目の詳細は以下の通りです。
name
(必須): パラメータ名。一意である必要があり、他のパラメータ名との重複は許容されません。type
(必須): パラメータの型。string
(文字列)、number
(数値)、boolean
(真偽値)、select
(選択式ドロップダウン)、secret-input
(暗号化入力フィールド)、file
(ファイル)、files
(ファイルセット)、model-selector
(モデル選択)、app-selector
(アプリケーション選択) の9種類がサポートされています。機密性の高い情報を取り扱う場合は、必ず secret-input
型を使用してください。label
(必須): パラメータのラベル。フロントエンドに表示される際に用いられます。form
(必須): フォームの種類。llm
と form
の2種類がサポートされています。
llm
はパラメータがLLMによって推論されることを意味し、form
はツールを使用する前にユーザーが設定できるパラメータを意味します。llm
と form
の両方のパラメータに対してフロントエンドでの入力が求められます。ただし、llm
パラメータはツールノードの入力変数として機能します。required
: 必須項目であるかどうかを示すフラグです。
llm
モードの場合、required
が true
に設定されたパラメータは、Agentが推論によって値を決定する必要があります。form
モードの場合、required
が true
に設定されたパラメータは、ユーザーが会話を開始する前にフロントエンドで値を入力する必要があります。options
: パラメータの選択肢。
llm
モードでは、Dify はすべての選択肢をLLMに渡し、LLM はこれらの選択肢に基づいて推論を行います。form
モードでは、type
が select
に設定されている場合、フロントエンドにこれらの選択肢が表示されます。default
: デフォルト値。min
: 最小値。パラメータの型が number
の場合に設定可能です。max
: 最大値。パラメータの型が number
の場合に設定可能です。human_description
: フロントエンドに表示されるパラメータの説明文です。多言語に対応しています。placeholder
: 入力フィールドに表示されるプレースホルダーテキストです。form
形式で、パラメータの型が string
、number
、secret-input
の場合に設定できます。多言語に対応しています。llm_description
: LLMに渡されるパラメータの説明文です。LLMがパラメータの内容をより深く理解できるよう、できる限り詳細な情報を提供してください。/tools
ディレクトリに google_search.py
を作成し、以下の内容を記述します。
serpapi
にリクエストを送信し、self.create_json_message
を使用して json
形式のデータを返しています。その他の戻り値の型については、ツールインターフェースドキュメントを参照してください。
ToolProviderCredentialValidationError
例外が発生します。検証に成功すると、google_search
ツールサービスが正常にリクエストされます。
/provider
ディレクトリに google.py
ファイルを作成し、以下のコードを記述します。
.env.example
ファイルをコピーして .env
にリネームし、取得したリモートサーバーアドレスとデバッグキーを入力します。
.env
ファイル
python -m main
コマンドを実行してプラグインを起動します。プラグインページで、プラグインがワークスペースにインストールされていることを確認できます。これで、他のチームメンバーもこのプラグインを使用できます。
google.difypkg
ファイルが作成されます。これがプラグインの最終的なパッケージです。