下面是一份面向电商退货流程、基于 Dify 平台 构建智能体的 手把手实操指南。本指南使用 Dify 的 Workflow(工作流)模式,因为它能精确控制流程、支持变量传递与条件分支,非常适合结构化业务场景如“退货处理”。
🛍️ Dify 构建电商退货智能体 —— 便于理解平台功能及典型需求
目标:用户输入“我要退货”后,智能体自动完成:
- 验证订单是否存在
- 判断是否符合退货政策(7天内、未拆封等)
- 根据商品类型推荐退货方式
- 生成退货单 & 回复用户
✅ 前提条件
- 已注册 Dify 账号(或本地部署)
- 已配置 LLM 模型(如 GPT-4、Claude、通义千问等)
- 有模拟的 订单查询 API 和 退货单生成 API(可先用 Mock 服务)
💡 若无真实 API,可用 Dify 内置 HTTP 工具 + Mock API(如 Postman Mock Server 或 mockapi.io) 模拟。
🧩 第一步:创建 Workflow 应用
- 登录 Dify 控制台
- 点击 “+ 创建应用”
- 选择 “Workflow” 类型(不是 Agent!)
- 应用名称:
电商退货助手 - 点击 “创建”
🧱 第二步:设计工作流节点(共 7 个核心节点)
我们将按顺序添加以下节点,并连接它们。
节点 1:开始(Start)
- 自动存在,接收用户输入
query - 输出变量:
{{query}}
节点 2:LLM 提取关键信息(信息解析)
目的:从用户话中提取 订单号 和 退货原因
- 类型:LLM 节点
- 提示词(Prompt):
你是一个电商客服助手。请从用户输入中提取以下信息,以纯 JSON 格式返回,不要任何解释: { "order_id": "订单编号,如 #1001,若未提供则为 null", "reason": "退货原因,如 '发错货'、'不想要了'、'质量问题' 等" } 用户输入:{{#sys.query#}} - 输出变量名:
parsed_info - 启用 “结构化输出”(Dify 支持 JSON Schema,可选)
✅ 示例输出:
{"order_id": "1001", "reason": "发错货"}
节点 3:查询订单(HTTP 请求)
目的:调用内部系统,验证订单是否存在并获取详情
- 类型:HTTP 节点
- 方法:
GET - URL(使用 Mock 示例):
https://mockapi.io/projects/your-id/orders/{{parsed_info.order_id}} - 请求头(如需要):
{ "Authorization": "Bearer {{env.API_KEY}}" } - 输出变量名:
order_data
🔐 安全提示:API Key 应在 “环境变量” 中配置(Dify 的 Secrets 功能)
模拟返回示例(Mock API):
{
"order_id": "1001",
"product_name": "无线蓝牙耳机",
"purchase_date": "2025-12-01T10:00:00Z",
"status": "delivered",
"is_opened": false
}
节点 4:判断订单是否有效(条件节点)
目的:订单是否存在?是否已发货?
- 类型:条件(Condition)节点
- 条件表达式:
{{ order_data is not none and order_data.status == "delivered" }} - 分支:
- 是 → 继续流程
- 否 → 跳转到 节点 8:异常处理
节点 5:判断是否符合退货政策(条件节点)
目的:检查是否在 7 天内 + 未拆封
- 类型:条件节点
- 先添加一个 “变量赋值”节点(可选,用于计算天数):
- 变量名:
days_since_purchase - 值(使用 Jinja2):
{{ (now() - parse_datetime(order_data.purchase_date)).days }}
- 变量名:
⚠️ Dify 的表达式引擎支持
now()和parse_datetime(需确认版本)
- 条件表达式:
{{ days_since_purchase <= 7 and order_data.is_opened == false }} - 分支:
- 是 → 允许退货(继续)
- 否 → 跳转到 节点 8:异常处理(超期/已拆封)
节点 6:生成退货方案(LLM 节点)
目的:根据商品类型推荐退货方式
- 类型:LLM 节点
- 提示词:
商品:{{order_data.product_name}} 退货原因:{{parsed_info.reason}} 请生成一段友好的退货指引,包括: - 是否支持免费上门取件 - 用户需准备什么(如保留包装) - 预计退款时间 注意:电子类商品支持上门取件,服装类需用户寄回。 - 输出变量名:
return_guidance
节点 7:创建退货单(HTTP 节点)
目的:调用后端创建正式退货单
- 类型:HTTP 节点
- 方法:
POST - URL:
https://mockapi.io/projects/your-id/returns - Body(JSON):
{ "order_id": "{{order_data.order_id}}", "reason": "{{parsed_info.reason}}", "created_at": "{{now()}}" } - 输出变量名:
return_ticket
✅ 模拟返回:
{ "return_id": "R2001", "status": "pending_pickup" }
节点 8:异常处理(LLM 节点)— 多入口汇聚
目的:统一处理各种失败情况(订单无效、超期等)
- 类型:LLM 节点
- 提示词:
用户尝试退货,但遇到问题。请根据以下情况生成友好回复: 情况: {% if order_data is none %} - 订单号不存在或无效 {% elif days_since_purchase > 7 %} - 超过7天无理由退货期限 {% elif order_data.is_opened %} - 商品已拆封,不支持无理由退货 {% endif %} 请提供解决方案(如联系人工客服)或政策说明。 - 输出变量名:
error_message
💡 此节点可被多个条件分支指向(使用 汇聚连线)
节点 9:最终回复(结束节点)
目的:整合成功或失败信息,返回给用户
-
类型:LLM 节点(或直接用“结束”节点)
-
提示词(动态判断):
{% if return_ticket is not none %} 您的退货申请已成功提交! 退货单号:{{return_ticket.return_id}} 指引:{{return_guidance}} 我们将在24小时内联系您安排取件。 {% else %} {{error_message}} {% endif %} -
连接到 结束节点(End)
🔁 第三步:连接所有节点(流程图示意)
开始
↓
[LLM: 提取订单号]
↓
[HTTP: 查询订单]
↓
{条件: 订单有效?}
├─ 否 ─→ [LLM: 异常处理] ───┐
↓ 是 │
{条件: 符合退货政策?} │
├─ 否 ─→ [LLM: 异常处理] ───┤
↓ 是 │
[LLM: 生成退货指引] │
↓ │
[HTTP: 创建退货单] │
↓ │
[LLM: 最终回复] ←────────────┘
↓
结束
✅ 在 Dify 画布中,用鼠标拖拽连线即可实现。
🧪 第四步:测试工作流
- 点击右上角 “调试” 按钮
- 输入测试语句,例如:
"订单#1001发错货了,我要退货""我的订单#999还没收到,能退货吗?"(测试无效订单)
- 查看每一步的变量值和输出
- 修正提示词或条件表达式
💡 使用 “日志”面板 查看 HTTP 请求/响应、LLM 输入输出。
🚀 第五步:发布与集成
- 点击 “发布”
- 获取 API 端点(用于集成到电商网站/APP)
- 前端调用示例(JavaScript):
fetch("https://api.dify.ai/v1/workflows/run", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
inputs: {},
query: "订单#1001我要退货",
response_mode: "blocking",
user: "user_123"
})
})
.then(res => res.json())
.then(data => console.log(data.data.outputs));
🔐 安全与维护建议
| 事项 | 建议 |
|---|---|
| API Key | 使用 Dify 的 环境变量(Secrets) 存储 |
| 敏感信息 | 不在提示词中打印完整订单数据 |
| 日志审计 | 开启 Dify 的日志记录,便于排查问题 |
| 人工兜底 | 在异常处理中提供“转人工”选项 |
📦 附:Mock API 示例(快速测试用)
使用 MockAPI.io 创建两个端点:
-
GET /orders/1001
{ "order_id": "1001", "product_name": "蓝牙耳机", "purchase_date": "2025-12-02T00:00:00Z", "status": "delivered", "is_opened": false } -
POST /returns → 返回
{ "return_id": "R2001" }
✅ 总结
通过本教程,你已构建一个 完整的电商退货智能体,具备:
- 📥 自动解析用户意图
- 🔍 订单验证与政策检查
- ⚖️ 条件分支处理不同场景
- 📤 自动生成退货单
- 💬 友好自然语言回复
这个 Workflow 有助于您理解Dify构建工作流智能体的过程。