> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 模型规范

> Dify 模型插件相关实体的参考，包括 Provider、AIModelEntity、模型类型、配置方法、参数规则和凭据模式

> 本文档由 AI 自动翻译。如有任何不准确之处，请参考 [英文原版](/en/develop-plugin/features-and-specs/plugin-types/model-designing-rules)。

模型插件通过两个实体描述自身：[Provider](#provider) 负责认证并列出所支持的模型，每个模型对应一个 [AIModelEntity](#aimodelentity)，用于声明其类型、特性和参数。

<Note>
  下文所有实体均为 `dify_plugin.entities.model` 模块中的 `Pydantic BaseModel` 子类。
</Note>

## 快速决策

<CardGroup cols={2}>
  <Card title="仅需认证：预定义模型" icon="key">
    用户粘贴 API key 即可获得你的完整模型列表。设置 `configurate_methods: [predefined-model]`，并在 YAML 中定义每个模型的 AIModelEntity。
  </Card>

  <Card title="用户自备模型" icon="user-pen">
    用户自行配置模型名称和 base URL（OpenAI 兼容端点、自定义部署）。设置 `configurate_methods: [customizable-model]`，详见 [自定义模型](/zh/develop-plugin/features-and-specs/advanced-development/customizable-model)。
  </Card>

  <Card title="混合" icon="layer-group">
    内置目录加上用户添加的自定义模型。同时使用两种 `configurate_methods` 取值。
  </Card>

  <Card title="完整示例" icon="route">
    完整的端到端示例，详见 [创建新模型供应商](/zh/develop-plugin/dev-guides-and-walkthroughs/creating-new-model-provider)。
  </Card>
</CardGroup>

## Provider

<ParamField path="provider" type="string">
  供应商标识符，例如 `openai`。
</ParamField>

<ParamField path="label" type="object">
  供应商显示名称（i18n）。支持 `en_US`（英文）和 `zh_Hans`（中文）。

  <ParamField path="zh_Hans" type="string">
    中文标签。若未设置，回退使用 `en_US`。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文标签
  </ParamField>
</ParamField>

<ParamField path="description" type="object">
  供应商描述（i18n）。

  <ParamField path="zh_Hans" type="string">
    中文描述。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文描述。
  </ParamField>
</ParamField>

<ParamField path="icon_small" type="object">
  供应商小图标，存储在供应商实现目录下的 `_assets` 目录中。

  <ParamField path="zh_Hans" type="string">
    中文图标。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文图标。
  </ParamField>
</ParamField>

<ParamField path="icon_large" type="object">
  供应商大图标，存储在供应商实现目录下的 `_assets` 目录中。

  <ParamField path="zh_Hans" type="string">
    中文图标。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文图标。
  </ParamField>
</ParamField>

<ParamField path="background" type="string">
  背景颜色值，例如 `#FFFFFF`。若为空，则使用前端默认颜色。
</ParamField>

<ParamField path="help" type="object">
  帮助信息。

  <ParamField path="title" type="object">
    帮助标题（i18n）。

    <ParamField path="zh_Hans" type="string">
      中文标题。
    </ParamField>

    <ParamField path="en_US" type="string" required>
      英文标题。
    </ParamField>
  </ParamField>

  <ParamField path="url" type="object">
    帮助链接（i18n）。

    <ParamField path="zh_Hans" type="string">
      中文链接。
    </ParamField>

    <ParamField path="en_US" type="string" required>
      英文链接。
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="supported_model_types" type="array[ModelType]" required>
  支持的模型类型。
</ParamField>

<ParamField path="configurate_methods" type="array[ConfigurateMethod]" required>
  配置方法。
</ParamField>

<ParamField path="provider_credential_schema" type="ProviderCredentialSchema" required>
  供应商凭据规范。
</ParamField>

<ParamField path="model_credential_schema" type="ModelCredentialSchema">
  模型凭据规范。
</ParamField>

## AIModelEntity

<ParamField path="model" type="string" required>
  模型标识符，例如 `gpt-3.5-turbo`。
</ParamField>

<ParamField path="label" type="object">
  模型显示名称（i18n）。支持 `en_US`（英文）和 `zh_Hans`（中文）。

  <ParamField path="zh_Hans" type="string">
    中文标签。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文标签。
  </ParamField>
</ParamField>

<ParamField path="model_type" type="ModelType" required>
  模型类型。
</ParamField>

<ParamField path="features" type="array[ModelFeature]">
  支持的特性。
</ParamField>

<ParamField path="model_properties" type="object" required>
  模型属性。

  <ParamField path="mode" type="LLMMode">
    模式（模型类型 `llm`）。
  </ParamField>

  <ParamField path="context_size" type="integer">
    上下文大小（模型类型 `llm` 和 `text-embedding`）。
  </ParamField>

  <ParamField path="max_chunks" type="integer">
    最大分段数（模型类型 `text-embedding` 和 `moderation`）。
  </ParamField>

  <ParamField path="file_upload_limit" type="integer">
    最大文件上传大小，单位为 MB（模型类型 `speech2text`）。
  </ParamField>

  <ParamField path="supported_file_extensions" type="string">
    支持的文件扩展名，例如 `mp3,mp4`（模型类型 `speech2text`）。
  </ParamField>

  <ParamField path="default_voice" type="string">
    默认语音，取值为 `alloy`、`echo`、`fable`、`onyx`、`nova`、`shimmer` 之一（模型类型 `tts`）。
  </ParamField>

  <ParamField path="voices" type="array">
    可用语音（模型类型 `tts`）。

    <ParamField path="mode" type="string">
      语音模型。
    </ParamField>

    <ParamField path="name" type="string">
      语音模型显示名称。
    </ParamField>

    <ParamField path="language" type="string">
      语音模型支持的语言。
    </ParamField>
  </ParamField>

  <ParamField path="word_limit" type="integer">
    单次转换的字数限制，默认按段落分割（模型类型 `tts`）。
  </ParamField>

  <ParamField path="audio_type" type="string">
    支持的音频文件扩展名，例如 `mp3,wav`（模型类型 `tts`）。
  </ParamField>

  <ParamField path="max_workers" type="integer">
    文字转音频转换的并发任务数（模型类型 `tts`）。
  </ParamField>

  <ParamField path="max_characters_per_chunk" type="integer">
    每个分段的最大字符数（模型类型 `moderation`）。
  </ParamField>
</ParamField>

<ParamField path="parameter_rules" type="array[ParameterRule]">
  模型调用参数的规则。
</ParamField>

<ParamField path="pricing" type="PriceConfig">
  价格信息。
</ParamField>

<ParamField path="deprecated" type="boolean">
  模型是否已弃用。已弃用的模型不再出现在模型列表中，但已有配置仍可继续使用。默认为 `False`。
</ParamField>

## ModelType

<ParamField path="llm" type="string">
  文本生成模型。
</ParamField>

<ParamField path="text-embedding" type="string">
  文本嵌入模型。
</ParamField>

<ParamField path="rerank" type="string">
  重排序模型。
</ParamField>

<ParamField path="speech2text" type="string">
  语音转文字。
</ParamField>

<ParamField path="tts" type="string">
  文字转语音。
</ParamField>

<ParamField path="moderation" type="string">
  内容审核。
</ParamField>

## ConfigurateMethod

<ParamField path="predefined-model" type="string">
  预定义模型。用户只需配置一次统一的供应商凭据，即可使用该供应商下的所有预定义模型。
</ParamField>

<ParamField path="customizable-model" type="string">
  自定义模型。用户需要为每个模型添加凭据配置。
</ParamField>

<ParamField path="fetch-from-remote" type="string">
  从远程获取。与 `predefined-model` 类似，只需统一的供应商凭据，但模型列表是使用这些凭据从供应商获取的。
</ParamField>

## ModelFeature

<ParamField path="agent-thought" type="string">
  Agent 推理。通常 70B 以上的模型具备思维链能力。
</ParamField>

<ParamField path="vision" type="string">
  视觉（图像理解）。
</ParamField>

<ParamField path="tool-call" type="string">
  工具调用。
</ParamField>

<ParamField path="multi-tool-call" type="string">
  多工具调用。
</ParamField>

<ParamField path="stream-tool-call" type="string">
  流式工具调用。
</ParamField>

## FetchFrom

<ParamField path="predefined-model" type="string">
  预定义模型。
</ParamField>

<ParamField path="fetch-from-remote" type="string">
  远程模型。
</ParamField>

## LLMMode

<ParamField path="completion" type="string">
  文本续写。
</ParamField>

<ParamField path="chat" type="string">
  对话。
</ParamField>

## ParameterRule

<ParamField path="name" type="string" required>
  模型调用中使用的实际参数名称。
</ParamField>

<ParamField path="use_template" type="string">
  使用的模板。
</ParamField>

预定义了 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` 以及 [创建新模型供应商](/zh/develop-plugin/dev-guides-and-walkthroughs/creating-new-model-provider) 中的示例。

<ParamField path="label" type="object">
  标签（i18n）。

  <ParamField path="zh_Hans" type="string">
    中文标签。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文标签。
  </ParamField>
</ParamField>

<ParamField path="type" type="string">
  参数类型。

  <ParamField path="int" type="string">
    整数。
  </ParamField>

  <ParamField path="float" type="string">
    浮点数。
  </ParamField>

  <ParamField path="string" type="string">
    字符串。
  </ParamField>

  <ParamField path="boolean" type="string">
    布尔值。
  </ParamField>
</ParamField>

<ParamField path="help" type="object">
  帮助信息（i18n）。

  <ParamField path="zh_Hans" type="string">
    中文帮助文本。
  </ParamField>

  <ParamField path="en_US" type="string" required>
    英文帮助文本。
  </ParamField>
</ParamField>

<ParamField path="required" type="boolean">
  参数是否必填。默认为 `False`。
</ParamField>

<ParamField path="default" type="int/float/string/boolean">
  默认值。
</ParamField>

<ParamField path="min" type="int/float">
  最小值。仅适用于数值类型。
</ParamField>

<ParamField path="max" type="int/float">
  最大值。仅适用于数值类型。
</ParamField>

<ParamField path="precision" type="integer">
  保留的小数位数。仅适用于数值类型。
</ParamField>

<ParamField path="options" type="array[string]">
  下拉选项值。仅当 `type` 为 `string` 时适用。若未设置或为 null，则不限制取值。
</ParamField>

## PriceConfig

<ParamField path="input" type="float">
  输入（提示词）单价。
</ParamField>

<ParamField path="output" type="float">
  输出（返回内容）单价。
</ParamField>

<ParamField path="unit" type="float">
  价格单位。例如，若按每 1M token 计价，则单价对应的单位 token 数为 `0.000001`。
</ParamField>

<ParamField path="currency" type="string">
  货币单位。
</ParamField>

## ProviderCredentialSchema

<ParamField path="credential_form_schemas" type="array[CredentialFormSchema]" required>
  凭据表单规范。
</ParamField>

## ModelCredentialSchema

<ParamField path="model" type="object" required>
  模型标识符。默认变量名为 `model`。

  <ParamField path="label" type="object" required>
    模型表单项的显示名称。

    <ParamField path="en_US" type="string" required>
      英文。
    </ParamField>

    <ParamField path="zh_Hans" type="string">
      中文。
    </ParamField>
  </ParamField>

  <ParamField path="placeholder" type="object" required>
    模型表单项的占位符文本。

    <ParamField path="en_US" type="string" required>
      英文。
    </ParamField>

    <ParamField path="zh_Hans" type="string">
      中文。
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="credential_form_schemas" type="array[CredentialFormSchema]" required>
  凭据表单规范。
</ParamField>

## CredentialFormSchema

<ParamField path="variable" type="string" required>
  表单项变量名。
</ParamField>

<ParamField path="label" type="object" required>
  表单项标签。

  <ParamField path="en_US" type="string" required>
    英文。
  </ParamField>

  <ParamField path="zh_Hans" type="string">
    中文。
  </ParamField>
</ParamField>

<ParamField path="type" type="FormType" required>
  表单项类型。
</ParamField>

<ParamField path="required" type="boolean">
  表单项是否必填。
</ParamField>

<ParamField path="default" type="string">
  默认值。
</ParamField>

<ParamField path="options" type="array[FormOption]">
  下拉内容。仅适用于 `select` 和 `radio` 类型。
</ParamField>

<ParamField path="placeholder" type="object">
  表单项占位符。仅适用于 `text-input` 类型。

  <ParamField path="en_US" type="string" required>
    英文。
  </ParamField>

  <ParamField path="zh_Hans" type="string">
    中文。
  </ParamField>
</ParamField>

<ParamField path="max_length" type="integer">
  最大输入长度。仅适用于 `text-input` 类型。`0` 表示无限制。
</ParamField>

<ParamField path="show_on" type="array[FormShowOnObject]">
  仅当其他表单项的值满足给定条件时才显示此项。为空表示始终显示。
</ParamField>

### FormType

<ParamField path="text-input" type="string">
  文本输入组件。
</ParamField>

<ParamField path="secret-input" type="string">
  密码输入组件。
</ParamField>

<ParamField path="select" type="string">
  单选下拉框。
</ParamField>

<ParamField path="radio" type="string">
  单选按钮组件。
</ParamField>

<ParamField path="switch" type="string">
  开关组件。仅支持 `true` 和 `false`。
</ParamField>

### FormOption

<ParamField path="label" type="object" required>
  标签。

  <ParamField path="en_US" type="string" required>
    英文。
  </ParamField>

  <ParamField path="zh_Hans" type="string">
    中文。
  </ParamField>
</ParamField>

<ParamField path="value" type="string" required>
  下拉选项值。
</ParamField>

<ParamField path="show_on" type="array[FormShowOnObject]">
  仅当其他表单项的值满足给定条件时才显示此选项。为空表示始终显示。
</ParamField>

### FormShowOnObject

<ParamField path="variable" type="string" required>
  其他表单项的变量名。
</ParamField>

<ParamField path="value" type="string" required>
  其他表单项的变量值。
</ParamField>

## 相关资源

* [模型架构详解](/zh/develop-plugin/features-and-specs/plugin-types/model-schema)：模型插件的架构规范
* [快速集成新模型](/zh/develop-plugin/dev-guides-and-walkthroughs/creating-new-model-provider)：应用这些规则添加新模型
* [通用规范](/zh/develop-plugin/features-and-specs/plugin-types/general-specifications)：插件清单文件的配置
* [创建新模型供应商](/zh/develop-plugin/dev-guides-and-walkthroughs/creating-new-model-provider)：开发全新的模型供应商插件
