Dify 构建电商退货智能体 —— 便于理解平台功能及典型需求

9 阅读6分钟

下面是一份面向电商退货流程、基于 Dify 平台 构建智能体的 手把手实操指南。本指南使用 Dify 的 Workflow(工作流)模式,因为它能精确控制流程、支持变量传递与条件分支,非常适合结构化业务场景如“退货处理”。


🛍️ Dify 构建电商退货智能体 —— 便于理解平台功能及典型需求

目标:用户输入“我要退货”后,智能体自动完成:

  1. 验证订单是否存在
  2. 判断是否符合退货政策(7天内、未拆封等)
  3. 根据商品类型推荐退货方式
  4. 生成退货单 & 回复用户

✅ 前提条件

  • 已注册 Dify 账号(或本地部署)
  • 已配置 LLM 模型(如 GPT-4、Claude、通义千问等)
  • 有模拟的 订单查询 API退货单生成 API(可先用 Mock 服务)

💡 若无真实 API,可用 Dify 内置 HTTP 工具 + Mock API(如 Postman Mock Server 或 mockapi.io) 模拟。


🧩 第一步:创建 Workflow 应用

  1. 登录 Dify 控制台
  2. 点击 “+ 创建应用”
  3. 选择 “Workflow” 类型(不是 Agent!)
  4. 应用名称:电商退货助手
  5. 点击 “创建”

🧱 第二步:设计工作流节点(共 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 画布中,用鼠标拖拽连线即可实现。


🧪 第四步:测试工作流

  1. 点击右上角 “调试” 按钮
  2. 输入测试语句,例如:
    • "订单#1001发错货了,我要退货"
    • "我的订单#999还没收到,能退货吗?"(测试无效订单)
  3. 查看每一步的变量值和输出
  4. 修正提示词或条件表达式

💡 使用 “日志”面板 查看 HTTP 请求/响应、LLM 输入输出。


🚀 第五步:发布与集成

  1. 点击 “发布”
  2. 获取 API 端点(用于集成到电商网站/APP)
  3. 前端调用示例(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构建工作流智能体的过程。