Skip to main content
このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
エージェント戦略プラグインは、ツールの選択・呼び出しと結果の処理という推論・意思決定ロジックを LLM に与え、自律的に問題を解決できるようにします。 本ガイドでは、モデルが自分で現在時刻を取得する Function Calling 戦略を構築します。

前提条件

  • Difyプラグインスキャフォールディングツール
  • Python環境(バージョン 3.12)
プラグイン開発ツールの準備の詳細については、CLI を参照してください。
ターミナルで dify version を実行して、スキャフォールディングツールがインストールされていることを確認してください。

1. プラグインテンプレートの初期化

以下のコマンドを実行して、エージェントプラグインの開発テンプレートを作成します:
画面上のプロンプトに従ってください。以下のコメントが各選択肢を説明しています。
初期化により、プラグイン開発に必要なすべてのリソースを含むフォルダが作成されます:
このプラグインのすべての主要機能はstrategies/ディレクトリにあります。

2. プラグインの開発

エージェント戦略プラグインの開発は、2つのファイルを中心に行われます:
  • プラグイン宣言strategies/basic_agent.yaml
  • プラグイン実装strategies/basic_agent.py

2.1 パラメータの定義

まず strategies/basic_agent.yaml でプラグインのパラメータを宣言します。これらのパラメータは、LLM の呼び出しやツールの使用など、プラグインのコア機能を支えます。 最初は以下の 4 つのパラメータから始めることをお勧めします:
  • model: 呼び出す大規模言語モデル(例:GPT-4、GPT-4o-mini)。
  • tools: プラグインの機能を拡張するツールのリスト。
  • query: モデルに送信されるユーザー入力またはプロンプトの内容。
  • maximum_iterations: 過度な計算を防ぐための最大イテレーション数。
例:
Dify はこれらのパラメータ宣言から設定インターフェースを自動的に生成します:
エージェント戦略プラグインの UI

2.2 パラメータの取得と実行

ユーザーがこれらのフィールドを入力すると、プラグインは送信された値を受け取ります。strategies/basic_agent.py で、受信パラメータを検証する Pydantic モデルを定義します:
次に _invoke でパラメータを解析し、戦略ロジックを実行します:

3. モデルの呼び出し

モデルの呼び出しはエージェント戦略の中心です。SDK の session.model.llm.invoke() を使用して、テキスト生成や対話などのために LLM を呼び出します。 LLM にツール呼び出しを駆動させるには、各ツールのインターフェースに一致する構造化された引数、つまりユーザーの指示から導き出した、ツールが受け入れ可能な入力を出力する必要があります。 このメソッドは以下のパラメータを受け取ります:
  • model
  • prompt_messages
  • tools
  • stop
  • stream
メソッドシグネチャ:
完全な実装は、下記のサンプルコードにある Invoke Model タブを参照してください。 これにより、ユーザーがコマンドを入力するたびにプラグインが LLM を呼び出し、モデルの出力からツール呼び出しのパラメータを構築し、設定済みのツールをモデルにディスパッチさせて複雑なタスクを完了します。
ツール生成のためのリクエストパラメータ

4. ツールの呼び出し

モデルがツールパラメータを生成した後、プラグインは実際にこれらのツールを呼び出す必要があります。session.tool.invoke() を使用してこれらのリクエストを行います。 このメソッドは以下のパラメータを受け取ります:
  • provider
  • tool_name
  • parameters
メソッドシグネチャ:
LLM 自体にツール呼び出しパラメータを生成させるには、モデルが抽出したツール呼び出しを呼び出しコードに渡します:
これで、プラグインは Function Calling を自動的に実行できます。例えば、現在時刻の取得です。
ツール呼び出し

5. ログの作成

複雑なタスクには通常、複数のステップが必要です。決定を分析して戦略を改善するには、各ステップの結果を追跡する必要があります。SDK の create_log_messagefinish_log_message を使用すると、各呼び出しの前後で状態を記録でき、問題診断が速くなります。 例えば:
  • モデルを呼び出す前に「モデル呼び出しを開始」というメッセージをログに記録し、実行進捗を示します。
  • モデルが応答したら「呼び出し成功」というメッセージをログに記録し、出力をエンドツーエンドで追跡できるようにします。
セットアップが完了すると、ワークフローログに実行結果が表示されます:
エージェント出力の実行結果
タスクが複数ラウンドにわたる場合は、ログ呼び出しで parent パラメータを設定してログを階層的にネストし、追跡しやすくします:

サンプルコード

以下のコードは、エージェント戦略プラグインにモデルを呼び出す機能を付与します:

6. プラグインのデバッグ

宣言ファイルと実装コードが完成したら、プラグインが正しく動作することを確認します。Dify はリモートデバッグに対応しています。プラグイン管理 に移動して、デバッグキーとリモートサーバーアドレスを取得してください。
プラグイン管理のデバッグキーとリモートサーバーアドレス
プラグインプロジェクトで、.env.example.env にコピーし、リモートサーバーアドレスとデバッグキーを入力します。
次に実行します:
プラグインはワークスペースに表示され、チームメンバーもアクセスできます。
プラグインのブラウズ

プラグインのパッケージング(オプション)

すべてが正常に動作したら、以下を実行してプラグインをパッケージングします:
現在のフォルダにbasic_agent.difypkg(プラグイン名と一致)という名前のファイルが表示されます。これが最終的なプラグインパッケージです。 おめでとうございます!エージェント戦略プラグインの開発、テスト、パッケージングが完了しました。

プラグインの公開(オプション)

プラグインパッケージを Dify プラグインリポジトリ にアップロードできます。その前に、プラグイン公開ガイドライン を満たしていることを確認してください。承認されると、コードがメインブランチにマージされ、プラグインは自動的に Dify マーケットプレイス で公開されます。

さらなる探求

複雑なタスクには、複数ラウンドの思考とツール呼び出しが必要になることが多く、タスクが終了するか反復上限に達するまで「モデル呼び出し → ツール使用」のサイクルを繰り返します。このプロセスでは、プロンプトを適切に管理することが重要です。モデルが外部ツールを呼び出してその出力を処理するための標準化されたアプローチについては、完全な Function Calling 実装 を参照してください。
Last modified on June 24, 2026