コア仕様と機能
一般的な仕様定義
このドキュメントでは、Difyプラグイン開発における一般的な構造と仕様、パスの仕様、国際化オブジェクト(I18nObject)、プロバイダー設定フォーム構造(ProviderConfig)、モデル設定(ModelConfig)、ノードレスポンス(NodeResponse)、ツールセレクター(ToolSelector)などの重要なデータ構造の定義と用途について詳しく説明します。
本稿では、プラグイン開発で一般的に使用される構造について簡単に説明します。開発プロセス中は、全体のアーキテクチャをよりよく理解するために、プラグイン開発の基本概念および開発者向けチートシートと合わせてお読みになることを強くお勧めします。
パスの仕様
Manifestファイルまたは任意のYAMLファイルにファイルパスを記入する際、ファイルの種類に応じて以下の2つの仕様に従ってください:
- 対象ファイルが画像や動画などのマルチメディアファイルである場合(例:プラグインの
icon
を記入する場合)、これらのファイルをプラグインのルートディレクトリにある_assets
フォルダに配置する必要があります。 - 対象ファイルが
.py
や.yaml
などの通常のテキストファイル(コードファイル)である場合、プラグインプロジェクト内でのそのファイルの絶対パスを記入する必要があります。
一般的な構造
プラグインを定義する際、ツール、モデル、Endpoint間で共有できるいくつかのデータ構造があります。ここでは、これらの共通構造を定義します。
I18nObject
I18nObject
は、IETF BCP 47標準に準拠した国際化構造であり、現在サポートされている4つの言語は次のとおりです。
- en_US
- zh_Hans
- ja_Jp
- pt_BR
ProviderConfig
ProviderConfig
は、Tool
およびEndpoint
に適用可能な汎用的なプロバイダー設定フォーム構造です。
name
(string):フォーム項目の名前label
(I18nObject, 必須):IETF BCP 47に準拠type
(provider_config_type, 必須):フォームタイプscope
(provider_config_scope):オプションの範囲、type
によって変動required
(bool):必須(空にできません)default
(any):デフォルト値、基本型float
int
string
のみをサポートoptions
(list[provider_config_option]):オプション項目、typeがselect
の場合のみ使用helper
(object):ヘルプドキュメントリンクのラベル、IETF BCP 47に準拠url
(string):ヘルプドキュメントリンクplaceholder
(object):IETF BCP 47に準拠
ProviderConfigOption(object)
value
(string, 必須):値label
(object, 必須):IETF BCP 47に準拠
ProviderConfigType(string)
secret-input
(string):設定情報は暗号化されますtext-input
(string):通常のテキストselect
(string):ドロップダウンリストboolean
(bool):スイッチmodel-selector
(object):モデル設定情報、プロバイダー名、モデル名、モデルパラメータなどを含むapp-selector
(object):アプリIDtool-selector
(object):ツール設定情報、ツールプロバイダー、名前、パラメータなどを含むdataset-selector
(string):未定
ProviderConfigScope(string)
type
がmodel-selector
の場合all
llm
text-embedding
rerank
tts
speech2text
moderation
vision
type
がapp-selector
の場合all
chat
workflow
completion
type
がtool-selector
の場合all
plugin
api
workflow
ModelConfig
provider
(string):plugin_id
を含むモデルプロバイダー名。形式はlanggenius/openai/openai
のようになります。model
(string): 具体的なモデル名。model_type
(enum): モデルタイプの列挙型。モデル設計規則ドキュメントを参照できます。
NodeResponse
inputs
(dict): 最終的にノードに入力される変数。outputs
(dict): ノードの出力結果。process_data
(dict): ノード実行中に生成されるデータ。
ToolSelector
provider_id
(string): ツールプロバイダー名tool_name
(string): ツール名tool_description
(string): ツールの説明tool_configuration
(dict[str, Any]): ツールの設定情報tool_parameters
(dict[str, dict]): LLMによる推論が必要なパラメータname
(string): パラメータ名type
(string): パラメータタイプrequired
(bool): 必須かどうかdescription
(string): パラメータの説明default
(any): デフォルトoptions
(list[string]): オプション項目
関連リソース
-
プラグイン開発の基本概念 - Difyプラグイン開発の全体像を理解する
-
開発者向けチートシート - プラグイン開発でよく使われるコマンドと概念のクイックリファレンス
-
ツールプラグイン開発詳細 - ツールプラグイン開発プロセスの詳細を理解する
-
モデル設計規則 - モデル設定の仕様を理解する