このドキュメントでは、DifyのAgent戦略プラグインの開発プロセスについて詳しく説明します。ManifestファイルへのAgent戦略フィールドの追加、Agentプロバイダーの定義、Agent戦略を実装するためのコアステップが含まれます。パラメータの取得、モデルの呼び出し、ツールの呼び出し、ログの生成と管理に関する完全なサンプルコードも詳細に解説しています。
manifest.yaml
ファイル内にplugins.agent_strategies
フィールドを新たに追加し、Agentプロバイダーも定義する必要があります。サンプルコードは以下の通りです。
manifest
ファイル内の一部の無関係なフィールドは省略されています。Manifestの詳細な形式については、マニフェストファイルによるプラグイン情報の定義ドキュメントを参照してください。
agent.yaml
ファイルを新規作成し、基本的なAgentプロバイダー情報を入力する必要があります。
function_calling.yaml
戦略ファイルのみが指定されています。
function_calling.yaml
ファイルを新規作成します:
Tool
標準形式に似ており、model
、tools
、query
、max_iterations
など合計4つのパラメータを定義し、最も基本的なAgent戦略の実装を容易にします。このコードの意味は、ユーザーがモデルと使用するツールを選択し、最大反復回数を設定し、最終的にqueryを渡してAgentの実行を開始できるようにすることです。
model
タイプのパラメータはmodel-selector
であり、tool
タイプのパラメータは特殊なarray[tools]
です。パラメータで取得された形式は、SDKに組み込まれているAgentModelConfig
とlist[ToolEntity]
を使用して変換できます。
session.model.invoke()
関数を使用してモデルを呼び出します。model
から必要な入力パラメータを取得できます。
invoke model
のメソッドシグネチャのサンプルコード:
model_config
、プロンプト情報prompt_messages
、およびツール情報tools
を渡す必要があります。
そのうちprompt_messages
パラメータは以下のサンプルコードを参照して呼び出すことができますが、tool_messages
は一定の変換が必要です。
invoke model
の使用方法のサンプルコードを参照してください:
self.session.tool.invoke()
を使用して呼び出すことができます。invoke tool
のメソッドシグネチャのサンプルコード:
provider_type
、provider
、tool_name
、parameters
です。そのうちtool_name
とparameters
は、Function CallingではLLMによって生成されることがよくあります。invoke tool
の使用例コード:
self.session.tool.invoke()
関数の出力はGeneratorであり、同様にストリーミング解析が必要であることを意味します。
解析方法については、以下の関数を参照してください:
AgentLogMessage
を作成して返します。このMessageはログ内のツリーのノードを表します。parent
が渡された場合、そのノードは親ノードを持つことを示します。label
は、最終的にユーザーにログのタイトルを表示するために使用されます。start
状態を選択した場合、ログ完了インターフェースを使用してステータスを変更できます。