Mindket

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

黑色横幅,标题是“Dify”,下面是“不写代码搭建 AI 应用与工作流”。

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

本节内容

  • 按你愿意自己承担多少服务器工作,在 Cloud 和 Docker 部署之间选一个。
  • 要在 Dify 上做面向其他团队的托管服务,先读许可证。
  • 在本地跑起 Dify,创建管理员账号,再接入一个模型提供商。
  • 搭一个三个节点的聊天机器人,并预览它。
  • 照着教程操作之前,先看你所用版本的发布说明。
全部课程
本页目录
  1. Dify 是什么
  2. Cloud、自托管还是企业版
  3. 许可证有两个条件
  4. 在自己的电脑上运行 Dify
  5. 搭一个聊天机器人
  6. 趣闻背后的函数
  7. Dify 更新很快,要对上你的版本
  8. 常见错误
  9. 自己试一试
  10. 下一课
  11. 自测一下
  12. 常见问题
  13. 资料来源

Dify 是什么

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

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

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

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

Cloud、自托管还是企业版

Dify 有三个版本。Dify Cloud 由 Dify 背后的公司 LangGenius 托管。社区版是自托管的那一个,部署页面说它能在任何能跑 Docker 的地方运行:笔记本、本地服务器或云主机。企业版面向自己托管 Dify 的组织,多了单点登录(SSO)、基于角色的访问控制(RBAC)和支持服务协议。

新的 Cloud 账号从 Sandbox 套餐开始,带有 200 个 AI 额度,可以调用 OpenAI、Anthropic、Gemini 等提供商的模型。快速入门写明,这些额度是一次性发放,不会按月重置。自托管时,模型提供商和它的 API 密钥要你自己添加,因为每个 Dify 应用至少需要一个提供商。

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

许可证有两个条件

仓库附带的是 Dify Open Source 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 自托管那一课讲了去哪里下载。

本地安装的要求

2 核

CPU 至少

来源:Dify 文档:用 Docker Compose 部署 Dify (2026年11月6日 查阅)

4 GiB

内存至少

来源:Dify 文档:用 Docker Compose 部署 Dify (2026年11月6日 查阅)

2.35.0

Docker Compose 的最低版本

来源:Dify 文档:用 Docker Compose 部署 Dify (2026年11月6日 查阅)

8 GiB

macOS 上 Docker Desktop 的内存

来源:Dify 文档:用 Docker Compose 部署 Dify (2026年11月6日 查阅)

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 发布页挑一个标签。用 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 节点的系统提示词,抄自简单聊天机器人页面。

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 官方 YouTube 频道的视频,文档在“简单聊天机器人”页面里嵌入了它。

趣闻背后的函数

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

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. 1.9.0

    推出知识管线,以及基于队列的图执行引擎,用来运行工作流。

  2. 1.10.0

    加入触发器,可以按计划、Webhook 或集成事件启动工作流。

  3. 1.12.0

    推出摘要索引,把 AI 写的块摘要作为一层检索。

  4. 1.13.0

    加入 Human Input 节点,让工作流暂停,由人来审阅或修改。

  5. 1.14.0-rc1

    一个候选版本带来了有沙箱的 Agent 和它的技能。

  6. 1.18.0

    加入可迁移的 .ifpkg 应用包,以及需要手动开启的 Agent 知识库。

来源:GitHub 上的 Dify 发布页 (2026年11月6日 查阅)

常见错误

  • 没有设置沙箱令牌就启动。智能体后端和它的本地沙箱需要 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 课搭一个有分支、有变量的工作流,并讲怎样调试一次运行。想先看看别的构建智能体的工具,比如 n8n、Zapier 和 Make,可以读最好的 AI 智能体构建工具。

自测一下

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

    查看答案

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

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

    查看答案

    C. 一次性的存储设置任务完成了,属于正常现象 文档把 init_permissions 称为准备存储权限的一次性任务,并说它完成后显示 Exited (0)。

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

    查看答案

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

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

    查看答案

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

常见问题

Dify 是什么?

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

Dify 免费吗,是开源的吗?

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

用 Dify 需要会写代码吗?

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

Dify 和 n8n 有什么区别?

Dify 围绕 LLM 应用来做:模型提供商、知识库、智能体和发布。n8n 把很多应用和服务连成自动化流程。Dify 有 HTTP Request 节点,每个应用也有 API,n8n 有 Webhook,所以两边都能调用对方。

Dify 能用哪些 AI 模型?

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

资料来源

  1. Dify on GitHub: README (2026年11月6日 查阅)https://github.com/langgenius/dify/blob/main/README.md
  2. Dify on GitHub: LICENSE (2026年11月6日 查阅)https://github.com/langgenius/dify/blob/main/LICENSE
  3. Dify Docs: Deploy Dify with Docker Compose (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/quick-start/docker-compose.mdx
  4. Dify Docs: Deploy Dify (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/deploy/overview.mdx
  5. Dify Docs: 30-Minute Quick Start (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/quick-start.mdx
  6. Dify Docs: Simple Chatbot (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/learn/tutorials/simple-chatbot.mdx
  7. Dify Docs: Key Concepts (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/learn/key-concepts.mdx
  8. Dify Docs: Workflow & Chatflow (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/workflow-chatflow.mdx
  9. Dify Docs: LLM node (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/nodes/llm.mdx
  10. Dify Docs: Code node (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/nodes/code.mdx
  11. Dify Docs: New Agent overview (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/new-agent/overview.mdx
  12. Dify Docs: Build a new Agent (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/build/new-agent/build.mdx
  13. Dify Docs: Model Providers (2026年11月6日 查阅)https://github.com/langgenius/dify-docs/blob/main/en/self-host/use-dify/workspace/model-providers.mdx
  14. Dify releases on GitHub (2026年11月6日 查阅)https://github.com/langgenius/dify/releases
  15. Dify on YouTube: Dify Quickstart Guide: Build Your First AI Workflow (2026年11月6日 查阅)https://www.youtube.com/watch?v=dJ34OU_JY7Y

分享本节课

找更多开源项目

Mindket 的 Kits 收集了开源项目,并附上通俗的安装说明,Dify 就是其中之一。

浏览 Kits

本节课的 Markdown 版本 · Dify 教程:不写代码搭建 AI 应用与工作流 · 全部课程