就学joinlearn.com
开发环境15 分钟

Dify 入门教程:开源 AI 应用开发平台实战

完整的 Dify 入门到进阶教程,涵盖 Docker 部署、知识库搭建、工作流编排以及接入 DeepSeek 等外部模型的实战指南。

D
DFK
作者
DifyAI开发开源LLMOpsAI应用工作流

为什么你需要 Dify

我是 DFK,作为一个 AI 工具的重度用户,我用过无数种方式来构建 AI 应用——从纯代码写 LangChain,到用 Coze 拖拽搭建,再到用 Dify 这样的平台。最终,Dify 成了我个人项目中最常用的开发平台。

原因很简单:Dify 在灵活性和易用性之间找到了最佳平衡点。

它比 Coze 更灵活——你可以私有部署、自定义一切;它比直接写 LangChain 代码更省时间——可视化编排让复杂流程一目了然。如果你对零代码搭建方案也有兴趣,可以看看我的 Coze 完全指南,两个工具各有所长。


Dify 是什么

Dify 是一个 开源的 LLMOps 平台,让你可以快速构建和部署 AI 应用。它的名字来源于 "Do It For You"(帮你搞定),这也很好地概括了它的理念——把 AI 应用开发中的脏活累活都帮你处理好。

核心概念

在开始之前,先了解几个核心概念:

概念解释类比
Prompt 编排设计 AI 的行为和回答方式相当于给员工写岗位说明书
RAG(检索增强生成)让 AI 能查阅你的私有文档来回答给员工一本参考手册
Agent能自主使用工具完成任务的 AI一个有手有脚的智能助手
Workflow(工作流)多步骤的 AI 处理流水线一条自动化生产线
Dataset(知识库)存储文档和数据的地方公司的知识库系统

Dify 能做什么

  • 聊天助手:带知识库的智能问答系统
  • 文本生成应用:自动写文案、翻译、摘要
  • Agent 应用:能使用搜索、计算等工具的智能体
  • 工作流应用:多步骤的复杂 AI 处理流程

Docker 部署实战

Dify 支持云端使用和自部署。对于想要完全控制数据和自由定制的用户,Docker 私有部署是最佳选择。

前置准备

# 确保已安装 Docker 和 Docker Compose
docker --version    # 需要 Docker 20.10+
docker compose version  # 需要 Docker Compose V2

# 机器最低配置要求
# CPU: 2核
# 内存: 4GB(推荐 8GB)
# 磁盘: 20GB 可用空间

部署步骤

第一步:克隆代码

git clone https://github.com/langgenius/dify.git
cd dify/docker

第二步:配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑 .env 文件,修改关键配置

关键配置项:

# 密钥配置(务必修改!)
SECRET_KEY=your-random-secret-key-here
CONSOLE_API_URL=http://your-server-ip/console/api
APP_WEB_URL=http://your-server-ip

# 数据库配置(默认使用内置 PostgreSQL)
DB_USERNAME=postgres
DB_PASSWORD=your-db-password

# 向量数据库配置(默认使用 Weaviate)
VECTOR_STORE=weaviate

第三步:启动服务

docker compose up -d

等待几分钟,所有容器启动完成后:

# 检查容器状态
docker compose ps

# 应该看到以下服务都是 running 状态:
# - dify-web (前端界面)
# - dify-api (后端API)
# - dify-worker (后台任务)
# - postgres (数据库)
# - redis (缓存)
# - weaviate (向量数据库)
# - nginx (反向代理)

第四步:初始化

  1. 访问 http://your-server-ip
  2. 创建管理员账号
  3. 进入工作台

常见问题排查

# 如果某个容器启动失败,查看日志
docker compose logs dify-api

# 如果端口被占用
# 修改 .env 中的端口配置,或停掉占用端口的服务

# 如果内存不足
# 升级服务器配置或减少不必要的服务

搭建你的第一个 AI 应用

场景:带知识库的问答 Bot

我们来搭建一个实际有用的东西——一个能回答你产品相关问题的 AI 客服,它能够检索你上传的文档来给出准确答案。

