本文档介绍了 Dify 中的应用全生命周期管理系统,包括 AI 应用的创建、配置、发布、导入/导出和删除。该系统支持所有应用模式:聊天、续写、工作流、高级聊天和智能体聊天。
有关内部工作流执行系统的信息,请参阅 工作流引擎。有关模型配置和提供者集成的详细信息,请参阅 模型提供者集成。
应用管理系统围绕分层架构构建,API 控制器、业务服务和数据模型之间有清晰的分离。
来源:api/controllers/console/app/app.py1-363 api/services/app_service.py1-398 api/services/app_dsl_service.py1-780 web/app/(commonLayout)/apps/AppCard.tsx1-478 web/service/apps.ts1-173
应用通过 AppService.create_app() 方法创建,该方法根据指定应用模式处理初始化。
允许的创建模式在 ALLOW_CREATE_APP_MODES 中定义,包括:["chat", "agent-chat", "advanced-chat", "workflow", "completion"]。
来源:api/controllers/console/app/app.py28-115 api/services/app_service.py74-164
系统为不同应用属性提供精细化的更新操作
| 操作 | API 端点 | 控制器方法 | 目的 |
|---|---|---|---|
| 通用更新 | PUT /apps/{id} | AppApi.put() | 更新名称、描述、图标 |
| 名称更新 | POST /apps/{id}/name | AppNameApi.post() | 快速更改名称 |
| 图标更新 | POST /apps/{id}/icon | AppIconApi.post() | 更新应用图标和背景 |
| 站点状态 | POST /apps/{id}/site-enable | AppSiteStatus.post() | 启用/禁用 Web 应用 |
| API 状态 | POST /apps/{id}/api-enable | AppApiStatus.post() | 启用/禁用 API 访问 |
来源:api/controllers/console/app/app.py117-321 api/services/app_service.py225-307
DSL(领域特定语言)系统支持使用 YAML 格式完成应用导入和导出,支持版本兼容性和依赖管理。
DSL 系统使用语义化版本控制,当前版本为 CURRENT_DSL_VERSION = "0.3.0"。版本兼容性由 _check_version_compatibility() 处理。
来源:api/services/app_dsl_service.py42-94 api/services/app_dsl_service.py116-317
DSL 系统提取和管理工作流图和模型配置中的依赖项
来源:api/services/app_dsl_service.py612-743 api/services/app_dsl_service.py379-401
应用复制通过 DSL 导出/导入机制实现,确保应用完整复制
来源:api/controllers/console/app/app.py177-217 web/app/(commonLayout)/apps/AppCard.tsx115-140
系统支持通过 ConvertToWorkflowApi 将基础聊天/续写应用转换为工作流模式。
来源:api/controllers/console/app/workflow.py541-577
AppCard 组件提供了应用管理操作的主要界面。
通过集成的标签管理系统,应用支持基于标签的组织。
来源:web/app/(commonLayout)/apps/AppCard.tsx40-477 web/app/components/base/tag-management/selector.tsx1-279
应用可以作为 Web 应用和 API 发布,具有精细的控制
| 属性 | 控制器 | 描述 |
|---|---|---|
enable_site | AppSiteStatus | 启用/禁用 Web 应用界面 |
enable_api | AppApiStatus | 启用/禁用 API 访问 |
| 站点配置 | AppSite | 配置 Web 应用的外观和行为 |
| 访问令牌 | AppSiteAccessTokenReset | 重置 Web 应用访问令牌 |
Site 模型管理 Web 应用的呈现设置,包括主题、语言、域名和安全策略,通过 AppSite.post() 进行配置。
来源:api/controllers/console/app/site.py1-112 api/fields/app_fields.py129-154
应用通过几个相互关联的模型来维护状态
来源:api/fields/app_fields.py6-221 models/model.py(在导入中引用)