Skip to main content
⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版

前提条件

  • Dify CLI
  • 基本的 Python 编程技能和面向对象编程的理解
  • 熟悉您想要集成的模型供应商的 API 文档

步骤 1:创建和配置新插件项目

初始化项目

选择模型插件模板

从可用选项中选择 LLM 类型的插件模板。此模板提供了完整的模型集成代码结构。 Plugin type: llm

配置插件权限

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

目录结构概述

初始化后,您的插件项目将具有类似以下的目录结构(假设供应商名为 my_provider,支持 LLM 和 Embedding):

步骤 2:了解模型配置方法

Dify 支持两种模型配置方法,决定用户如何与您供应商的模型交互:

预定义模型(predefined-model

这些模型只需要统一的供应商凭证即可使用。一旦用户为供应商配置了 API 密钥或其他身份验证详情,他们就可以立即访问所有预定义模型。 示例: OpenAI 供应商提供预定义模型,如 gpt-3.5-turbo-0125gpt-4o-2024-05-13。用户只需配置一次 OpenAI API 密钥即可访问所有这些模型。

自定义模型(customizable-model

这些模型需要为每个特定模型实例进行额外配置。当模型需要供应商级凭证之外的单独参数时,这种方法很有用。 示例: Xinference 同时支持 LLM 和 Text Embedding,但每个模型都有唯一的 model_uid。用户必须为他们想要使用的每个模型单独配置此 model_uid。 这些配置方法可以在单个供应商中共存。例如,供应商可能提供一些预定义模型,同时也允许用户添加具有特定配置的自定义模型。

步骤 3:创建模型供应商文件

创建新的模型供应商涉及两个主要组件:
  1. 供应商配置 YAML 文件 - 定义供应商的基本信息、支持的模型类型和凭证要求
  2. 供应商类实现 - 实现身份验证验证和其他供应商级功能

3.1 创建模型供应商配置文件

供应商配置在 YAML 文件中定义,声明供应商的基本信息、支持的模型类型、配置方法和凭证规则。此文件将放置在插件项目的根目录中。 以下是带注释的 anthropic.yaml 配置文件示例:

自定义模型配置

如果您的供应商支持自定义模型,您需要添加 model_credential_schema 部分来定义用户需要为每个单独模型配置的额外字段。这对于支持微调模型或需要模型特定参数的供应商很常见。 以下是来自 OpenAI 供应商的示例:
有关完整的模型供应商 YAML 规范,请参阅模型 Schema 文档。

3.2 编写模型供应商代码

接下来,为您的供应商类实现创建一个 Python 文件。此文件应放置在 /provider 目录中,名称与您的供应商匹配(例如 anthropic.py)。 供应商类必须继承自 ModelProvider 并至少实现 validate_provider_credentials 方法:
validate_provider_credentials 方法非常重要,因为每当用户尝试在 Dify 中保存其供应商凭证时都会调用它。它应该:
  1. 尝试通过进行简单的 API 调用来验证凭证
  2. 如果验证成功则静默返回
  3. 如果验证失败则抛出带有有用消息的 CredentialsValidateFailedError

对于自定义模型供应商

对于专门使用自定义模型的供应商(每个模型都需要自己的配置),您可以实现一个更简单的供应商类。例如,对于 Xinference

步骤 4:实现模型特定代码

设置好供应商后,您需要实现模型特定代码来处理您支持的每种模型类型的 API 调用。这涉及:
  1. 为每个特定模型创建模型配置 YAML 文件
  2. 实现处理 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 通信。此方法应该:
  1. 将 Dify 的标准化输入转换为供应商 API 所需的格式
  2. 使用适当的错误处理进行 API 调用
  3. 将 API 响应转换为 Dify 的标准化输出格式
  4. 处理流式和非流式模式

步骤 5:调试和测试您的插件

Dify 提供远程调试功能,允许您在开发期间测试插件:
  1. 在您的 Dify 实例中,转到”插件管理”并点击”调试插件”以获取您的调试密钥和服务器地址
  2. .env 文件中使用这些值配置您的本地环境:
  1. 使用 python -m main 在本地运行您的插件并在 Dify 中测试它

步骤 6:打包和发布

当您的插件准备就绪时:
  1. 使用脚手架工具打包:
  2. 在提交之前在本地测试打包的插件
  3. Dify 官方插件仓库 提交拉取请求
有关发布流程的更多详情,请参阅发布概述

参考资源


Edit this page | Report an issue