⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版。
前提条件
- 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 编写模型供应商代码
接下来,为您的供应商类实现创建一个 Python 文件。此文件应放置在/provider 目录中,名称与您的供应商匹配(例如 anthropic.py)。
供应商类必须继承自 ModelProvider 并至少实现 validate_provider_credentials 方法:
validate_provider_credentials 方法非常重要,因为每当用户尝试在 Dify 中保存其供应商凭证时都会调用它。它应该:
- 尝试通过进行简单的 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