モデル設計ルール
本書では、Difyモデルプラグイン開発のコアコンセプトと構造を詳細に定義します。これには、モデルプロバイダー(Provider)、AIモデルエンティティ(AIModelEntity)、モデルタイプ(ModelType)、設定方法(ConfigurateMethod)、モデル特性(ModelFeature)、パラメータルール(ParameterRule)、価格設定(PriceConfig)、およびさまざまな認証情報スキーマの詳細なデータ構造仕様が含まれます。
- モデルプロバイダールールは Provider エンティティに基づきます。
- モデルルールは AIModelEntity エンティティに基づきます。
以下のすべてのエンティティは
Pydantic BaseModel
に基づいており、entities
モジュールに対応するエンティティがあります。
Provider
provider
(string) プロバイダー識別子、例:openai
label
(object) プロバイダー表示名、i18n、en_US
英語、zh_Hans
中国語の2言語設定可能zh_Hans
(string) [optional] 中国語ラベル名、zh_Hans
を設定しない場合はデフォルトでen_US
が使用されます。en_US
(string) 英語ラベル名
description
(object) [optional] プロバイダー説明、i18nzh_Hans
(string) [optional] 中国語説明en_US
(string) 英語説明
icon_small
(string) [optional] プロバイダー小アイコン、対応するプロバイダー実装ディレクトリ下の_assets
ディレクトリに保存、中英ポリシーはlabel
と同様zh_Hans
(string) [optional] 中国語アイコンen_US
(string) 英語アイコン
icon_large
(string) [optional] プロバイダー大アイコン、対応するプロバイダー実装ディレクトリ下の_assets
ディレクトリに保存、中英ポリシーはlabel
と同様zh_Hans
(string) [optional] 中国語アイコンen_US
(string) 英語アイコン
background
(string) [optional] 背景色カラーコード、例:#FFFFFF、空の場合はフロントエンドのデフォルトカラー値が表示されます。help
(object) [optional] ヘルプ情報title
(object) ヘルプタイトル、i18nzh_Hans
(string) [optional] 中国語タイトルen_US
(string) 英語タイトル
url
(object) ヘルプリンク、i18nzh_Hans
(string) [optional] 中国語リンクen_US
(string) 英語リンク
supported_model_types
(array[ModelType]) サポートされるモデルタイプconfigurate_methods
(array[ConfigurateMethod]) 設定方法provider_credential_schema
([ProviderCredentialSchema]) プロバイダー認証情報スキーマmodel_credential_schema
([ModelCredentialSchema]) モデル認証情報スキーマ
AIModelEntity
model
(string) モデル識別子、例:gpt-3.5-turbo
label
(object) [optional] モデル表示名、i18n、en_US
英語、zh_Hans
中国語の2言語設定可能zh_Hans
(string) [optional] 中国語ラベル名en_US
(string) 英語ラベル名
model_type
(ModelType) モデルタイプfeatures
(array[ModelFeature]) [optional] サポート機能リストmodel_properties
(object) モデルプロパティmode
(LLMMode) モード (モデルタイプllm
で利用可能)context_size
(int) コンテキストサイズ (モデルタイプllm
text-embedding
で利用可能)max_chunks
(int) 最大チャンク数 (モデルタイプtext-embedding moderation
で利用可能)file_upload_limit
(int) ファイル最大アップロード制限、単位:MB。(モデルタイプspeech2text
で利用可能)supported_file_extensions
(string) サポートされるファイル拡張子、例:mp3,mp4(モデルタイプspeech2text
で利用可能)default_voice
(string) デフォルトボイス、必須:alloy,echo,fable,onyx,nova,shimmer(モデルタイプtts
で利用可能)voices
(list) 選択可能なボイスリスト。mode
(string) ボイスモデル。(モデルタイプtts
で利用可能)name
(string) ボイスモデル表示名。(モデルタイプtts
で利用可能)language
(string) ボイスモデルがサポートする言語。(モデルタイプtts
で利用可能)
word_limit
(int) 1回の変換文字数制限、デフォルトは段落ごとに分割(モデルタイプtts
で利用可能)audio_type
(string) サポートされる音声ファイル拡張子、例:mp3,wav(モデルタイプtts
で利用可能)max_workers
(int) サポートされるテキスト音声変換の同時実行タスク数(モデルタイプtts
で利用可能)max_characters_per_chunk
(int) 各チャンクの最大文字数 (モデルタイプmoderation
で利用可能)
parameter_rules
(array[ParameterRule]) [optional] モデル呼び出しパラメータールールpricing
([PriceConfig]) [optional] 価格情報deprecated
(bool) 非推奨かどうか。非推奨の場合、モデルリストには表示されなくなりますが、既に設定されているものは引き続き使用可能です。デフォルトは False。
ModelType
llm
テキスト生成モデルtext-embedding
テキスト埋め込みモデルrerank
Rerank モデルspeech2text
音声テキスト変換tts
テキスト音声合成moderation
モデレーション
ConfigurateMethod
predefined-model
事前定義モデル
ユーザーは統一されたプロバイダー認証情報を設定するだけで、プロバイダー下の事前定義モデルを使用できることを示します。
customizable-model
カスタマイズ可能モデル
ユーザーは各モデルの認証情報設定を新たに追加する必要があります。
fetch-from-remote
リモートから取得
predefined-model
の設定方法と同様に、統一されたプロバイダー認証情報を設定するだけで、モデルは認証情報を通じてプロバイダーから取得されます。
ModelFeature
agent-thought
エージェント思考、通常70Bを超えると思考連鎖能力があります。vision
ビジョン、すなわち画像理解。tool-call
ツール呼び出しmulti-tool-call
マルチツール呼び出しstream-tool-call
ストリーミングツール呼び出し
FetchFrom
predefined-model
事前定義モデルfetch-from-remote
リモートモデル
LLMMode
completion
テキスト補完chat
対話
ParameterRule
name
(string) モデル呼び出し時の実際のパラメータ名use_template
(string) [optional] テンプレートを使用
テンプレートの具体的な使用方法については、新しいモデルプロバイダーの作成の例を参照してください。
デフォルトで5種類の変数コンテンツ設定テンプレートがプリセットされています:
temperature
top_p
frequency_penalty
presence_penalty
max_tokens
use_template
に直接テンプレート変数名を設定すると、entities.defaults.PARAMETER_RULE_TEMPLATE
のデフォルト設定が使用され、name
と use_template
以外のすべてのパラメータを設定する必要はありません。追加の設定パラメータが設定された場合、デフォルト設定が上書きされます。openai/llm/gpt-3.5-turbo.yaml
を参照してください。
label
(object) [optional] ラベル、i18nzh_Hans
(string) [optional] 中国語ラベル名en_US
(string) 英語ラベル名type
(string) [optional] パラメータタイプint
整数float
浮動小数点数string
文字列boolean
ブール型
help
(string) [optional] ヘルプ情報zh_Hans
(string) [optional] 中国語ヘルプ情報en_US
(string) 英語ヘルプ情報required
(bool) 必須項目かどうか、デフォルトは False。default
(int/float/string/bool) [optional] デフォルト値min
(int/float) [optional] 最小値、数値タイプのみ適用max
(int/float) [optional] 最大値、数値タイプのみ適用precision
(int) [optional] 精度、小数点以下の保持桁数、数値タイプのみ適用options
(array[string]) [optional] ドロップダウン選択肢の値、type
がstring
の場合にのみ適用、設定しない場合または null の場合は選択肢の値を制限しません
PriceConfig
input
(float) 入力単価、すなわちプロンプト単価output
(float) 出力単価、すなわち返却コンテンツ単価unit
(float) 価格単位、例えば1Mトークンで計算する場合、単価に対応する単位トークン数は0.000001
ですcurrency
(string) 通貨単位
ProviderCredentialSchema
credential_form_schemas
(array[CredentialFormSchema]) 認証情報フォームスキーマ
ModelCredentialSchema
model
(object) モデル識別子、変数名はデフォルトでmodel
label
(object) モデルフォーム項目表示名en_US
(string) 英語zh_Hans
(string) [optional] 中国語
placeholder
(object) モデルのプレースホルダーコンテンツen_US
(string) 英語zh_Hans
(string) [optional] 中国語
credential_form_schemas
(array[CredentialFormSchema]) 認証情報フォームスキーマ
CredentialFormSchema
variable
(string) フォーム項目変数名label
(object) フォーム項目ラベル名en_US
(string) 英語zh_Hans
(string) [optional] 中国語
type
(FormType) フォーム項目タイプrequired
(bool) 必須項目かどうかdefault
(string) デフォルト値options
(array[FormOption]) フォーム項目がselect
またはradio
の場合の専用プロパティ、ドロップダウン内容を定義placeholder
(object) フォーム項目がtext-input
の場合の専用プロパティ、フォーム項目のプレースホルダーen_US
(string) 英語zh_Hans
(string) [optional] 中国語
max_length
(int) フォーム項目がtext-input
の場合の専用プロパティ、入力最大長を定義、0は無制限。show_on
(array[FormShowOnObject]) 他のフォーム項目の値が条件に一致する場合に表示、空の場合は常に表示。
FormType
text-input
テキスト入力コンポーネントsecret-input
パスワード入力コンポーネントselect
単一選択ドロップダウンradio
ラジオコンポーネントswitch
スイッチコンポーネント、true
とfalse
のみをサポート
FormOption
label
(object) ラベルen_US
(string) 英語zh_Hans
(string) [optional] 中国語
value
(string) ドロップダウン選択肢の値show_on
(array[FormShowOnObject]) 他のフォーム項目の値が条件に一致する場合に表示、空の場合は常に表示。
FormShowOnObject
variable
(string) 他のフォーム項目変数名value
(string) 他のフォーム項目変数値
関連リソース
- モデルアーキテクチャ詳解 - モデルプラグインのアーキテクチャ仕様を深く理解する
- 新しいモデルの迅速な統合 - これらのルールを適用して新しいモデルを追加する方法を学ぶ
- 一般仕様定義 - プラグインマニフェストファイルの設定を理解する
- 新しいモデルプロバイダーの作成 - 全く新しいモデルプロバイダープラグインを開発する