本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
Dify 应用#
Dify 专为智能体应用构建而设计。在 Studio 中,你可以通过拖拽界面快速构建智能体工作流并将其发布为应用。你可以通过 API、Web 或作为 MCP 服务器访问已发布的应用。Dify 提供两种主要的应用类型:Workflow 和 Chatflow。在创建新应用时,你需要选择一种应用类型。
我们推荐选择 Workflow 或 Chatflow 作为你的应用类型。但除了这些之外,Dify 还提供 3 种更基础的应用类型:聊天机器人、Agent 和文本生成器。

这些应用类型在底层运行相同的工作流引擎,但提供了更简单的传统界面:

Workflow#
构建 Workflow 应用来处理单轮任务。Web 应用界面和 API 提供了便捷的批量执行多个任务的访问方式。
在底层,工作流构成了 Dify 中所有其他应用类型的基础。
每个工作流都以一个 开始节点 开始:用户输入(按需启动,由用户或 API 调用触发)或触发器(自动启动,按计划或响应外部事件)。
Chatflow#
Chatflow 是一种特殊类型的工作流应用,在对话的每一轮都会被触发。除了工作流功能外,Chatflow 还具有存储和更新自定义对话特定变量的能力,在大型语言模型节点中启用记忆功能,并在 Chatflow 运行的不同节点流式传输格式化的文本、图像和文件。
Chatflow 始终以用户输入开始。
Dify 领域特定语言#
所有 Dify 应用都可以导出为 Dify 自有领域特定语言的 YAML 文件,你也可以直接从这些领域特定语言文件创建 Dify 应用。这使得将应用移植到其他 Dify 实例并与他人分享变得容易。
变量#
变量是存储信息的标记容器,因此你可以通过引用其名称来查找和使用该信息。在构建 Dify 应用时,你会遇到不同类型的变量:
输入:你可以在用户输入节点为你的应用最终用户指定任意数量的输入变量来填写。

此外,用户输入节点还带有一组输入变量,你可以在流程中稍后引用。根据应用类型(Workflow 或 Chatflow),会提供不同的变量。
| 变量名 | 数据类型 | 描述 | 注释 |
|---|---|---|---|
sys.user_id | String | 用户 ID:系统在用户使用 Workflow 应用时自动分配给每个用户的唯一标识符。用于区分不同的用户。 | |
sys.app_id | String | 应用 ID:系统自动分配给每个应用的唯一标识符。此参数用于记录当前应用的基本信息。 | 此参数用于具有开发能力的用户区分和定位不同的 Workflow 应用。 |
sys.workflow_id | String | 工作流 ID:此参数记录当前 Workflow 应用中所有节点的信息。 | 此参数可供具有开发能力的用户用于跟踪和记录工作流中包含的节点信息。 |
sys.workflow_run_id | String | 工作流运行 ID:用于记录 Workflow 应用的运行时状态和执行日志。 | 此参数可供具有开发能力的用户用于跟踪应用的历史执行记录。 |
sys.timestamp | Number | 每次工作流执行的开始时间。 |
| 变量名 | 数据类型 | 描述 | 注释 |
|---|---|---|---|
sys.conversation_id | String | 聊天框交互会话的唯一 ID,将所有相关消息分组到同一对话中,确保 LLM 在相同的主题和上下文中继续聊天。 | |
sys.dialogue_count | Number | 用户与 Chatflow 应用交互期间的对话轮次数。每次聊天轮次后计数自动增加 1,可与 if-else 节点结合使用以创建丰富的分支逻辑。 例如,LLM 将在第 X 个对话轮次时审查对话历史并自动提供分析。 | |
sys.user_id | String | 为每个应用用户分配一个唯一 ID,以区分不同的对话用户。 | 服务 API 不共享 Web 应用创建的对话。这意味着具有相同 ID 的用户将在 API 和 Web 应用界面之间具有单独的对话历史记录。 |
sys.app_id | String | 应用 ID:系统自动分配给每个应用的唯一标识符。此参数用于记录当前应用的基本信息。 | 此参数用于具有开发能力的用户区分和定位不同的应用。 |
sys.workflow_id | String | 工作流 ID:此参数记录当前应用中所有节点的信息。 | 此参数可供具有开发能力的用户用于跟踪和记录工作流中包含的节点信息。 |
sys.workflow_run_id | String | 工作流运行 ID:用于记录应用的运行时状态和执行日志。 | 此参数可供具有开发能力的用户用于跟踪应用的历史执行记录。 |
用户输入在每次工作流运行开始时设置,无法更新。
输出:每个节点产生一个或多个输出,可以在后续节点中引用。例如,大型语言模型节点有以下输出:

与输入一样,节点输出也无法更新。
环境变量:将 API 密钥等机密信息存储在应用本体之外,分享应用的领域特定语言时不会暴露这些信息。环境变量还可存储供多个 LLM 节点共享的模型配置,编辑该变量即可更新所有使用它的节点中的模型。
会话变量(仅 Chatflow):这些变量是对话特定的,意味着它们在单个对话的多轮 Chatflow 运行中持续存在,因此你可以存储和访问动态信息,如待办事项列表和令牌成本。你可以通过变量分配器节点更新会话变量的值:

变量引用#
在配置输入字段时,你可以通过从下拉菜单中选择,轻松将变量传递给任何节点:

你还可以通过键入 / 斜杠并从下拉菜单中选择所需变量,将变量值插入到复杂的文本输入中。
