Dify 新手实战指南:从入门到项目接入,附可直接运行源码
Dify 新手入门指南|附源码
如果你最近开始接触 Dify,大概率会被它的定位吸引:
它不是单纯的“大模型聊天界面”,而是一个可以帮助你 快速搭建 AI 应用 的开源平台。无论你想做智能客服、知识库问答、文档分析、Agent 工具调用,还是想把大模型能力接入自己的业务系统,Dify 都是一个非常值得上手的工具。
这篇文章会从 Dify 是什么、能做什么、怎么安装、怎么配置、怎么开发集成 一路讲到实战代码,适合刚接触 Dify 的新手阅读。文章后半部分还会附上可直接参考的源码示例,帮助你更快做出第一个 Dify 应用。
一、什么是 Dify?
Dify 是一个面向 AI 应用开发的开源平台,它把大模型应用里最常见的一些能力做成了可视化和可配置的组件,比如:
- Prompt 编排
- 知识库 / RAG 检索增强
- 工具调用
- 工作流编排
- 多轮对话管理
- API 发布与调用
- 前后端快速集成
简单来说,Dify 的目标是让你不用从零搭建整套 AI 应用基础设施,也能快速完成一个可上线的产品原型。
对于新手来说,Dify 的最大优势有三个:
- 上手快:界面化操作,配置清晰;
- 可扩展:支持接入多种模型、工具和数据源;
- 能落地:不是玩具,而是能实际用于业务系统。
二、Dify 适合做什么?
Dify 的应用场景非常广,下面是几个最常见的方向。
1. 智能客服
把企业 FAQ、产品手册、售后文档导入知识库,Dify 就能帮你快速搭建一个智能客服系统。
2. 企业知识库问答
员工可以直接提问,比如:
- “报销流程是什么?”
- “产品 A 的安装文档在哪里?”
- “这个接口的参数怎么传?”
Dify 会从知识库中检索相关内容并组织答案。
3. 文档助手
上传 PDF、Word、Markdown 等文档后,可以让 AI 自动总结、提炼重点、回答文档内容相关问题。
4. 工作流自动化
例如:
- 用户上传图片 → OCR 提取文字 → 大模型总结 → 输出结果
- 用户输入问题 → 检索知识库 → 调用外部 API → 返回定制化答案
5. AI Agent
让 AI 不仅能“说”,还能“做”。比如:
- 查询天气
- 查数据库
- 调用企业内部接口
- 自动生成报告
三、Dify 的核心概念
新手学习 Dify,建议先理解以下几个核心概念。
1. App(应用)
Dify 中的“应用”就是你最终给用户使用的 AI 产品。常见类型有:
- Chat App:适合对话问答
- Completion App:适合单次文本生成
- Workflow App:适合复杂流程编排
- Agent App:适合工具调用和复杂任务
2. Prompt(提示词)
Prompt 决定了 AI 的行为方式。
你可以通过系统提示词定义:
- AI 的角色
- 回答风格
- 输出格式
- 约束条件
例如:
你是一名专业的技术支持助手,请用简洁、准确的语言回答用户问题。
如果信息不足,请明确说明无法判断,不要编造。
3. Knowledge Base(知识库)
知识库用于实现 RAG(检索增强生成)。
你可以把公司文档、FAQ、说明书、网页内容等导入进去,Dify 会在用户提问时先检索相关资料,再交给大模型生成答案。
4. Workflow(工作流)
工作流是 Dify 很强的功能之一。你可以把一个复杂任务拆分成多个节点,例如:
- 开始节点
- 条件判断
- 文本生成
- HTTP 请求
- 变量赋值
- 结束节点
它非常适合处理需要“多步骤”的业务场景。
5. Tool / API 调用
Dify 可以调用外部工具和接口。
比如:
- 调用天气 API
- 查询订单系统
- 查询 CRM 数据
- 调用自建后端服务
四、Dify 的基础架构理解
从使用者角度看,Dify 的结构可以简单理解为下面几层:
用户
↓
Dify 应用层
↓
Prompt / Workflow / RAG / Tool
↓
大模型服务(OpenAI、通义千问、Claude、DeepSeek 等)
↓
外部知识库 / API / 数据库
你可以把 Dify 当成一个“AI 应用中间层”:
- 上层负责业务逻辑;
- 中间层负责编排;
- 底层对接模型和数据。
这种设计的好处是:
你不需要每次都重新写一套提示词管理、上下文拼接、知识库检索和工具调度逻辑。
五、如何开始使用 Dify?
Dify 有两种常见使用方式:
- 直接使用云服务版
- 本地部署开源版
对于新手,建议先用云服务版体验;如果你想深入学习、做二次开发、接入内网系统,再考虑本地部署。
六、Dify 本地部署入门
如果你想自己部署 Dify,可以使用 Docker 方式。
下面是常见的本地部署思路。
1. 安装依赖
需要准备:
- Docker
- Docker Compose
- Git
2. 拉取代码
通常先从 Dify 的开源仓库拉取项目。
git clone https://github.com/langgenius/dify.git
cd dify
3. 启动服务
根据项目中的部署说明执行 Docker Compose 启动。
cd docker
cp .env.example .env
docker compose up -d
4. 打开管理后台
启动成功后,访问对应的本地地址,即可进入 Dify 后台初始化页面。
不同版本的目录结构和启动方式可能略有差异,实际部署时请以官方文档为准。
七、创建你的第一个 Dify 应用
下面我们以一个最常见的场景来说明:
做一个“AI 问答助手”应用。
第一步:创建应用
进入 Dify 控制台后,选择:
- 创建应用
- 选择 Chat App 或 Workflow App
- 填写应用名称,例如:
技术问答助手
第二步:设置系统提示词
例如你可以写:
你是一名资深技术顾问,擅长解答编程、系统架构、数据库、接口设计等问题。
回答时请遵循以下规则:
1. 语言简洁明了;
2. 优先给出可执行方案;
3. 如果信息不完整,请指出缺失项;
4. 避免编造事实。
第三步:配置知识库
如果你有产品文档、接口说明、FAQ,可以上传到知识库中。
然后把知识库挂载到应用里。
第四步:测试对话
你可以输入:
- “如何初始化项目?”
- “接口返回 500 怎么排查?”
- “订单状态有哪些?”
观察模型是否能结合知识库给出准确回答。
第五步:发布应用
Dify 支持通过 Web 页面、API 接口等方式发布应用。
这样你就可以把它接到自己的前端、后台管理系统或者企业微信机器人里。
八、Dify 的知识库能力怎么理解?
Dify 的知识库,本质上是在做 RAG。
RAG 是什么?
RAG = Retrieval-Augmented Generation,中文叫“检索增强生成”。
它的流程大致如下:
- 用户提问;
- 系统先去知识库中检索相关内容;
- 将检索结果和问题一起发给大模型;
- 大模型基于检索内容生成答案。
RAG 的优势
如果只靠大模型本身,可能会有以下问题:
- 知识不最新;
- 容易“幻觉”;
- 无法理解企业私有数据;
- 对长文档支持有限。
而 Dify 的知识库能很好地解决这些问题。
这也是它能在企业场景中快速落地的重要原因。
九、Dify 工作流适合哪些场景?
如果你的需求只是“问答”,那普通 Chat App 就够了。
但如果你的需求更复杂,比如:
- 先判断用户意图,再决定查知识库还是查接口;
- 先生成 SQL,再去数据库查询;
- 先提取信息,再调用多个 API;
- 先进行分类,再执行不同逻辑;
那就更适合用 Workflow。
一个典型工作流示例
开始
↓
用户输入检查
↓
意图分类
↓
分支:
├── 知识库问答
├── 数据查询
└── 通用对话
↓
结果汇总
↓
结束
这种方式的好处是:
- 逻辑清晰;
- 易于维护;
- 复杂任务更稳定;
- 方便调试和迭代。
十、Dify 和传统“自己写 AI 应用”有什么区别?
如果完全自己开发,通常需要处理:
- Prompt 拼接
- 会话管理
- 文件解析
- 向量化
- 向量数据库
- 检索策略
- 工具调用
- 流式输出
- 错误重试
- 日志和监控
这些模块每一个都要单独搭建。
而 Dify 相当于把这些常用能力做成了平台化组件,帮助开发者把精力集中在:
- 业务逻辑
- 领域知识
- 产品体验
这也是 Dify 受欢迎的重要原因之一。
十一、实战:用代码调用 Dify API
很多新手最关心的不是“在后台怎么点”,而是“怎么接入自己的项目”。
下面给你两个最常用的源码示例:Python 和 Node.js。
注意:不同版本的 Dify API 地址和参数名可能会有细微差异,请以你实际部署环境和官方文档为准。
1. Python 调用示例
下面示例演示如何向 Dify 应用发送一个问题,并接收回答。
import requests
API_URL = "https://api.dify.ai/v1/chat-messages"
API_KEY = "你的Dify API Key"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"inputs": {},
"query": "请介绍一下Dify的主要功能",
"response_mode": "blocking",
"conversation_id": "",
"user": "user-001"
}
response = requests.post(API_URL, headers=headers, json=data)
print(response.status_code)
print(response.json())
代码说明
API_KEY:你在 Dify 应用中生成的密钥;query:用户输入的问题;response_mode:blocking:等待完整回复;streaming:流式返回;
user:用户唯一标识,便于会话追踪。
2. Node.js 调用示例
如果你前端项目是 Node.js 技术栈,可以这样调用:
const fetch = require('node-fetch');
async function callDify() {
const res = await fetch('https://api.dify.ai/v1/chat-messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer 你的Dify API Key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
inputs: {},
query: 'Dify适合哪些应用场景?',
response_mode: 'blocking',
conversation_id: '',
user: 'user-001'
})
});
const data = await res.json();
console.log(data);
}
callDify();
3. 前端页面接入示例
下面是一个最简版的 HTML 页面示例,方便你快速做一个聊天输入框。
Dify Chat Demo
Dify 聊天测试
这个示例虽然简单,但能帮助你快速验证 Dify 是否已接入成功。
十二、Dify 接入项目时的注意事项
新手在实际开发中,容易踩下面这些坑。
1. 不要直接把 API Key 写到前端
如果你把 Dify 的 API Key 直接暴露在浏览器端,可能会被恶意抓包。
更安全的做法是:
- 前端请求你的后端;
- 后端再去调用 Dify API;
- 后端统一管理密钥。
2. 给知识库内容做清洗
上传前最好处理一下文档:
- 去掉无关页眉页脚;
- 删掉重复内容;
- 尽量使用结构清晰的 Markdown 或纯文本;
- 章节标题要明确。
这样检索效果通常更好。
3. 提示词要尽量明确
不要只写“你是一个助手”,而要写清楚:
- 角色定位;
- 语气风格;
- 是否允许推测;
- 输出格式;
- 不确定时怎么办。
4. 控制上下文长度
如果对话太长,容易造成上下文冗余和成本增加。
建议定期截断、总结或重置会话。
5. 关注返回格式
如果你的业务系统需要结构化结果,可以要求模型输出 JSON,例如:
请只输出 JSON,不要输出额外解释。
字段包括:
- title
- summary
- tags
这样更方便后端解析。
十三、一个完整的 Dify 使用思路
如果你是第一次做 AI 应用,可以按下面这个顺序推进:
阶段 1:先做一个最小可用版本
目标:能回答问题即可。
做法:
- 创建 Chat App;
- 写好 Prompt;
- 发布并测试 API。
阶段 2:接入知识库
目标:让回答更专业。
做法:
- 上传文档;
- 配置检索规则;
- 测试知识问答效果。
阶段 3:接入业务接口
目标:让 AI 真正“帮你办事”。
做法:
- 配置工具;
- 调用内部 API;
- 加入工作流。
阶段 4:优化用户体验
目标:让产品更像“可用的 AI 服务”。
做法:
- 加流式输出;
- 加会话管理;
- 做错误提示;
- 做埋点和日志。
十四、Dify 学习建议
如果你是 Dify 新手,建议按这个顺序学习:
- 先理解 Chat App
- 再理解 Prompt
- 然后理解 知识库 / RAG
- 接着学习 Workflow
- 最后学习 API 接入与二次开发
不要一开始就去研究很复杂的 Agent 编排。
因为如果基础概念没吃透,后面会很容易混乱。
十五、Dify 适合哪些人?
Dify 对下面几类人特别友好:
1. 后端开发者
可以快速把大模型能力接到已有系统里。
2. 前端开发者
可以用很少代码做出一个 AI 产品原型。
3. 产品经理
可以快速验证 AI 功能是否可行。
4. 运营/内容团队
可以用它搭建知识问答、智能助手、内容生成工具。
5. 创业者
如果你想低成本做一个 AI MVP,Dify 非常合适。
十六、常见问题 FAQ
1. Dify 一定要部署到本地吗?
不一定。你可以直接使用云服务,也可以自己部署。
如果你有内网数据、隐私要求或二次开发需求,更适合自部署。
2. Dify 支持哪些模型?
通常支持多种主流大模型服务,具体取决于你当前版本和配置方式,比如 OpenAI 兼容接口、国产模型平台等。
3. Dify 适合企业内部系统吗?
适合。尤其是企业知识库、内部问答、流程助手、文档助手等场景。
4. Dify 和 LangChain 什么关系?
可以简单理解为:
- LangChain 更偏开发框架;
- Dify 更偏平台化产品。
两者定位不同,但都能帮助你构建 AI 应用。
5. Dify 学习难吗?
不算难。
如果你有一点点编程基础,通常几个小时到一天就能跑通第一个 Demo。
十七、总结
Dify 的核心价值,不在于“它能不能聊天”,而在于它把 AI 应用开发中最麻烦的一部分——Prompt 管理、知识库、工作流、工具调用、API 发布——都做成了可视化、可配置、可复用的能力。
对于新手来说,Dify 是一个非常好的起点,因为它能让你快速完成以下事情:
- 从 0 到 1 做出 AI 应用原型;
- 迅速接入大模型能力;
- 用知识库提升回答准确率;
- 通过工作流处理复杂业务;
- 用 API 集成到自己的项目中。
如果你正在考虑学习 AI 应用开发,或者想给自己的系统加上智能问答、文档助手、流程自动化功能,那么 Dify 值得你认真试一试。
附:最小可运行源码参考
下面再给一个更完整的后端代理示例,方便你把 Dify 接入自己的服务。
Python Flask 示例
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
DIFY_API_URL = "https://api.dify.ai/v1/chat-messages"
DIFY_API_KEY = "你的Dify API Key"
@app.route("/ask", methods=["POST"])
def ask():
data = request.json
question = data.get("question", "")
headers = {
"Authorization": f"Bearer {DIFY_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"inputs": {},
"query": question,
"response_mode": "blocking",
"conversation_id": "",
"user": "demo-user"
}
resp = requests.post(DIFY_API_URL, headers=headers, json=payload)
return jsonify(resp.json())
if __name__ == "__main__":
app.run(port=5000, debug=True)
调用方式
curl -X POST http://127.0.0.1:5000/ask \
-H "Content-Type: application/json" \
-d '{"question":"Dify是什么?"}'
如果你愿意,我还可以继续帮你补一版:
- 更像公众号风格的排版版本
- 更适合博客发布的 SEO 版本
- 配套 Dify 实战项目源码教程版
- “Dify + 知识库 + 前端页面”完整项目文章版