菜单

扩展模型提供商

相关源文件

本文档说明了如何为 Dify 平台添加新的模型提供商。它描述了模型提供商的架构、您需要实现的接口以及如何在系统中注册新提供商。有关使用现有模型提供商的信息,请参阅 模型提供商系统

模型提供商系统概述

Dify 的模型提供商系统促进了与 OpenAI、Azure OpenAI、Anthropic 等各种 AI 模型提供商的交互。该系统旨在具有可扩展性,允许开发人员添加对新模型提供商的支持。

该系统包括

  • 用于与不同模型类型交互的统一接口
  • 支持系统管理和自定义用户提供的凭据
  • 模型调用的负载均衡能力
  • 凭据加密和缓存的处理

模型提供商架构

模型提供商系统由多个组件组成,它们协同工作,为模型操作提供统一的接口。

模型提供商系统架构

来源

关键组件

ModelInstance ModelInstance 类封装了模型及其提供商配置。它处理与模型的交互,包括调用、令牌计数和负载均衡。

ProviderManager ProviderManager 负责管理模型提供商,包括系统提供商和自定义提供商。它处理提供商配置、凭据和配额管理。

ProviderConfiguration 包含提供商的所有配置详细信息,包括系统配置和自定义配置、可用模型以及凭据。

模型类型类(LargeLanguageModel、TextEmbeddingModel 等) 这些类代表不同类型的 AI 模型,并为其特定操作提供接口。

实现新的模型提供商

要为 Dify 添加新的模型提供商,您需要为您想要支持的模型类型实现特定的接口。

提供商实现结构

来源

实现步骤

  1. 创建提供商实现文件

    • core/model_runtime/model_providers/ 下为您的提供商创建一个新目录
    • 为要支持的每种模型类型创建实现文件
  2. 实现所需的接口

    • 对于 LLM 支持,请扩展 LargeLanguageModel
    • 对于文本嵌入,请扩展 TextEmbeddingModel
    • 对于重排序,请扩展 RerankModel
    • 对于文本转语音,请扩展 TTSModel
    • 对于语音转文本,请扩展 Speech2TextModel
  3. 注册您的提供商

    • 将您的提供商添加到提供商工厂

LLM 实现的必需方法

在实现大型语言模型提供商时,您必须实现这些关键方法

方法描述
invoke使用给定的提示消息和参数调用 LLM
get_num_tokens计算给定提示消息中的令牌数量
get_price返回给定令牌数量的定价信息

凭证管理

模型提供商需要不同的凭据进行身份验证。您需要定义提供商的凭据模式。

凭据模式实现示例

来源

提供商认证和配置

凭据处理

Dify 通过以下方式安全地处理凭据:

  1. 加密敏感凭据后存储
  2. 在 UI 中屏蔽凭据值
  3. 缓存解密后的凭据以提高性能

来源

配置类型

Dify 支持两种主要的提供商配置类型

  1. 系统配置:由 Dify 管理,具有系统定义的配额和凭据
  2. 自定义配置:用户提供的提供商或特定模型的凭据

每个提供商都可以拥有这两种类型,并且用户可以根据自己的需求在它们之间切换。

来源

负载均衡

对于高可用性场景,Dify 支持跨多个模型配置进行负载均衡。

来源

回调和监控

Dify 提供了一个回调系统用于监控和记录模型交互。在实现新提供商时,您应确保在不同点正确触发回调

  1. 模型调用前
  2. 收到新的结果块时(用于流式传输)
  3. 成功完成后
  4. 发生错误时

LoggingCallback 类演示了如何使用回调进行调试和监控。

来源

测试您的提供商

在将您的提供商与 Dify 集成之前,您应该对其进行彻底测试。需要测试的关键领域包括:

  1. 身份验证:确保凭据得到正确处理和身份验证
  2. 模型调用:测试基本模型操作,如补全和聊天
  3. 令牌计数:验证令牌计数是否准确
  4. 错误处理:测试您的实现如何处理各种错误条件
  5. 价格计算:确保价格信息计算正确

集成示例

下图说明了提供商如何与 Dify 应用程序流程集成

来源

托管配置

Dify 支持托管提供商和自定义提供商。对于托管提供商,系统会管理凭据和配额。HostingConfiguration 类定义了托管提供商的配置方式,包括:

  1. 提供商特定设置
  2. 配额限制和类型
  3. 模型限制

如果您正在实现一个应作为托管选项提供的提供商,您需要与 Dify 团队合作,在 HostingConfiguration 中对其进行适当配置。

来源

结论

通过扩展 Dify 来支持新的模型提供商,您可以集成额外的 AI 服务和功能。通过实现所需的接口并遵循本指南中描述的模式,您可以为无缝集成到 Dify 平台的新提供商添加支持。

请记住安全处理凭据、实现适当的错误处理,并在生产环境中部署提供商实现之前对其进行彻底测试。