前提条件
- Dify 插件 CLI
- 基本的 Python 编程技能和对面向对象编程的理解
- 熟悉想要集成的模型供应商的 API 文档
步骤 1:创建和配置新插件项目
初始化项目
选择模型插件模板
从可用选项中选择LLM 类型的插件模板。此模板提供了完整的模型集成代码结构。

配置插件权限
对于模型供应商插件,配置以下基本权限:- Models:模型操作的基础权限。
- LLM:大语言模型功能的权限。
- Storage:文件操作的权限(如果需要)。

目录结构概述
初始化后,插件项目的目录结构类似如下(假设供应商名为my_provider,支持 LLM 和 Embedding):
步骤 2:了解模型配置方法
Dify 支持两种模型配置方法,它们决定了用户如何与供应商的模型交互:预定义模型(predefined-model)
预定义模型只需统一的供应商凭证即可使用。用户为供应商配置好 API 密钥或其他身份验证信息后,即可立即访问所有预定义模型。
示例:OpenAI 供应商提供 gpt-3.5-turbo-0125、gpt-4o-2024-05-13 等预定义模型。用户只需配置一次 OpenAI API 密钥,即可访问所有这些模型。
自定义模型(customizable-model)
自定义模型需要为每个模型实例单独配置。当模型需要供应商级凭证之外的单独参数时,这种方法很有用。
示例:Xinference 同时支持 LLM 和 Text Embedding,但每个模型都有唯一的 model_uid。用户必须为每个要使用的模型单独配置 model_uid。
两种配置方法可在同一个供应商中共存。例如,供应商可提供一部分预定义模型,同时允许用户添加带有特定配置的自定义模型。
步骤 3:创建模型供应商文件
创建新的模型供应商涉及两个主要组件:- 供应商配置 YAML 文件:定义供应商的基本信息、支持的模型类型和凭证要求。
- 供应商类实现:实现身份验证和其他供应商级功能。
3.1 创建模型供应商配置文件
供应商配置是一个 YAML 文件,用于声明供应商的基本信息、支持的模型类型、配置方法和凭证规则。将其放在插件项目的根目录中。 以下是带注释的anthropic.yaml 配置文件示例:
自定义模型配置
如果供应商支持自定义模型,需添加model_credential_schema 部分,用于定义用户为每个模型配置的额外字段。这对于支持微调模型或需要模型特定参数的供应商很常见。
以下是来自 OpenAI 供应商的示例:
3.2 编写模型供应商代码
接下来,在/provider 目录中为供应商类创建一个 Python 文件,并以供应商名称命名(例如 anthropic.py)。
供应商类必须继承自 ModelProvider 并至少实现 validate_provider_credentials 方法:
validate_provider_credentials,因此该方法应:
- 通过一次简单的 API 调用来尝试验证凭证。
- 验证成功时静默返回。
- 验证失败时抛出
CredentialsValidateFailedError,并附带有用的提示信息。
对于自定义模型供应商
对于只使用自定义模型的供应商(每个模型都需要各自的配置),可实现一个更简单的供应商类。例如 Xinference:步骤 4:实现模型特定代码
设置好供应商后,实现模型特定代码来处理所支持的每种模型类型的 API 调用。这涉及:- 为每个特定模型创建模型配置 YAML 文件。
- 实现处理 API 通信的模型类型类。
4.1 定义模型配置(YAML)
对于每个特定模型,在相应的模型类型目录中创建一个 YAML 文件(例如models/llm/)来定义其属性、参数和功能。
示例(claude-3-5-sonnet-20240620.yaml):
4.2 实现模型调用代码(Python)
为所支持的每种模型类型创建一个 Python 文件(例如models/llm/ 目录中的 llm.py)。该类负责处理 API 通信、参数转换和结果格式化。
以下是 LLM 的实现结构示例:
_invoke,它处理核心 API 通信。该方法应:
- 将 Dify 的标准化输入转换为供应商 API 所需的格式。
- 进行 API 调用并妥善处理错误。
- 将 API 响应转换为 Dify 的标准化输出格式。
- 同时处理流式和非流式模式。
步骤 5:调试和测试您的插件
Dify 支持远程调试,可在开发期间测试插件:- 在 Dify 实例中进入 插件管理,点击 调试插件,获取调试密钥和服务器地址。
-
在
.env文件中用这些值配置本地环境: -
使用
python -m main在本地运行插件,并在 Dify 中测试。
步骤 6:打包和发布
当您的插件准备就绪时:-
使用脚手架工具打包:
- 提交前先在本地测试打包好的插件。
- 向 Dify 官方插件仓库 提交拉取请求。
参考资源
- 快速集成新模型:如何向现有供应商添加新模型。
- 插件开发基本概念:返回插件开发入门指南。
- 模型 Schema:详细的模型配置规范。
- 通用规范:插件清单文件配置。
- Dify 插件 SDK 参考:基类、数据结构和错误类型。
Edit this page | Report an issue