---
dimensions:
  type:
    primary: reference
    detail: core
  level: beginner
standard_title: Model Designing Rules
language: ja
title: モデル設計ルール
description: 本書では、Difyモデルプラグイン開発のコアコンセプトと構造を詳細に定義します。これには、モデルプロバイダー（Provider）、AIモデルエンティティ（AIModelEntity）、モデルタイプ（ModelType）、設定方法（ConfigurateMethod）、モデル特性（ModelFeature）、パラメータルール（ParameterRule）、価格設定（PriceConfig）、およびさまざまな認証情報スキーマの詳細なデータ構造仕様が含まれます。
---

* モデルプロバイダールールは [Provider](#provider) エンティティに基づきます。
* モデルルールは [AIModelEntity](#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] プロバイダー説明、i18n
  * `zh_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) ヘルプタイトル、i18n
    * `zh_Hans` (string) \[optional] 中国語タイトル
    * `en_US` (string) 英語タイトル
  * `url` (object) ヘルプリンク、i18n
    * `zh_Hans` (string) \[optional] 中国語リンク
    * `en_US` (string) 英語リンク
* `supported_model_types` (array\[[ModelType](#modeltype)]) サポートされるモデルタイプ
* `configurate_methods` (array\[[ConfigurateMethod](#configuratemethod)]) 設定方法
* `provider_credential_schema` (\[[ProviderCredentialSchema](#providercredentialschema)]) プロバイダー認証情報スキーマ
* `model_credential_schema` (\[[ModelCredentialSchema](#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](#modeltype)) モデルタイプ
* `features` (array\[[ModelFeature](#modelfeature)]) \[optional] サポート機能リスト
* `model_properties` (object) モデルプロパティ
  * `mode` ([LLMMode](#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](#parameterrule)]) \[optional] モデル呼び出しパラメータールール
* `pricing` (\[[PriceConfig](#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] テンプレートを使用

> テンプレートの具体的な使用方法については、[新しいモデルプロバイダーの作成](/plugin-dev-ja/0222-creating-new-model-provider)の例を参照してください。

デフォルトで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] ラベル、i18n
* `zh_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](#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)]) 認証情報フォームスキーマ

### CredentialFormSchema

* `variable` (string) フォーム項目変数名
* `label` (object) フォーム項目ラベル名
  * `en_US`(string) 英語
  * `zh_Hans` (string) \[optional] 中国語
* `type` ([FormType](#formtype)) フォーム項目タイプ
* `required` (bool) 必須項目かどうか
* `default`(string) デフォルト値
* `options` (array\[[FormOption](#formoption)]) フォーム項目が `select` または `radio` の場合の専用プロパティ、ドロップダウン内容を定義
* `placeholder`(object) フォーム項目が `text-input` の場合の専用プロパティ、フォーム項目のプレースホルダー
  * `en_US`(string) 英語
  * `zh_Hans` (string) \[optional] 中国語
* `max_length` (int) フォーム項目が`text-input`の場合の専用プロパティ、入力最大長を定義、0は無制限。
* `show_on` (array\[[FormShowOnObject](#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)]) 他のフォーム項目の値が条件に一致する場合に表示、空の場合は常に表示。

#### FormShowOnObject

* `variable` (string) 他のフォーム項目変数名
* `value` (string) 他のフォーム項目変数値

## 関連リソース

- [モデルアーキテクチャ詳解](/plugin-dev-ja/0412-model-schema) - モデルプラグインのアーキテクチャ仕様を深く理解する
- [新しいモデルの迅速な統合](/plugin-dev-ja/0211-getting-started-new-model) - これらのルールを適用して新しいモデルを追加する方法を学ぶ
- [一般仕様定義](/plugin-dev-ja/0411-general-specifications) - プラグインマニフェストファイルの設定を理解する
- [新しいモデルプロバイダーの作成](/plugin-dev-ja/0222-creating-new-model-provider) - 全く新しいモデルプロバイダープラグインを開発する

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[このページを編集する](https://github.com/langgenius/dify-docs/edit/main/plugin-dev-ja/0411-model-designing-rules.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

