Dify 工作流落地指南:从部署到 API 调用的完整命令实战
Dify 工作流自动化教程|附完整命令
在企业内部知识库、客服机器人、内容生产、数据分析、自动报告生成等场景中,单纯依靠大模型对话已经无法满足复杂业务需求。很多时候,我们需要让 AI 按照固定流程执行任务:接收输入、调用知识库、判断条件、执行工具、整理结果、返回内容,甚至通过接口与外部系统联动。
这正是 Dify 工作流(Workflow) 的价值所在。
Dify 是一个开源的大模型应用开发平台,支持聊天应用、文本生成应用、Agent、工作流、知识库、模型接入、API 发布等能力。通过 Dify Workflow,我们可以用可视化方式编排 AI 自动化流程,同时还能通过 API、Docker、Nginx、数据库等方式完成生产级部署。
本文将从零开始,介绍 Dify 工作流自动化的完整使用方法,并附上部署、启动、配置、调用接口等常用命令,适合希望快速落地 AI 自动化应用的开发者、运维人员和产品团队参考。
一、Dify 工作流是什么?
Dify 工作流是 Dify 平台中的一种应用类型,它允许用户通过拖拽节点的方式,将多个处理步骤串联起来,形成一个自动化执行流程。
一个典型的 Dify 工作流可能包括以下步骤:
- 用户输入一个问题或任务;
- 系统对输入内容进行变量解析;
- 调用大语言模型进行理解或生成;
- 检索知识库中的相关资料;
- 根据条件判断走不同分支;
- 调用外部 API 获取实时数据;
- 对结果进行格式化处理;
- 返回最终响应。
与普通聊天机器人相比,工作流更适合处理结构化、流程化、可控性强的任务。例如:
- 自动生成日报、周报、月报;
- 客服问题分类与自动回复;
- 合同内容审核;
- 简历筛选与评分;
- SQL 自动生成;
- 知识库问答增强;
- 内容创作流水线;
- 舆情分析;
- 运维告警处理;
- API 自动调用与数据整合。
二、Dify 工作流的核心优势
1. 可视化编排,降低开发门槛
传统自动化流程往往需要编写大量代码,而 Dify 工作流可以通过图形化节点完成流程编排。即使不是专业开发人员,也可以设计出比较复杂的 AI 自动化流程。
2. 支持多种节点类型
Dify Workflow 支持开始节点、LLM 节点、知识检索节点、条件分支节点、代码执行节点、HTTP 请求节点、变量聚合节点、结束节点等,可以覆盖大部分业务流程需求。
3. 可接入多种大模型
Dify 支持 OpenAI、Anthropic、Azure OpenAI、Hugging Face、本地模型、通义千问、智谱、DeepSeek、Moonshot 等多种模型服务。用户可以根据预算、性能和私有化需求灵活选择。
4. 支持 API 发布
工作流创建完成后,可以直接以 API 的方式对外发布,方便集成到企业内部系统、网站、微信机器人、飞书机器人、钉钉机器人或其他业务平台中。
5. 适合企业私有化部署
Dify 支持 Docker Compose 部署,企业可以将其部署到自己的服务器上,结合本地数据库、向量数据库和私有大模型,实现数据可控。
三、准备环境
在开始部署 Dify 之前,建议准备以下环境。
服务器配置建议
如果只是学习和测试,可以使用较低配置:
2 CPU
4 GB RAM
20 GB Disk
Ubuntu 20.04 / 22.04
如果用于生产环境,建议至少:
4 CPU
8 GB RAM
100 GB Disk
Ubuntu 22.04
如果需要同时部署本地大模型,则需要更高配置,尤其是 GPU 资源。
必备软件
需要安装:
- Git
- Docker
- Docker Compose
- curl
- Nginx(可选,用于反向代理)
- 域名和 SSL 证书(生产环境推荐)
四、安装 Docker 和 Docker Compose
以下命令以 Ubuntu 为例。
1. 更新系统软件包
sudo apt update
sudo apt upgrade -y
2. 安装基础工具
sudo apt install -y ca-certificates curl gnupg lsb-release git
3. 安装 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
4. 添加 Docker 软件源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
6. 检查 Docker 版本
docker --version
docker compose version
7. 将当前用户加入 Docker 用户组
sudo usermod -aG docker $USER
执行后建议重新登录服务器,或者执行:
newgrp docker
8. 测试 Docker 是否正常
docker run hello-world
如果看到 Hello from Docker!,说明 Docker 安装成功。
五、部署 Dify
1. 克隆 Dify 项目
git clone https://github.com/langgenius/dify.git
进入项目目录:
cd dify
进入 Docker 部署目录:
cd docker
2. 复制环境变量配置文件
cp .env.example .env
3. 编辑环境变量
nano .env
常见需要关注的配置包括:
CONSOLE_WEB_URL=http://你的服务器IP
APP_WEB_URL=http://你的服务器IP
API_URL=http://你的服务器IP
如果你后续使用域名,例如 https://dify.example.com,可以修改为:
CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
API_URL=https://dify.example.com
如果只是本地测试,可以保持默认配置。
4. 启动 Dify
docker compose up -d
首次启动会拉取多个镜像,包括:
- api
- web
- worker
- db
- redis
- nginx
- weaviate 或其他向量数据库组件
拉取和启动过程可能需要几分钟。
5. 查看容器状态
docker compose ps
如果容器状态均为 running 或 healthy,说明服务基本正常。
6. 查看日志
查看全部日志:
docker compose logs -f
查看 API 服务日志:
docker compose logs -f api
查看 Web 服务日志:
docker compose logs -f web
查看 Worker 日志:
docker compose logs -f worker
7. 访问 Dify 控制台
在浏览器访问:
http://服务器IP
如果部署在本地,则访问:
http://localhost
首次访问时,需要创建管理员账号。完成初始化后,即可进入 Dify 控制台。
六、Dify 常用运维命令
1. 启动服务
cd dify/docker
docker compose up -d
2. 停止服务
docker compose down
3. 重启服务
docker compose restart
4. 重启单个服务
例如重启 API:
docker compose restart api
重启 Web:
docker compose restart web
重启 Worker:
docker compose restart worker
5. 更新 Dify
进入项目目录:
cd dify
拉取最新代码:
git pull
进入 Docker 目录:
cd docker
拉取最新镜像:
docker compose pull
重新启动:
docker compose up -d
6. 清理无用镜像
docker system prune -f
如果要清理未使用的数据卷,需要谨慎执行:
docker system prune -a --volumes
注意:清理数据卷可能导致数据库、向量库数据丢失,生产环境不要随意执行。
7. 查看资源占用
docker stats
8. 进入容器
进入 API 容器:
docker compose exec api bash
进入数据库容器:
docker compose exec db bash
七、配置模型供应商
Dify 部署完成后,还需要配置大模型,否则工作流中的 LLM 节点无法正常运行。
1. 进入模型供应商设置
在 Dify 控制台中依次进入:
设置 → 模型供应商
2. 添加 OpenAI 模型
如果使用 OpenAI,需要填写 API Key:
Provider: OpenAI
API Key: sk-xxxxxxxxxxxxxxxx
常用模型示例:
gpt-4o
gpt-4o-mini
gpt-4.1
gpt-4.1-mini
3. 使用兼容 OpenAI API 的模型
很多国产模型或本地模型服务提供 OpenAI-compatible API,可以在 Dify 中配置自定义接口。
常见配置项:
API Endpoint: https://api.example.com/v1
API Key: your-api-key
Model Name: deepseek-chat
4. 使用 Ollama 本地模型
如果你希望在本机或内网服务器运行本地模型,可以使用 Ollama。
安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh
拉取模型,例如:
ollama pull llama3.1
启动模型服务:
ollama serve
测试模型:
ollama run llama3.1
如果 Dify 运行在 Docker 中,而 Ollama 运行在宿主机,需要注意容器访问宿主机地址。Linux 下可以尝试使用宿主机内网 IP,例如:
http://192.168.1.100:11434
或者在 Docker 网络中做额外配置。
八、创建第一个 Dify 工作流
下面以“自动生成文章摘要并分类”为例,创建一个简单工作流。
目标
用户输入一段文章内容,工作流自动完成:
- 提取文章摘要;
- 判断文章类别;
- 输出结构化结果。
最终输出格式类似:
{
"summary": "文章主要介绍了……",
"category": "AI工具",
"keywords": ["Dify", "工作流", "自动化"]
}
1. 创建应用
进入 Dify 控制台后,点击:
创建应用 → 工作流
填写应用名称:
文章摘要分类工作流
然后进入工作流编辑页面。
2. 配置开始节点
开始节点通常用于接收用户输入。我们可以添加一个变量:
变量名:article
变量类型:段落文本
是否必填:是
说明:请输入需要分析的文章内容
此变量将在后续节点中通过类似方式引用:
{{article}}
有些版本中变量可能显示为:
{{#start.article#}}
具体以 Dify 页面提示为准。
3. 添加 LLM 节点:生成摘要
添加一个 LLM 节点,命名为:
生成摘要
Prompt 示例:
你是一名专业中文编辑,请阅读以下文章,并生成一段不超过150字的中文摘要。
文章内容:
{{#start.article#}}
要求:
1. 摘要必须准确概括文章核心观点;
2. 不要添加原文没有的信息;
3. 语言简洁、通顺;
4. 只输出摘要正文。
模型可以选择:
gpt-4o-mini
deepseek-chat
qwen-plus
根据你的模型供应商配置选择即可。
4. 添加 LLM 节点:文章分类
继续添加一个 LLM 节点,命名为:
文章分类
Prompt 示例:
请根据以下文章内容判断文章类别。
文章内容:
{{#start.article#}}
可选类别:
- AI工具
- 编程开发
- 产品运营
- 市场营销
- 企业管理
- 其他
请只输出一个类别名称,不要输出解释。
5. 添加 LLM 节点:提取关键词
添加第三个 LLM 节点,命名为:
提取关键词
Prompt 示例:
请从以下文章中提取3到5个关键词。
文章内容:
{{#start.article#}}
输出要求:
1. 使用中文;
2. 使用 JSON 数组格式;
3. 不要输出 Markdown;
4. 示例格式:["关键词1", "关键词2", "关键词3"]
6. 添加结束节点
结束节点用于组织最终返回结果。
可以设置输出内容为:
{
"summary": "{{#生成摘要.text#}}",
"category": "{{#文章分类.text#}}",
"keywords": "{{#提取关键词.text#}}"
}
不同版本的 Dify 节点变量名称可能略有差异,你可以在变量选择器中直接选择对应节点输出。
7. 测试工作流
点击右上角“运行”或“调试”,输入一段文章内容,例如:
Dify 是一个开源的大模型应用开发平台,支持开发者快速构建基于大语言模型的应用。用户可以通过可视化方式创建聊天机器人、知识库问答系统和自动化工作流……
运行后,应该可以得到类似结果:
{
"summary": "本文介绍了 Dify 作为开源大模型应用开发平台的能力,可帮助用户构建聊天机器人、知识库问答系统和自动化工作流。",
"category": "AI工具",
"keywords": ["Dify", "大模型", "工作流", "知识库", "自动化"]
}
九、进阶示例:带知识库检索的客服自动回复工作流
实际业务中,很多客服机器人不能只依赖模型自由发挥,而需要基于企业知识库进行回答。下面介绍一个更实用的工作流。
工作流目标
用户输入问题后,系统自动:
- 检索企业知识库;
- 判断是否命中有效资料;
- 如果命中,则基于知识库回答;
- 如果未命中,则提示转人工或记录问题;
- 返回规范客服回复。
工作流节点设计
可以设计为:
开始节点
↓
知识检索节点
↓
条件判断节点
├── 命中知识 → LLM 回复节点 → 结束节点
└── 未命中知识 → 转人工提示节点 → 结束节点
知识库检索节点配置
输入变量:
{{#start.question#}}
知识库选择:
企业产品知识库
召回数量可以设置为:
Top K = 3
相似度阈值可以根据实际效果设置,例如:
Score Threshold = 0.5
LLM 回复节点 Prompt
你是企业客服助手,请根据给定知识库资料回答用户问题。
用户问题:
{{#start.question#}}
知识库资料:
{{#知识检索.result#}}
回答要求:
1. 只能基于知识库资料回答;
2. 如果资料中没有相关信息,不要编造;
3. 语气礼貌、专业、简洁;
4. 如果涉及操作步骤,请使用编号列表;
5. 最后补充一句:如需进一步帮助,可以联系人工客服。
未命中回复内容
如果知识库未命中,可以返回:
抱歉,当前知识库中暂未找到与您问题完全匹配的信息。为了更准确地帮助您,建议您联系人工客服,或补充更多问题细节。
十、通过 API 调用 Dify 工作流
Dify 的强大之处在于,工作流不仅可以在控制台中运行,还可以通过 API 集成到其他系统中。
1. 获取 API Key
进入应用页面:
发布 → API 访问
创建或复制 API Key,格式通常类似:
app-xxxxxxxxxxxxxxxx
2. 工作流 API 调用地址
通常格式为:
http://你的服务器IP/v1/workflows/run
如果使用域名:
https://dify.example.com/v1/workflows/run
3. 使用 curl 调用工作流
假设工作流输入变量为 article,可以执行:
curl -X POST 'http://你的服务器IP/v1/workflows/run' \
-H 'Authorization: Bearer app-xxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"article": "Dify 是一个开源的大模型应用开发平台,支持通过工作流构建自动化 AI 应用。"
},
"response_mode": "blocking",
"user": "user-001"
}'
如果工作流输入变量为 question,则示例为:
curl -X POST 'http://你的服务器IP/v1/workflows/run' \
-H 'Authorization: Bearer app-xxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"question": "如何重置账号密码?"
},
"response_mode": "blocking",
"user": "customer-001"
}'
4. blocking 与 streaming 的区别
response_mode 支持两种常见模式:
blocking
streaming
blocking 表示等待工作流完整执行结束后一次性返回结果,适合后台任务、自动化脚本、接口调用。
streaming 表示以流式方式逐步返回内容,适合网页聊天、实时交互等场景。
5. Python 调用示例
import requests
url = "http://你的服务器IP/v1/workflows/run"
api_key = "app-xxxxxxxxxxxxxxxx"
payload = {
"inputs": {
"article": "Dify 是一个开源的大模型应用开发平台,可以帮助开发者快速构建 AI 工作流。"
},
"response_mode": "blocking",
"user": "python-user-001"
}
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
6. Node.js 调用示例
const axios = require("axios");
const url = "http://你的服务器IP/v1/workflows/run";
const apiKey = "app-xxxxxxxxxxxxxxxx";
async function runWorkflow() {
const response = await axios.post(
url,
{
inputs: {
article: "Dify Workflow 可以用于构建自动化 AI 应用。"
},
response_mode: "blocking",
user: "node-user-001"
},
{
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json"
}
}
);
console.log(response.data);
}
runWorkflow();
十一、使用 HTTP 请求节点调用外部接口
Dify 工作流中非常实用的能力之一是 HTTP 请求节点。它可以让工作流调用外部系统,例如 CRM、ERP、数据库中间层、天气接口、搜索接口、订单系统等。
示例:查询天气接口
假设你有一个天气查询 API:
https://api.example.com/weather?city=beijing
在 HTTP 请求节点中配置:
Method: GET
URL: https://api.example.com/weather?city={{#start.city#}}
Headers:
Authorization: Bearer your-token
如果是 POST 请求,可以配置 Body:
{
"city": "{{#start.city#}}",
"date": "{{#start.date#}}"
}
然后在后续 LLM 节点中引用接口返回结果:
请根据以下天气接口数据,用自然语言生成一段天气提醒。
接口数据:
{{#HTTP请求.body#}}
十二、使用代码节点处理复杂逻辑
当可视化节点无法满足需求时,可以使用代码节点处理数据清洗、格式转换、字段提取等任务。
JavaScript 代码节点示例
假设上一个节点返回了一段 JSON 字符串,我们希望提取其中的字段:
function main({ input }) {
const data = JSON.parse(input);
return {
result: {
title: data.title || "",
score: data.score || 0,
passed: data.score >= 60
}
};
}
Python 代码节点示例
def main(input: str) -> dict:
import json
data = json.loads(input)
return {
"title": data.get("title", ""),
"score": data.get("score", 0),
"passed": data.get("score", 0) >= 60
}
代码节点适合处理:
- JSON 解析;
- 字段过滤;
- 数值计算;
- 日期格式转换;
- 多接口结果合并;
- 正则提取;
- 输出结构规范化。
十三、配置 Nginx 和 HTTPS
生产环境中,不建议直接使用 IP 访问 Dify,建议绑定域名并配置 HTTPS。
1. 安装 Nginx
sudo apt install -y nginx
2. 创建 Nginx 配置
sudo nano /etc/nginx/sites-available/dify.conf
写入以下配置:
server {
listen 80;
server_name dify.example.com;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3. 使用 Certbot 配置 HTTPS
安装 Certbot:
sudo apt install -y certbot python3-certbot-nginx
申请证书:
sudo certbot --nginx -d dify.example.com
证书自动续期测试:
sudo certbot renew --dry-run
十四、常见问题与排查方法
1. 页面打不开
先检查容器状态:
docker compose ps
查看日志:
docker compose logs -f nginx
docker compose logs -f web
docker compose logs -f api
检查端口是否被占用:
sudo lsof -i :80
sudo lsof -i :443
2. 模型调用失败
检查以下项目:
- API Key 是否正确;
- 模型供应商 Endpoint 是否正确;
- 服务器是否可以访问模型接口;
- 模型名称是否填写正确;
- 余额或额度是否充足。
可以用 curl 测试网络连通性:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx"
3. 工作流运行很慢
可能原因包括:
- 模型响应慢;
- 知识库检索数据量过大;
- Prompt 太长;
- HTTP 请求节点接口响应慢;
- 服务器资源不足。
查看资源占用:
docker stats
优化方法:
- 使用更快的模型;
- 减少知识库 Top K;
- 压缩 Prompt;
- 给外部 API 设置合理超时;
- 增加服务器 CPU 和内存。
4. API 调用返回 401
通常是 API Key 错误或请求头格式不正确。正确格式为:
Authorization: Bearer app-xxxxxxxxxxxxxxxx
5. API 调用返回 400
常见原因:
- 输入变量名与工作流开始节点不一致;
- JSON 格式错误;
- 缺少
response_mode; - 缺少
user字段。
十五、工作流设计最佳实践
1. 将复杂任务拆成多个节点
不要把所有逻辑都塞进一个 Prompt。复杂任务建议拆成:
理解需求 → 检索资料 → 判断条件 → 生成结果 → 格式校验
这样更容易调试,也更稳定。
2. 让 LLM 输出结构化内容
如果后续节点需要使用模型输出,尽量让模型输出 JSON,例如:
{
"intent": "password_reset",
"confidence": 0.92
}
这样可以减少解析难度。
3. 对关键步骤增加条件判断
例如客服机器人中,知识库没有命中时不要强行回答,而应该转人工或提示补充信息。
4. 控制 Prompt 长度
Prompt 越长,成本和延迟越高。应尽量只传递必要信息。
5. 做好日志和版本管理
工作流上线前建议多轮测试。生产环境中,修改工作流后应记录版本变化,避免影响线上业务。
十六、总结
Dify 工作流是构建 AI 自动化应用非常高效的工具。它兼具可视化编排、模型调用、知识库检索、条件分支、HTTP 请求、代码处理和 API 发布能力,既适合快速原型验证,也适合企业内部自动化系统建设。
通过本文,你已经了解了:
- 如何安装 Docker;
- 如何部署 Dify;
- 如何启动、停止、更新和排查服务;
- 如何配置大模型;
- 如何创建基础工作流;
- 如何使用知识库增强客服回复;
- 如何通过 API 调用工作流;
- 如何使用 HTTP 请求节点和代码节点;
- 如何配置 Nginx 与 HTTPS;
- 如何处理常见问题。
如果你是初学者,建议先从“文章摘要分类工作流”开始练习;如果你是企业用户,可以进一步尝试“知识库客服”“自动报告生成”“数据接口查询”“工单分类处理”等场景。Dify 的真正价值不只是让 AI 回答问题,而是让 AI 参与完整业务流程,成为可集成、可控制、可持续优化的自动化生产力工具。