本文档说明了如何为 Dify 平台添加新的模型提供商。它描述了模型提供商的架构、您需要实现的接口以及如何在系统中注册新提供商。有关使用现有模型提供商的信息,请参阅 模型提供商系统。
Dify 的模型提供商系统促进了与 OpenAI、Azure OpenAI、Anthropic 等各种 AI 模型提供商的交互。该系统旨在具有可扩展性,允许开发人员添加对新模型提供商的支持。
该系统包括
模型提供商系统由多个组件组成,它们协同工作,为模型操作提供统一的接口。
模型提供商系统架构
来源
ModelInstance ModelInstance 类封装了模型及其提供商配置。它处理与模型的交互,包括调用、令牌计数和负载均衡。
ProviderManager ProviderManager 负责管理模型提供商,包括系统提供商和自定义提供商。它处理提供商配置、凭据和配额管理。
ProviderConfiguration 包含提供商的所有配置详细信息,包括系统配置和自定义配置、可用模型以及凭据。
模型类型类(LargeLanguageModel、TextEmbeddingModel 等) 这些类代表不同类型的 AI 模型,并为其特定操作提供接口。
要为 Dify 添加新的模型提供商,您需要为您想要支持的模型类型实现特定的接口。
来源
创建提供商实现文件
core/model_runtime/model_providers/ 下为您的提供商创建一个新目录实现所需的接口
LargeLanguageModelTextEmbeddingModelRerankModelTTSModelSpeech2TextModel注册您的提供商
在实现大型语言模型提供商时,您必须实现这些关键方法
| 方法 | 描述 |
|---|---|
invoke | 使用给定的提示消息和参数调用 LLM |
get_num_tokens | 计算给定提示消息中的令牌数量 |
get_price | 返回给定令牌数量的定价信息 |
模型提供商需要不同的凭据进行身份验证。您需要定义提供商的凭据模式。
凭据模式实现示例
来源
Dify 通过以下方式安全地处理凭据:
来源
Dify 支持两种主要的提供商配置类型
每个提供商都可以拥有这两种类型,并且用户可以根据自己的需求在它们之间切换。
来源
对于高可用性场景,Dify 支持跨多个模型配置进行负载均衡。
来源
Dify 提供了一个回调系统用于监控和记录模型交互。在实现新提供商时,您应确保在不同点正确触发回调
LoggingCallback 类演示了如何使用回调进行调试和监控。
来源
在将您的提供商与 Dify 集成之前,您应该对其进行彻底测试。需要测试的关键领域包括:
下图说明了提供商如何与 Dify 应用程序流程集成
来源
Dify 支持托管提供商和自定义提供商。对于托管提供商,系统会管理凭据和配额。HostingConfiguration 类定义了托管提供商的配置方式,包括:
如果您正在实现一个应作为托管选项提供的提供商,您需要与 Dify 团队合作,在 HostingConfiguration 中对其进行适当配置。
来源
通过扩展 Dify 来支持新的模型提供商,您可以集成额外的 AI 服务和功能。通过实现所需的接口并遵循本指南中描述的模式,您可以为无缝集成到 Dify 平台的新提供商添加支持。
请记住安全处理凭据、实现适当的错误处理,并在生产环境中部署提供商实现之前对其进行彻底测试。