第一步:创建知识库

  1. 进入「知识库」页面,点击「创建知识库」
  2. 上传你的文档(支持 TXT、PDF、Markdown、HTML 等)
  3. 配置文本分段参数:
分段方式:自动分段(推荐)
分段长度:500-1000 tokens(中文文档建议 500)
重叠长度:50 tokens
清洗规则:启用(去除多余空格、特殊字符)
  1. 选择嵌入模型(推荐使用 OpenAI text-embedding-3-small 或 bge-large-zh-v1.5)
  2. 等待索引完成

文档准备建议

  • 按主题拆分文档,每个文件聚焦一个话题
  • 确保文档中有清晰的标题和结构
  • 删除无关内容(页眉页脚、广告等)
  • 如果是 FAQ 格式,每个问答对独立一段效果最好

第二步:创建应用

  1. 进入「工作室」,点击「创建应用」
  2. 选择「聊天助手」类型
  3. 编写提示词:
你是 Learn AI 平台的智能客服助手。你的职责是回答用户关于 AI 工具和学习资源的问题。

## 回答原则
1. 基于知识库内容回答,不要编造信息
2. 如果知识库中没有相关信息,诚实说明"这个问题我暂时没有相关资料"
3. 回答要简洁清晰,使用编号列表组织复杂内容
4. 适当引导用户探索更多相关内容

## 回答格式
- 简短问题:直接回答,不超过 3 句话
- 复杂问题:先给总结,再分步骤展开
- 引用知识库内容时,标注来源文档
  1. 在「上下文」设置中关联刚创建的知识库
  2. 配置检索参数:
检索模式:混合检索(推荐)
Top K:3(检索最相关的 3 段内容)
Score 阈值:0.5(低于此分数的结果不返回)

第三步:测试和优化

在右侧预览窗口测试对话效果。常见优化方向:

  • 回答不准确:检查文档分段是否合理,调高 Top K 值
  • 回答太冗长:在 Prompt 中强调简洁性
  • 检索不到内容:检查嵌入模型质量,尝试调低 Score 阈值
  • 回答有幻觉:在 Prompt 中强调"只基于知识库回答"

进阶:工作流模式

工作流是 Dify 最强大的功能,它让你能够构建复杂的多步骤 AI 流水线。

工作流 vs 聊天助手

特性聊天助手工作流
交互方式对话式输入-输出式
适合场景问答、客服批量处理、复杂流程
灵活性中等极高
可视化简单配置节点拖拽编排

工作流实战:文章内容处理流水线

我在 joinlearn 网站上用 Dify 搭建了一个内容处理流水线,流程如下:

输入:原始文章文本
    ↓
[LLM节点] 提取文章关键信息(标题、摘要、标签)
    ↓
[条件判断] 文章类型?
    ├── 教程类 → [LLM节点] 优化为教程格式
    ├── 评测类 → [LLM节点] 生成对比表格
    └── 观点类 → [LLM节点] 提炼核心论点
    ↓
[LLM节点] 生成 SEO 优化的 meta description
    ↓
[代码节点] 格式化输出为 JSON
    ↓
输出:结构化文章数据

关键工作流节点详解

LLM 节点:调用大模型的核心节点

# LLM 节点配置示例
模型: deepseek-chat
温度: 0.3  # 低温度保证输出稳定性
最大 tokens: 2000
系统提示词: |
  你是一个专业的内容编辑。
  请从以下文章中提取关键信息。
用户输入: "{{input_text}}"

条件判断节点:根据条件走不同分支

条件:如果 {{article_type}} 等于 "tutorial"
  → 走教程处理分支
否则如果 {{article_type}} 等于 "review"
  → 走评测处理分支
否则
  → 走默认处理分支

代码节点:执行自定义 Python/JavaScript 代码

def main(inputs: dict) -> dict:
    title = inputs.get("title", "")
    summary = inputs.get("summary", "")
    tags = inputs.get("tags", "").split(",")

    return {
        "result": {
            "title": title.strip(),
            "summary": summary.strip(),
            "tags": [tag.strip() for tag in tags],
            "slug": title.lower().replace(" ", "-")
        }
    }

HTTP 请求节点:调用外部 API

