本文档详细概述了 Dify 的核心功能系统及其实现。它涵盖了 Dify 的 AI 应用开发平台的主要后端系统,包括知识管理、工作流执行、模型提供商集成和应用编排。
有关部署架构和服务配置的信息,请参阅 系统架构。有关特定 API 端点的详细信息,请参阅 API 参考。
Dify 的核心系统协同工作,为构建 AI 应用提供了一个全面的平台。该架构围绕几个关键子系统构建,这些子系统处理 AI 应用生命周期的不同方面。
核心系统概述 来源: api/services/dataset_service.py1-100 api/core/workflow/nodes/llm/node.py1-50 api/core/provider_manager.py1-50
知识管理系统实现了检索增强生成(RAG)能力,处理文档处理、索引和检索,为 AI 应用服务。
知识管理核心组件
该系统以 DatasetService 类为中心,该类管理知识库的完整生命周期
DatasetService.create_empty_dataset() 方法创建新的知识库,支持可配置的索引技术(high_quality 用于向量索引,economy 用于关键字索引)DocumentService.save_document_with_dataset_id() 管道进行处理,处理文件上传、文本提取和分段VectorService 类管理嵌入生成和向量数据库操作,以实现语义搜索RetrievalModel 实体定义搜索方法(hybrid_search、semantic_search、full_text_search)和重排设置来源: api/services/dataset_service.py77-237 api/services/vector_service.py19-50 api/controllers/service_api/dataset/document.py33-95
工作流引擎执行基于图的工作流,具有各种节点类型,通过可视化编程实现复杂 AI 应用逻辑。
工作流引擎实现
核心工作流执行由 LLMNode 类及相关组件处理
LLMNode._run() 方法协调完整的节点执行生命周期,包括变量获取、模型调用和结果处理VariablePool 在工作流执行过程中跟踪变量,支持节点之间复杂的数据流RunStreamChunkEvent 等事件以实现实时流式传输,并发出 RunCompletedEvent 以处理完成事件LLMNode._invoke_llm() 方法处理模型调用,支持流式响应和结构化输出来源: api/core/workflow/nodes/llm/node.py110-297 api/core/workflow/entities/variable_pool.py api/core/workflow/nodes/event.py
模型提供商系统管理与各种 LLM 提供商的集成,处理凭据、负载均衡和模型生命周期管理。
提供商集成架构
模型提供商系统围绕几个关键组件构建
ModelProviderFactory.get_providers() 从插件系统中发现和初始化可用的模型提供商ProviderManager.get_configurations() 处理提供商凭据、配额和首选提供商选择ModelManager.get_model_instance() 创建配置好的模型实例,并提供适当的凭据和负载均衡HostingConfiguration 管理系统提供的模型,并为不同提供商类型提供配额控制来源: api/core/provider_manager.py51-243 api/core/model_manager.py30-100 api/core/hosting_configuration.py43-100
应用管理系统负责 AI 应用的生命周期,包括配置、发布和运行时管理。
应用生命周期管理
Dify 中的应用遵循由应用系统管理的结构化生命周期
来源: api/models/model.py api/controllers/service_api/app/ api/services/app_service.py
多租户架构支持工作区隔离和跨平台基于角色的访问控制。
多租户架构
账户和租户系统提供工作区隔离和访问控制
tenant_id 字段限定在特定租户范围内OWNER、ADMIN、EDITOR、NORMAL、DATASET_OPERATOR)DatasetPermissionEnum 设置DatasetService.check_dataset_permission() 等方法强制执行租户边界和基于角色的访问来源: api/services/dataset_service.py472-508 api/models/account.py api/services/account_service.py
核心系统通过明确定义的接口和共享的数据模型进行集成
系统集成架构
核心系统之间的集成遵循以下模式
RunRetrieverResourceEvent 和 ModelInvokeCompletedEvent 等事件进行通信VariablePool 为工作流执行提供共享状态管理来源: api/core/workflow/nodes/llm/node.py462-522 api/core/workflow/entities/variable_pool.py api/core/workflow/nodes/event.py