# Dify 教程：它是什么、怎样运行、做出第一个应用

> Dify 是一个开源平台，用来基于大语言模型搭建应用。它有可视化的工作流画布、RAG 管线、智能体，每个应用还自带 API。你可以直接用 Dify Cloud，什么都不用装，也可以用 Docker Compose 自己部署。本课讲这两条路、许可证，以及第一个聊天机器人。

Mindket 编辑部 · 发布于 2026-11-06 · 更新于 2026-11-06 · https://mindket.com/cn/learn/dify/dify-tutorial

## 要点

- 按你愿意自己承担多少服务器工作，在 Cloud 和 Docker 部署之间选一个。
- 要在 Dify 上做面向其他团队的托管服务，先读许可证。
- 在本地跑起 Dify，创建管理员账号，再接入一个模型提供商。
- 搭一个三个节点的聊天机器人，并预览它。
- 照着教程操作之前，先看你所用版本的发布说明。

## Dify 是什么

Dify 是一个开源平台，用来搭建调用大语言模型（LLM）的应用。ChatGPT 和 Claude 背后用的就是这类模型。你在可视化画布上拼出应用，每一步是一个叫节点的方块，做好之后可以发布成网页、API，或者放在你自己网站上的聊天组件。

[README](https://github.com/langgenius/dify/blob/main/README.md) 列出了七个部分。有工作流画布，对数百种闭源和开源模型的支持，还有用来写提示词并对比效果的 Prompt IDE。其余是 RAG 管线、拥有独立沙箱的智能体、用来查看日志和性能的 LLMOps 工具，以及每项功能都配有的 API。RAG 是检索增强生成：应用先到你自己的文档里找出相关段落，再连同问题一起交给模型。[RAG 教程](https://mindket.com/cn/learn/rag/rag-tutorial)用 Python 从零搭了一个。

Studio 是 Dify 里搭建应用的地方。Workflow（工作流）从头到尾运行一次，返回一个结果。Chatflow（对话流）多了一层对话，每来一条消息，都先跑一遍流程再回复。文档把 Workflow 称为其他所有应用类型的基础。

| 应用类型 | 怎样运行 | 文档里的说明 |
| --- | --- | --- |
| Workflow | 从头到尾运行一次 | 以用户输入或触发器开始。网页应用和 API 可以批量运行任务 |
| Chatflow | 对话里的每条消息运行一次 | 总是以用户输入开始，可以保存对话变量 |
| Agent（新版，测试中） | 作为聊天应用，或作为工作流里的一个步骤 | 在自己的沙箱里工作 |
| Chatbot、Agent（旧版）、Text Generator | 跑在同一个引擎上 | 界面更简单的基础类型，属于旧版界面 |

## Cloud、自托管还是企业版

Dify 有三个版本。Dify Cloud 由 Dify 背后的公司 LangGenius 托管。社区版是自托管的那一个，[部署页面](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/overview.mdx)说它能在任何能跑 Docker 的地方运行：笔记本、本地服务器或云主机。企业版面向自己托管 Dify 的组织，多了单点登录（SSO）、基于角色的访问控制（RBAC）和支持服务协议。

新的 Cloud 账号从 Sandbox 套餐开始，带有 200 个 AI 额度，可以调用 OpenAI、Anthropic、Gemini 等提供商的模型。[快速入门](https://github.com/langgenius/dify-docs/blob/main/en/quick-start.mdx)写明，这些额度是一次性发放，不会按月重置。自托管时，模型提供商和它的 API 密钥要你自己添加，因为每个 Dify 应用至少需要一个提供商。

| 版本 | 谁运行服务器 | 怎样开始 | 适合 |
| --- | --- | --- | --- |
| Dify Cloud | LangGenius | 在 cloud.dify.ai 注册 | 什么都不装，先试用 Dify |
| 社区版 | 你自己 | 用 Docker Compose，见下一节 | 把应用和数据放在自己控制的机器上 |
| 企业版 | 你自己，在你自己的基础设施上 | README 链接的销售表单 | SSO、RBAC、支持 SLA、多工作区管理和 Kubernetes 部署 |

## 许可证有两个条件

仓库附带的是 [Dify Open Source License](https://github.com/langgenius/dify/blob/main/LICENSE)，它是在 Apache 2.0 基础上增加了条件。文件写明，Dify 可以商用，包括作为其他应用的后端，直到下面两个条件之一成立，那时就需要向 LangGenius 取得商业许可。

除非 LangGenius 书面授权，你不能用源代码运行多租户环境，一个租户就是一个工作区。这是第一个条件。第二个条件和标志有关：使用 Dify 前端时，不能删除或修改控制台和应用里的标志与版权信息。前端指的是 `web/` 目录，或者 Docker 里的 web 镜像，不用前端的用法不受这条限制。

如果一家公司在自己托管的 Dify 上给每个客户一个工作区，这正是第一个条件描述的情形。要做这样的事，先问 LangGenius 或律师，这里的概述不能代替许可证文件本身。

## 在自己的电脑上运行 Dify

Docker Compose 方案自带 PostgreSQL、Weaviate 向量数据库和 Dify 需要的其他服务，所以不用先准备数据库。你需要装有 Docker Compose 的 Docker、Git 和 OpenSSL，在 macOS 上还要给 Docker Desktop 的虚拟机至少 2 个虚拟 CPU 和 8 GiB 内存。在 Windows 上，用带 WSL 2 的 Docker Desktop，并把源代码放在 Linux 文件系统里。刚接触 Docker 的话，[n8n 自托管那一课](https://mindket.com/cn/learn/n8n/self-host-n8n-docker)讲了去哪里下载。

**本地安装的要求**

- **2 核** CPU 至少 (来源：[Dify 文档：用 Docker Compose 部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx), 2026-11-06 查阅)
- **4 GiB** 内存至少 (来源：[Dify 文档：用 Docker Compose 部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx), 2026-11-06 查阅)
- **2.35.0** Docker Compose 的最低版本 (来源：[Dify 文档：用 Docker Compose 部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx), 2026-11-06 查阅)
- **8 GiB** macOS 上 Docker Desktop 的内存 (来源：[Dify 文档：用 Docker Compose 部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx), 2026-11-06 查阅)

````bash
docker compose version
git clone --branch <version> --depth 1 https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
openssl rand -hex 32
# paste the output into .env as DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN
docker compose up -d
docker compose ps --all
````

1. 运行 `docker compose version`，确认版本是 2.35.0 或更高。
2. 到 [Dify 发布页](https://github.com/langgenius/dify/releases)挑一个标签。用 `git clone --branch`，后面接这个标签、`--depth 1` 和仓库地址来克隆，再进入 `dify/docker` 目录。
3. 执行 `cp .env.example .env`，复制配置模板。
4. 用 `openssl rand -hex 32` 生成一个令牌，写进 `.env` 里的 `DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN`。`COMPOSE_PROFILES` 保持默认值。
5. 执行 `docker compose up -d` 启动服务，再运行 `docker compose ps --all`。长期运行的服务应该显示 Up 或 healthy。一次性的 `init_permissions` 任务完成后显示 Exited (0)，这是正常的。
6. 打开 `http://localhost/install`，创建管理员账号，再到 `http://localhost` 登录。80 端口被占用时，把 `docker/.env` 里的 `EXPOSE_NGINX_PORT` 改成别的端口。

> 在别人能访问这个安装之前，要配置 HTTPS，并把 docker/.env 里自带的开发用凭据换掉。这包括数据库和 Redis 的密码、代码沙箱的密钥、Weaviate 的密钥、插件守护进程的密钥，以及智能体的令牌。改过 .env 之后要运行 docker compose up -d，因为 docker compose restart 会沿用旧的环境变量。

## 搭一个聊天机器人

先接入一个模型。在“Integrations”>“Model Provider”里安装一个提供商，比如 OpenAI，点它卡片上的“Add API Key”，填入密钥。在 Cloud 上，提供商装好后，Sandbox 额度就能覆盖支持的模型，不需要密钥。然后点右上角的“Default Models”，设置“System Reasoning Model”，没有自选模型的节点都会用它。默认模型为空时，依赖它的功能就无法使用。

下面的聊天机器人是文档自己的入门例子，文档把它分成三步，各用时 2、6 和 3 分钟。它从问题里找出国家名，回答问题，再加上一条由 Code 节点查出来的趣闻。这是它的 LLM 节点的系统提示词，抄自[简单聊天机器人页面](https://github.com/langgenius/dify-docs/blob/main/en/learn/tutorials/simple-chatbot.mdx)。

````text
The user will ask a question about a country. The question is {{sys.query}}
Tasks:
1. Identify the country mentioned.
2. Rephrase the question clearly.
3. Answer the question using general knowledge.
Respond in the following JSON format:
{
  "country": "<country name>",
  "question": "<rephrased question>",
  "answer": "<direct answer to the question>"
}
````

1. 按教程的写法，依次点“Studio”>“Workflow”>“Create from Blank”>“Orchestrate”>“New Chatflow”>“Create”。
2. 用“Add Node”添加一个 LLM 节点，连到开始节点。选一个默认模型，粘贴上面的提示词。在输入框里输入 `{` 或 `/` 就能选变量。
3. 在“Output Variables”下把“Structured”打开，点“Configure”，选“Import from JSON”。粘贴一个模式，把 `country`、`question` 和 `answer` 的类型都设成 string。有了结构化输出，下一个节点才能单独读到 `country`。
4. LLM 节点后面加一个 Code 节点。把一个输入变量改名为 `country`，设成 `structured_output` > `country`。粘贴下一节的 Python 代码，并把输出变量 `result` 改名为 `fun_fact`。
5. 加一个 Answer 节点，写三行：`Q: {{ structured_output.question }}`、`A: {{ structured_output.answer }}` 和 `Fun Fact: {{ fun_fact }}`。
6. 点“Preview”，问教程里的问题，比如“What is the capital of France?”或者“Describe the culture in Italy”。

[Dify Quickstart Guide: Build Your First AI Workflow](https://www.youtube.com/watch?v=dJ34OU_JY7Y)

Dify 官方 YouTube 频道的视频，文档在“简单聊天机器人”页面里嵌入了它。

## 趣闻背后的函数

Code 节点在沙箱里运行 Python 或 JavaScript。函数接收你声明的输入变量，必须返回一个字典，字典的键就是你声明的输出变量，这里是 `fun_fact`。字典里的三个国家是教程的示例数据。遇到其他国家，函数返回以“No fun fact available for”开头的备用句子。

````python
def main(country: str) -> dict:
  country_name = country.lower()
  fun_facts = {
    "japan": "Japan has more than 5 million vending machines.",
    "france": "France is the most visited country in the world.",
    "italy": "Italy has more UNESCO World Heritage sites than any other country."
  }
  fun_fact = fun_facts.get(country_name, f"No fun fact available for {country.title()}.")
  return {"fun_fact": fun_fact}
````

## Dify 更新很快，要对上你的版本

为旧版本写的教程，可能出现已经改过的界面。Dify 在 GitHub 上发布版本，标签像 1.19.0 这样，这一版发布于 2026 年 11 月 4 日。下面这些版本改动了本课程涉及的部分。

已有的自托管安装要升级时，Docker Compose 页面说要先读目标版本的升级指南，并保留你自己的 `.env`。

**改变了这几课内容的版本**

1. **2025年9月22日** 1.9.0。推出知识管线，以及基于队列的图执行引擎，用来运行工作流。
2. **2025年11月13日** 1.10.0。加入触发器，可以按计划、Webhook 或集成事件启动工作流。
3. **2026年2月3日** 1.12.0。推出摘要索引，把 AI 写的块摘要作为一层检索。
4. **2026年2月11日** 1.13.0。加入 Human Input 节点，让工作流暂停，由人来审阅或修改。
5. **2026年2月14日** 1.14.0-rc1。一个候选版本带来了有沙箱的 Agent 和它的技能。
6. **2026年10月23日** 1.18.0。加入可迁移的 .ifpkg 应用包，以及需要手动开启的 Agent 知识库。

来源：[GitHub 上的 Dify 发布页](https://github.com/langgenius/dify/releases) (2026-11-06 查阅)

## 常见错误

- 没有设置沙箱令牌就启动。智能体后端和它的本地沙箱需要 `docker/.env` 里的 `DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN`，缺了它这两个服务会不停重启。
- 把 `init_permissions` 显示的 Exited (0) 当成失败。它是一次性任务，负责准备存储权限。
- 改了 `.env` 之后运行 `docker compose restart`。restart 会沿用容器原来的环境变量，应该用 `docker compose up -d`。
- 服务器在别处，却打开 `localhost`。远程部署要用服务器的 IP 地址或域名。
- 在别人能访问的机器上，沿用自带的开发用密码。
- 还没接入模型提供商就开始搭应用，LLM 节点没有可调用的模型。

## 自己试一试

- 问机器人一个字典里没有的国家，看它返回的备用句子。
- 在 Code 节点的字典里加第四个国家，再预览一次。
- 换掉 LLM 节点的模型，或者调它的 Temperature，取值从 0 到 1，0 的回复最稳定，1 的回复变化最多，然后对同一个问题比较两次回答。

## 下一课

[第 2 课](https://mindket.com/cn/learn/dify/dify-workflow)搭一个有分支、有变量的工作流，并讲怎样调试一次运行。想先看看别的构建智能体的工具，比如 n8n、Zapier 和 Make，可以读[最好的 AI 智能体构建工具](https://mindket.com/cn/learn/ai-tools/best-ai-agent-builder)。

## 自测一下

1. 哪条命令能确认你的 Docker Compose 版本够新，可以安装 Dify？

   A. docker compose ps --all
   B. docker compose version
   C. docker compose config --quiet
   D. openssl rand -hex 32

   答案：B。 Docker Compose 页面让你先运行 docker compose version，并要求版本是 2.35.0 或更高。

2. 执行 docker compose up -d 之后，init_permissions 任务显示 Exited (0)，这说明什么？

   A. 安装失败，必须重来
   B. 数据库启动时崩溃了
   C. 一次性的存储设置任务完成了，属于正常现象
   D. 80 端口已被占用

   答案：C。 文档把 init_permissions 称为准备存储权限的一次性任务，并说它完成后显示 Exited (0)。

3. LICENSE 文件说一个租户对应一个工作区。它是在哪个条件下给出这个定义的？

   A. 多租户条件
   B. 标志条件
   C. 关于贡献者的条件
   D. 没有，只适用普通的 Apache 2.0

   答案：A。 LICENSE 文件把这个定义放在多租户条件下：未经 Dify 书面授权，不能用源代码运行多租户环境。某种具体的搭法算不算，要问 LangGenius。

4. 在 Dify Cloud 上，新账号还没添加自己的 API 密钥时，靠什么调用支持的模型？

   A. 一个免费的本地模型
   B. 社区版
   C. 一次性发放的 Sandbox AI 额度
   D. “Default Models”面板

   答案：C。 新的 Cloud 账号从 Sandbox 套餐开始，带 200 个一次性的 AI 额度，提供商装好后就能用来调用支持的模型。

## 常见问题

### Dify 是什么？

Dify 是 LangGenius 开源的工具，让你不用自己写后端，就能把模型接到聊天机器人、工作流或智能体背后。你在可视化的构建器 Studio 里设计应用，做好的每个应用都有自己的 API。

### Dify 免费吗，是开源的吗？

你可以阅读并自托管这份代码，许可证允许商用，直到两个条件之一成立。Dify Cloud 是单独的产品，有自己的套餐，新账号从 Sandbox 套餐开始。

### 用 Dify 需要会写代码吗？

大部分情况下不需要。文档把工作描述成拖动、连接和配置节点，需要时还有 Python 或 JavaScript 的 Code 节点可以用。

### Dify 和 n8n 有什么区别？

Dify 围绕 LLM 应用来做：模型提供商、知识库、智能体和发布。[n8n](https://mindket.com/cn/blog/what-is-n8n) 把很多应用和服务连成自动化流程。Dify 有 HTTP Request 节点，每个应用也有 API，n8n 有 Webhook，所以两边都能调用对方。

### Dify 能用哪些 AI 模型？

你接入哪家提供商，就能用哪家的模型。README 点名了几十家推理提供商，也接受任何兼容 OpenAI API 的模型。在“Integrations”>“Model Provider”里，用 API 密钥添加提供商。

## 资料来源

- [GitHub 上的 Dify：README](https://github.com/langgenius/dify/blob/main/README.md) (2026-11-06 查阅)
- [GitHub 上的 Dify：LICENSE 许可证文件](https://github.com/langgenius/dify/blob/main/LICENSE) (2026-11-06 查阅)
- [Dify 文档：用 Docker Compose 部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx) (2026-11-06 查阅)
- [Dify 文档：部署 Dify](https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/overview.mdx) (2026-11-06 查阅)
- [Dify 文档：30 分钟快速入门](https://github.com/langgenius/dify-docs/blob/main/en/quick-start.mdx) (2026-11-06 查阅)
- [Dify 文档：简单聊天机器人](https://github.com/langgenius/dify-docs/blob/main/en/learn/tutorials/simple-chatbot.mdx) (2026-11-06 查阅)
- [Dify 文档：关键概念](https://github.com/langgenius/dify-docs/blob/main/en/learn/key-concepts.mdx) (2026-11-06 查阅)
- [Dify 文档：Workflow 和 Chatflow](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/workflow-chatflow.mdx) (2026-11-06 查阅)
- [Dify 文档：LLM 节点](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/nodes/llm.mdx) (2026-11-06 查阅)
- [Dify 文档：Code 节点](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/nodes/code.mdx) (2026-11-06 查阅)
- [Dify 文档：新版 Agent 概览](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/new-agent/overview.mdx) (2026-11-06 查阅)
- [Dify 文档：搭建新版 Agent](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/new-agent/build.mdx) (2026-11-06 查阅)
- [Dify 文档：模型提供商](https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/workspace/model-providers.mdx) (2026-11-06 查阅)
- [GitHub 上的 Dify 发布页](https://github.com/langgenius/dify/releases) (2026-11-06 查阅)
- [YouTube 上的 Dify 官方视频：Dify 快速入门，搭建你的第一个 AI 工作流](https://www.youtube.com/watch?v=dJ34OU_JY7Y) (2026-11-06 查阅)

[浏览 Kits](https://mindket.com/cn/kits)
