一、Dify 核心介绍
1.1 什么是 Dify
Dify 是一款开源大语言模型(LLM)应用开发平台 ,名称由 Define(定义)+ Modify(迭代优化) 组合而来,核心理念是定义 AI 应用,并持续迭代优化 ,同时延伸寓意 Do it for you,一站式帮用户落地 AI 能力。
它并非大模型本身,而是大模型编排与应用交付平台 ,提供从应用设计、调试、运维、监控到对外服务的全链路能力,支持可视化操作、工作流编排、知识库、插件拓展,零代码 / 低代码即可快速搭建生产级 AI 应用。
1.2 核心优势
- 开源无绑定:代码完全开源,支持私有化部署,数据自主管控,不受云厂商限制。
- 低代码门槛:可视化界面操作,非技术人员也能搭建聊天机器人、数据分析、智能工作流等应用。
- 全模型兼容:支持市面上主流公有云大模型(通义千问、文心一言、智谱等)与本地私有化模型。
- 企业级能力:内置权限管理、调用审计、成本统计、API 网关,可作为企业统一 AI 中台。
- 丰富拓展生态:支持插件、RAG 知识库、Agent 智能体、ECharts 图表、文生图 / 文生视频等能力。
1.3 典型应用场景
- 快速搭建聊天机器人、客服机器人、知识库问答;
- 业务系统集成:将 LLM 能力接入 CRM、ERP、OA,解耦 Prompt 与业务代码;
- 企业 AI 中台:统一管理模型、API Key、访问权限与调用成本;
- 数据智能分析:实现自然语言转 SQL(Text2SQL)、数据可视化;
- AIGC 创作:文生图、文生视频、智能文案生成等。
二、部署前置条件
2.1 硬件最低要求
- CPU:≥ 2 核
- 内存 (RAM):≥ 4GiB
- 磁盘:预留 20GB 以上空间(存放 Docker 镜像、容器数据)
2.2 软件依赖
本次采用 Docker Compose 容器化部署,跨 Windows /macOS/ Linux 全平台适配,需提前安装:
- Docker + Docker Compose
- Windows/macOS:直接安装
Docker Desktop(内置 Compose); - Linux:通过系统命令安装 Docker 及 Docker Compose。
- Windows/macOS:直接安装
- Git:用于拉取官方源码(无 Git 可手动下载源码包)。
- 网络要求:访问 GitHub、模型插件仓库网络通畅,安装插件阶段建议配置网络代理,避免超时失败。
官方部署文档:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
三、Dify 容器化部署(Docker Compose)
3.1 拉取官方源码
打开终端(PowerShell、CMD、系统终端均可),依次执行以下命令克隆源码并进入部署目录:
# 克隆 Dify 开源仓库
git clone https://github.com/langgenius/dify.git
# 进入 docker 部署目录
cd dify/docker
3.2 生成环境配置文件
官方提供默认环境变量模板,直接复制即可使用,基础部署无需修改配置:
# 复制示例配置为正式配置文件
cp .env.example .env
如需自定义端口、数据库密码、域名等,使用文本编辑器打开
.env文件修改对应参数。
3.3 启动容器集群
执行命令后台启动所有 Dify 服务容器,首次启动会自动拉取大量镜像,耗时较长,请耐心等待:
docker compose up -d
常用运维命令(必备)
# 查看所有容器运行状态
docker compose ps
# 实时查看容器日志(排错、查看插件安装状态)
docker compose logs -f
# 停止所有容器
docker compose down
# 重启服务
docker compose restart
当所有容器状态显示 Running,代表服务启动成功。
3.4 初始化管理员账号并登录
- 打开浏览器,访问默认地址:
http://localhost; - 首次进入系统,根据提示设置管理员账号、密码;
- 使用刚创建的管理员账号登录 Dify 工作台,基础部署完成。
四、对接大模型(通义千问为例)
Dify 本身不内置大模型,需安装模型插件并配置对应厂商的 API Key,下面以通义千问演示完整对接流程。
4.1 安装通义千问插件
- 点击页面右上角头像 → 选择【设置】→ 进入【模型供应商】;
- 在插件列表搜索「通义千问」,点击【安装】; 重要提示:安装插件建议开启代理,极易出现超时、安装失败问题。
- 校验安装结果
- 方式一(日志校验):终端执行
docker compose logs -f,出现插件启动日志、接口请求记录,且进程状态为Running,即安装成功; - 方式二(页面校验):回到模型供应商页面,通义千问状态变为待配置。
- 方式一(日志校验):终端执行
4.2 配置 API Key 并连通测试
- 点击通义千问插件右侧【设置】,进入配置页;
- 填入在阿里云开发者平台申请的 通义千问 API Key;
- 点击【测试】,提示连通成功后保存配置;
- 返回模型列表,确认模型正常加载,系统 "模型未配置" 提示消失。
五、实战一:快速创建基础聊天助手
完成大模型对接后,先搭建最简单的对话机器人,验证整体链路可用性。
- 回到 Dify 首页,点击【创建空白应用】;
- 应用类型选择聊天助手,自定义应用名称,点击【创建】;
- 右侧为「调试与预览」对话窗口,输入测试内容,例如:
你是谁; - 模型正常返回回答,代表对话功能可用;
- 测试无误后,点击右上角【发布】,对外上线该聊天应用。
六、实战二:房产数据分析助手(Text2SQL 工作流)
6.1 项目背景
房产中介业务人员无 SQL 基础,通过自然语言提问自动生成 SQL、查询数据库并分析结果,实现低代码数据查询与分析。
6.2 环境准备
- 本地部署 MySQL 8.0 数据库;
- 执行
fangchang.sql脚本,创建房源数据表并导入测试数据; - 记录数据库地址、账号、密码、库名,后续用于接口配置。
6.3 搭建后端查询接口(Flask)
编写 Python 接口服务,接收 SQL 语句并执行数据库查询,代码 api.py:
from flask import Flask, request, jsonify
import pymysql
app = Flask(__name__)
# 数据库配置,根据自己环境修改
db_config = {
'host': '127.0.0.1',
'user': 'root',
'password': 'root123456',
'db': 'dify_test'
}
def execute_query(sql):
connection = pymysql.connect(**db_config)
try:
with connection.cursor() as cursor:
cursor.execute(sql)
result = cursor.fetchall()
return result
finally:
connection.close()
@app.route('/execute_query', methods=['GET'])
def get_data():
sql_query = request.args.get('sql_query', default='', type=str)
result = execute_query(sql_query)
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5001)
运行服务:
python api.py
服务默认地址:http://127.0.0.1:5001
6.4 Dify 工作流编排
- 首页【创建空白应用】→ 选择工作流 ,命名为
text2sql; - 依次添加并配置节点:开始节点 → LLM 节点 1 → 代码执行节点 → LLM 节点 2 → 结束节点。
节点 1:开始节点
新增输入变量 query(文本类型),用于接收用户自然语言提问。
节点 2:LLM 节点 1(自然语言转 SQL)
-
模型选择:通义千问(qwen-max);
-
System 提示词
你是数据分析专家,精通MySQL。根据用户问题生成SQL查询。
核心规则:- 仅使用用户提到的表和字段,SQL兼容MySQL;
- 只输出完整可执行SQL,无多余注释、文字;
- 字符字段使用 LIKE N'%关键词%',严格匹配表名字段名。
表结构:
fangchang(id,地区,房价(万),配置,大小(平米),单价(元),方位,层数,装修,其他) -
User 提示词
问题:{{query}}
请将问题转为SQL语句,仅返回SQL代码。
节点 3:代码执行节点(调用 Flask 接口执行 SQL)
输入变量绑定上一级 LLM 输出,Python 代码如下(修改为你的服务 IP):
import requests
def main(sql_query):
base_url = "http://127.0.0.1:5001"
url = f"{base_url}/execute_query"
response = requests.get(url, params={"sql_query": sql_query})
return {"result": response.text}
规范要求:入口函数必须为
main,返回格式固定为{"result": 内容}。
节点 4:LLM 节点 2(数据分析与结果整理)
接收数据库查询结果,做数据解读、汇总、格式美化,配置对应提示词,要求输出表格、数据总结、趋势分析,并附带原始 SQL。
节点 5:结束节点
绑定上一级 LLM 输出,作为工作流最终返回内容。
6.5 运行测试与发布
- 点击【运行】,输入测试问题:
分析精装修房产中,各地区的最高单价、最低单价及价差; - 工作流自动生成 SQL → 查询数据库 → 分析并返回格式化结果;
- 测试通过后点击【发布】,支持通过 API、网页嵌入等方式对外调用。
6.6 进阶:结合 ECharts 生成数据图表
如需实现数据可视化图表,拓展流程如下:
- 在 Dify 插件市场安装
ECharts图表工具; - 新增代码执行节点,解析 LLM 输出的 JSON 格式图表参数;
- 增加条件分支节点,根据图表类型(饼图 / 柱状图 / 折线图)分流;
- 对应分支挂载 ECharts 节点,配置标题、X 轴、数据;
- 最后通过模板转换节点统一输出图文 + 图表结果。
七、实战三:AIGC 文生图 / 文生视频工作流
Dify 支持接入各大 AIGC 插件,快速搭建文生图、文生视频应用,核心流程如下:
- 安装插件:在插件市场安装通义万相、Qwen Text2Image、豆包文生视频等插件,并配置对应 API Key;
- 工作流结构 :
- 开始节点:接收用户提示词、选择生成类型(文生图 / 文生视频);
- 条件分支:根据类型分流至不同链路;
- LLM 节点:优化用户提示词,转为 AI 绘画 / 视频专用结构化提示词;
- 文生图 / 文生视频节点:调用插件生成媒体资源;
- 回复节点:整合结果并返回给用户;
- 自定义提示词规则,约束画面主体、场景、风格、细节,提升生成效果。
八、拓展:应用参考与二次开发
如果暂无开发思路,可以参考社区开源范例快速上手:
- 开源工作流仓库:
- 经典范例:
- 深度研究报告(Deep Research):结合知识库、多轮检索、多模型协作生成专业调研报告;
- 股票分析:结合数据查询、行情解读、智能总结的综合工作流;
- 开发建议:
- 复杂场景可优先使用「知识库 + RAG」补充私有数据;
- 模型生成 SQL 出错时,可将正确案例录入知识库做示例引导;
- 线上部署后,开启日志与监控,统计 Token 消耗与调用成本。
九、常见问题排查
-
docker compose up -d 拉取镜像超时解决方案:配置 Docker 国内镜像源,或临时开启代理完成镜像拉取。
-
模型插件安装一直转圈、失败 原因:境外插件仓库访问受限,安装全程保持代理开启,观察日志出现
pre-loaded即为成功。 -
浏览器访问 http://localhost 打不开页面
- 检查容器状态:
docker compose ps,确保全部容器为 Running; - 检查 80 端口是否被占用,修改
.env中的端口配置后重启服务。
- 检查容器状态:
-
调用模型提示 Key 错误 / 接口不通重新核对 API Key、模型权限,在模型供应商页面重新点击「测试」连通性。
-
Text2SQL 生成语句报错检查表结构描述是否和数据库一致,补充典型 SQL 案例至提示词或知识库。
十、总结
- Dify 基于 Docker Compose 实现一键部署,开箱即用,降低 AI 应用落地门槛,私有化部署保障数据安全;
- 核心流程:环境准备 → 部署 Dify → 对接大模型 → 可视化编排应用 → 测试发布;
- 能力覆盖:对话机器人、Text2SQL 数据分析、AIGC 图文生成、知识库问答、复杂 Agent 工作流,适配个人、团队、企业多类场景;
- 作为开源平台,依托社区生态可持续拓展插件与工作流,是搭建生产级 LLM 应用的优选方案。
参考链接
- Dify 官方自托管文档:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
- Dify 开源仓库:https://github.com/langgenius/dify
- 通义千问开发者平台(获取 API Key):阿里云通义千问控制台