URL: https://api.example.com/publish
方法: POST
Headers:
  Content-Type: application/json
  Authorization: Bearer {{api_key}}
Body:
  title: "{{title}}"
  content: "{{content}}"

接入外部模型

Dify 支持接入各种大语言模型,这也是它最大的优势之一。

接入 DeepSeek

DeepSeek 是目前性价比最高的选择,接入非常简单:

  1. 进入「设置」→「模型供应商」
  2. 找到 DeepSeek,点击配置
  3. 填入你的 DeepSeek API Key
  4. 在应用中选择 deepseek-chat 或 deepseek-coder

关于 DeepSeek 的详细使用指南,可以看我的 DeepSeek 完全指南

接入 OpenAI

API Key: sk-your-openai-api-key
API Base URL: https://api.openai.com/v1
(如果使用中转服务,改为中转地址)

接入本地模型(通过 Ollama)

这是最省钱的方案——完全免费,而且数据不出本地。

  1. 先安装并运行 Ollama(详见我的 Ollama 本地部署指南
  2. 在 Dify 模型设置中选择 Ollama
  3. 填入 Ollama 地址(默认 http://localhost:11434
  4. Dify 会自动检测已下载的模型
# 先在 Ollama 中下载模型
ollama pull deepseek-r1:8b
ollama pull qwen2.5:7b

# Dify 中就能看到并使用这些模型了

模型选择建议

场景推荐模型原因
日常问答DeepSeek Chat便宜好用
英文任务GPT-4o英文能力最强
编程辅助DeepSeek Coder代码能力强
隐私敏感Ollama 本地模型数据不出本地
长文处理Claude 3.5长上下文能力强

Dify vs LangChain vs Coze

维度DifyLangChainCoze
类型可视化平台代码框架零代码平台
开源
私有部署支持自行搭建不支持
学习曲线中等陡峭平缓
灵活性极高中等
适合人群技术团队开发者非技术用户
可视化编排无(需 LangGraph)
模型自由度任意模型任意模型平台提供

我的选择逻辑

  • 快速验证想法 → Coze
  • 团队协作开发 AI 应用 → Dify
  • 需要深度定制和完全控制 → LangChain

我的实战案例:为 joinlearn 搭建 AI FAQ Bot

我用 Dify 为 joinlearn.com 搭建了一个智能 FAQ Bot,整个过程分享如下:

需求

  • 自动回答用户关于 AI 工具使用的问题
  • 能检索网站上的所有教程文章
  • 回答要准确,不要编造

实现方案

  1. 知识库:把网站上所有博客文章导出为 Markdown 文件,上传到 Dify 知识库
  2. 嵌入模型:使用 bge-large-zh-v1.5(中文效果最好)
  3. 对话模型:DeepSeek Chat(性价比最高)
  4. 检索策略:混合检索 + Top K=5

效果

经过两周的优化,Bot 在常见问题上的回答准确率达到了 90% 以上。主要的优化措施:

  • 把长文章按章节拆分后上传
  • 在 Prompt 中加入了常见问题的示范回答
  • 对于检索不到的问题,引导用户去看具体的教程文章

部署

通过 Dify 的 API 接口集成到网站前端,同时通过 n8n 工作流 做了一些自动化处理(比如自动记录未回答的问题,方便后续补充知识库)。


总结和建议

Dify 是目前最适合技术团队使用的开源 AI 应用开发平台。它的优势在于:

  1. 开源免费:社区版功能已经非常强大
  2. 私有部署:数据完全自己掌控
  3. 模型自由:可以接入任何大语言模型
  4. 可视化编排:工作流拖拽设计,直观高效
  5. 生态丰富:工具、插件、模板持续更新

上手建议

  • 先用 Dify 云端版体验功能(dify.ai)
  • 确认适合你的需求后再部署私有版
  • 从简单的聊天助手开始,逐步用工作流实现复杂功能
  • 多尝试不同的模型组合,找到性价比最优解
返回博客列表
分享文章:

想要更深入的学习?

订阅我们的课程,获得完整的视频教程、源码资料和专属答疑支持

查看全部课程