Dify 企业级应用案例
02

电商售前售后客服(查单 / 退款 / 咨询三分支)

Chatflow + 自定义工具难度 ★★★

意图分类分流 + API 工具调用,一个入口覆盖售前售后全链路:订单类请求自动查真实数据,LLM 只做提取与话术包装,不编造订单状态。

解决什么问题

客服需要同时处理三类请求:商品咨询(答知识库)、订单查询(要查业务系统)、退款申请(要调业务接口写数据)。纯 RAG 客服只能答第一类,后两类仍要人工。

方案价值
  • 意图分类分流 + API 工具调用,一个入口覆盖售前售后全链路
  • 订单类请求自动查真实数据,LLM 只做提取与话术包装,不编造订单状态
  • 阿里云官方方案同款架构,可平移到任何有 API 的业务系统(ERP/CRM/OA)

架构与节点流程

开始→意图识别(问题分类器)├─ query_order 查订单LLM 提取订单ID→工具:查询订单→LLM 组织回答→直接回复├─ apply_refund 退款LLM 提取订单ID→工具:查询订单→LLM 分析退款原因→工具:创建退款→LLM 整理结果→直接回复└─ other 商品咨询知识检索(商品库)→LLM 回答→直接回复

依据:阿里云官方方案《搭建对话流(Chatflow)AI 电商客服助手》,节点与分支逻辑与其手动搭建路径一致。

搭建步骤

1

创建商品知识库

知识库 → 创建知识库 → 导入已有文本,上传商品介绍文档。参数:分段通用 / 索引高质量 / Embedding:text-embedding-v4 / 检索:混合检索。召回测试验证商品参数问答准确。

2

创建两个自定义工具(对接业务 API)

工具 → 自定义 → 创建自定义工具,用 OpenAPI(Swagger) Schema 定义。鉴权:请求头 / Bearer / Authorization(值 test123 为示例,生产换成动态 token 并限制来源 IP)。

自定义工具 · OpenAPI Schema(查询订单 + 创建退款)
openapi: 3.0.0
info:
  title: 电商客服工具
  version: 1.0.0
servers:
  - url: http://<你的业务服务器IP>
paths:
  /order:
    get:
      operationId: queryOrder
      summary: 查询订单信息
      parameters:
        - name: orderid
          in: query
          required: true
          schema: {type: string}
          description: 12位订单号
  /refund:
    post:
      operationId: createRefund
      summary: 创建退款申请
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                orderid: {type: string, description: 12位订单号}
                reason: {type: string, description: 退款原因}

保存后点「测试」验证两个函数能通。这一步的本质:把任意已有 REST API 包装成 Dify 节点可调用的工具——换成你们公司的订单/工单/ERP 接口即可复用整个案例。

3

创建 Chatflow 与意图识别

新建 Chatflow,删掉默认节点,添加问题分类器:模型 qwen-max(或同级),开启记忆与记忆窗口,分类:

问题分类器 · 分类与说明
query_order   用户想查询订单状态、物流、发货进度 → 输出 query_order
apply_refund 用户想申请退款、退货、售后 → 输出 apply_refund
other        商品咨询、参数比较、其他问题 → 输出 other

说明:需结合历史对话上下文判断;一句话里同时有退款和查单时,
按用户最终目的分类(如"不要了,把钱退我"= apply_refund)。
4

query_order 分支:提取订单号 → 查单 → 作答

  1. LLM「识别订单ID」(温度 0):从 sys.query 提取订单号,输出约束写在提示词里:
LLM · 识别订单ID(查单/退款分支各一个,提示词相同)
任务:从用户输入中提取订单号。
规则:
1. 订单号是正好 12 位的连续数字。
2. 只输出订单号本身,不要任何其他文字。
3. 如果用户输入中没有 12 位订单号,只输出:0
4. 如果数字超过 12 位,禁止截断,视为无订单号输出 0。

用户输入:{{#sys.query#}}
  1. 工具节点「查询订单信息」:orderid 选择「识别订单ID → text」输出变量。
  2. LLM「根据订单信息回答」:上下文取工具返回 text,提示词核心:「你是电商客服,根据查询结果回答订单状态,包含订单号、状态、物流信息;如查询结果为空或无订单号,礼貌请用户提供 12 位订单号。禁止编造未出现在结果中的信息。」
  3. 直接回复 输出 LLM 文本。
5

apply_refund 分支:五节点串行

  1. LLM 识别订单ID(同上提示词)
  2. 工具「查询订单信息」(先查单确认存在)
  3. LLM「分析退款原因」:「从用户消息提取退款原因,没有则输出『无』。只输出原因短语,不超过 30 字。」
  4. 工具「创建退款申请」:orderid ← 识别订单ID.text;reason ← 分析退款原因.text
  5. LLM「整理退款结果」:把接口返回 JSON 转成友好话术(含工单号、预计时效);缺订单号或缺原因时分别提示补充。
  6. 直接回复
6

other 分支:RAG 商品咨询

知识检索(sys.query → 商品知识库)→ LLM(上下文 = 检索结果;提示词同案例一第 5 步的「只依据资料回答」模板,把「内部助手」换成「电商客服」)→ 直接回复。

7

调试、发布与嵌入

  1. 预览分别测三类话术:「我的订单 123456789012 发货了吗」/「不要了,退款」/「A67 和 A68 屏幕有什么区别」。
  2. 发布 → 发布更新 → 运行,拿到 Web 地址。
  3. 嵌入商城:复制 iframe 代码贴入站点模板;或「访问 API」创建密钥走 RESTful 集成(密钥放服务端,禁止前端明文)。
  4. 在监控里观察各分支 token 消耗,给工具类分支设置用量告警。
为什么「LLM 提取 → 工具执行 → LLM 包装」要拆三个节点?
让 LLM 直接决定调工具(Agent 模式)虽然省事,但订单号提取错误率与幻觉率都更高;拆开后每步输出可单测、可审计,这是生产级 Chatflow 与 demo 的分水岭。
坑
① 写操作(退款)接口务必在业务侧加幂等与二次校验,LLM 提取的 orderid 可能格式合法但不存在;② 高峰期给工具接口设限流;③ 业务 API 用内网地址 + 网关鉴权,不要暴露公网无鉴权。

准备好开启数字化转型之旅了吗?

我们的专业团队将为您提供全方位的技术咨询和解决方案

免费咨询
快速响应
质量保障