⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版。
简介
本文档详细介绍了实现 Dify 模型插件所需的接口和数据结构。它作为开发者将 AI 模型与 Dify 平台集成的技术参考。提供商实现
了解如何为不同的 AI 服务提供商实现模型提供商类
模型类型
五种支持的模型类型的实现细节:LLM、Embedding、Rerank、Speech2Text 和 Text2Speech
数据结构
模型 API 中使用的所有数据结构的综合参考
错误处理
正确的错误映射和异常处理指南
模型提供商
每个模型提供商必须继承__base.model_provider.ModelProvider 基类并实现凭据验证接口。
提供商凭据验证
dict
在提供商的 YAML 配置中
provider_credential_schema 下定义的凭据信息。
通常包括 api_key、organization_id 等字段。模型
Dify 支持五种不同的模型类型,每种都需要实现特定的接口。然而,所有模型类型都有一些共同的要求。通用接口
每个模型实现,无论类型如何,都必须实现这两个基本方法:1. 模型凭据验证
string
required
要验证的特定模型标识符(例如,“gpt-4”、“claude-3-opus”)
dict
required
在提供商配置中定义的凭据信息
2. 错误映射
LLM 实现
要实现大型语言模型提供商,请继承__base.large_language_model.LargeLanguageModel 基类并实现以下方法:
1. 模型调用
此核心方法处理对语言模型的流式和非流式 API 调用。参数
参数
string
required
模型标识符(例如,“gpt-4”、“claude-3”)
dict
required
API 的认证凭据
list[PromptMessage]
required
Dify 标准化格式的消息列表:
- 对于
completion模型:包含单个UserPromptMessage - 对于
chat模型:根据需要包含SystemPromptMessage、UserPromptMessage、AssistantPromptMessage、ToolPromptMessage
dict
required
模型特定参数(temperature、top_p 等),在模型的 YAML 配置中定义
list[PromptMessageTool]
函数调用能力的工具定义
list[string]
遇到时将停止模型生成的停止序列
boolean
default:true
是否返回流式响应
string
用于 API 监控的用户标识符
2. 令牌计数
如果模型不提供分词器,您可以使用基类的
_get_num_tokens_by_gpt2(text) 方法进行合理的近似估算。3. 自定义模型 Schema(可选)
此方法仅对支持自定义模型的提供商是必需的。它允许自定义模型从基础模型继承参数规则。
TextEmbedding 实现
文本嵌入模型将文本转换为捕获语义含义的高维向量,这对于检索、相似性搜索和分类非常有用。
__base.text_embedding_model.TextEmbeddingModel 基类:
1. 核心嵌入方法
返回值
返回值
object
required
包含以下内容的结构化响应:
- model:用于嵌入的模型
- embeddings:与输入文本对应的嵌入向量列表
- usage:关于令牌使用和成本的元数据
2. 令牌计数方法
Rerank 实现
重排序模型通过根据与查询的相关性重新排列一组候选文档来帮助提高搜索质量,通常在初始检索阶段之后进行。
__base.rerank_model.RerankModel 基类:
参数
参数
返回值
返回值
object
required
包含以下内容的结构化响应:
- model:用于重排序的模型
- docs:包含索引、文本和分数的 RerankDocument 对象列表
Speech2Text 实现
语音转文本模型将音频文件中的口语转换为书面文本,支持转录服务、语音命令和无障碍功能等应用。
__base.speech2text_model.Speech2TextModel 基类:
参数
参数
返回值
返回值
string
required
从音频文件转录的文本
Text2Speech 实现
文本转语音模型将书面文本转换为自然发音的语音,支持语音助手、屏幕阅读器和音频内容生成等应用。
__base.text2speech_model.Text2SpeechModel 基类:
参数
参数
Moderation 实现
内容审核模型分析内容中潜在的有害、不当或不安全的材料,帮助维护平台安全和内容政策。
__base.moderation_model.ModerationModel 基类:
返回值
返回值
boolean
required
表示内容安全性的布尔值:
- False:内容是安全的
- True:内容包含有害材料
实体
PromptMessageRole
消息角色PromptMessageContentType
消息内容类型,分为纯文本和图片。PromptMessageContent
消息内容基类,仅用于参数声明,不能初始化。TextPromptMessageContent 和 ImagePromptMessageContent。
TextPromptMessageContent
content 列表的一部分。
ImagePromptMessageContent
content 列表的一部分。
data 可以是 url 或图片的 base64 编码字符串。
PromptMessage
所有角色消息体的基类,仅用于参数声明,不能初始化。UserPromptMessage
UserMessage 消息体,表示用户消息。AssistantPromptMessage
表示模型响应消息,通常用于few-shots 或聊天历史输入。
tool_calls 是在向模型传入 tools 后模型返回的 tool call 列表。
SystemPromptMessage
表示系统消息,通常用于为模型设置系统指令。ToolPromptMessage
表示工具消息,用于在工具执行后将结果传递给模型以进行下一步规划。content 传入工具执行结果。
PromptMessageTool
LLMResult
LLMResultChunkDelta
流式响应中每次迭代的 Delta 实体LLMResultChunk
流式响应中的迭代实体LLMUsage
TextEmbeddingResult
EmbeddingUsage
RerankResult
RerankDocument
相关资源
Edit this page | Report an issue