Skip to main content
⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。
エージェント戦略プラグインは、LLMが推論や意思決定などのタスクを実行する際に役立ちます。これには、ツールの選択と呼び出し、および結果の処理が含まれます。これにより、システムはより自律的に問題に対処できるようになります。 以下では、現在時刻を自動的に取得するためのFunction Callingをサポートするプラグインの開発方法を説明します。

前提条件

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

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

以下のコマンドを実行して、エージェントプラグインの開発テンプレートを作成します:
画面上のプロンプトに従い、サンプルコメントをガイダンスとして参照してください。
初期化後、プラグイン開発に必要なすべてのリソースを含むフォルダが作成されます。エージェント戦略プラグインの全体的な構造を理解することで、開発プロセスがスムーズになります:
このプラグインのすべての主要機能はstrategies/ディレクトリにあります。

2. プラグインの開発

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

2.1 パラメータの定義

エージェントプラグインを構築するには、まずstrategies/basic_agent.yamlで必要なパラメータを指定します。これらのパラメータは、LLMの呼び出しやツールの使用など、プラグインのコア機能を定義します。 最初に以下の4つのパラメータを含めることをお勧めします:
  1. model: 呼び出す大規模言語モデル(例:GPT-4、GPT-4o-mini)。
  2. tools: プラグインの機能を拡張するツールのリスト。
  3. query: モデルに送信されるユーザー入力またはプロンプトの内容。
  4. maximum_iterations: 過度な計算を防ぐための最大反復回数。
サンプルコード:
これらのパラメータを設定すると、プラグインは自動的にユーザーフレンドリーなインターフェースを生成し、簡単に管理できるようになります: Agent Strategy Plugin UI

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

ユーザーがこれらの基本フィールドを入力した後、プラグインは送信されたパラメータを処理する必要があります。strategies/basic_agent.pyで、エージェント用のパラメータクラスを定義し、ロジック内でこれらのパラメータを取得して適用します。 受信パラメータを検証:
パラメータを取得した後、具体的なビジネスロジックが実行されます:

3. モデルの呼び出し

エージェント戦略プラグインでは、モデルの呼び出しがワークフローの中心です。SDKのsession.model.llm.invoke()を使用して、テキスト生成、対話などを処理し、LLMを効率的に呼び出すことができます。 LLMにツールを処理させたい場合は、ツールのインターフェースに一致する構造化されたパラメータを出力するようにします。つまり、LLMはユーザーの指示に基づいて、ツールが受け入れられる入力引数を生成する必要があります。 以下のパラメータを構築します:
  • model
  • prompt_messages
  • tools
  • stop
  • stream
メソッド定義のサンプルコード:
完全な機能実装を確認するには、モデル呼び出しのサンプルコードを参照してください。 このコードは以下の機能を実現します:ユーザーがコマンドを入力すると、エージェント戦略プラグインは自動的にLLMを呼び出し、生成された結果に基づいてツール呼び出しに必要なパラメータを構築し、モデルが統合されたツールを柔軟にディスパッチして複雑なタスクを効率的に完了できるようにします。 ツール生成のためのリクエストパラメータ

4. ツールの処理

ツールパラメータを指定した後、エージェント戦略プラグインは実際にこれらのツールを呼び出す必要があります。session.tool.invoke()を使用してこれらのリクエストを行います。 以下のパラメータを構築します:
  • provider
  • tool_name
  • parameters
メソッド定義のサンプルコード:
LLM自体にツール呼び出しに必要なパラメータを生成させたい場合は、モデルの出力とツール呼び出しコードを組み合わせることで実現できます。
これにより、エージェント戦略プラグインは自動的にFunction Callingを実行できるようになります。例えば、現在時刻を取得することができます。 ツール呼び出し

5. ログの作成

エージェント戦略プラグインで複雑なタスクを完了するには、複数のステップが必要になることがよくあります。開発者が各ステップの結果を追跡し、意思決定プロセスを分析し、戦略を最適化することは非常に重要です。SDKのcreate_log_messagefinish_log_messageを使用することで、呼び出しの前後のリアルタイムの状態をログに記録し、迅速な問題診断に役立てることができます。 例えば:
  • モデルを呼び出す前に「モデル呼び出しを開始」というメッセージをログに記録し、タスクの実行進捗を明確にします。
  • モデルが応答したら「呼び出し成功」というメッセージをログに記録し、モデルの出力をエンドツーエンドで追跡できるようにします。
セットアップが完了すると、ワークフローログに実行結果が出力されます: エージェント出力の実行結果 複数ラウンドのログが発生する場合は、ログ呼び出しでparentパラメータを設定することで階層構造にし、追跡しやすくすることができます。 参照メソッド:

エージェントプラグイン機能のサンプルコード

モデルの呼び出し

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

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

プラグインの宣言ファイルと実装コードを完成させた後、プラグインディレクトリでpython -m mainを実行して再起動します。次に、プラグインが正しく動作することを確認します。Difyはリモートデバッグを提供しています。プラグイン管理に移動して、デバッグキーとリモートサーバーアドレスを取得してください。 プラグインプロジェクトに戻り、.env.example.envにコピーし、関連するリモートサーバーとデバッグキー情報を挿入します。
次に実行します:
ワークスペースにプラグインがインストールされ、チームメンバーもアクセスできるようになります。 プラグインのブラウズ

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

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

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

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

さらなる探求

複雑なタスクには、複数ラウンドの思考とツール呼び出しが必要になることが多く、通常はモデル呼び出し → ツール使用をタスクが終了するか最大反復回数に達するまで繰り返します。このプロセスでは、プロンプトを効果的に管理することが重要です。完全なFunction Calling実装を参照して、モデルが外部ツールを呼び出し、その出力を処理するための標準化されたアプローチを確認してください。
このページを編集する | 問題を報告する