Dify+ADB Supabase+LLM实现AI客服系统
本文介绍如何使用Dify、云原生数据仓库AnalyticDB PostgreSQL版的Supabase和LLM构建一个AI客服系统,帮助在线服装店高效处理售后咨询、订单查询和个性化回复。通过结合Dify的工作流能力、Supabase的实时数据存储与LLM的自然语言理解能力,实现快速自动化响应,显著减轻人工客服压力并提升客户满意度。
背景
云原生数据仓库AnalyticDB PostgreSQL版Supabase提供强大的数据库功能和实时数据处理能力,高度兼容PostgreSQL向量数据库。Dify是一个开源的LLM应用开发平台,支持快速构建基于RAG架构的智能应用。通过将云原生数据仓库AnalyticDB PostgreSQL版Supabase与Dify集成,您可以轻松构建高效的AI客服系统,为用户提供实时、精准的服务。
本文以在线服务装店为例,介绍如何构建AI客服系统。该系统可以处理售后咨询、获取订单信息并生成个性化回复,从而减轻人工客服压力,提升响应速度和客户满意度。主要优势如下:
数据驱动的精准回复:AI基于Supabase中真实、结构化的订单和物流数据生成回复,确保信息准确无误。
AI理解:AI不仅读取数据,还能分析客户意图和情绪,主动安抚客户。
高效自动化处理:传统客服需手动查系统再打字回复,而Dify+Supabase组合实现了秒级自动化响应,释放人工客服资源以应对更复杂的场景。
前提条件
本文以通义千问为例,需要获取API Key作为调用大模型的鉴权凭证。
操作步骤
步骤一:部署Dify
您可以在云端托管或本地部署Dify,本文介绍本地部署Dify的方法。
依次执行以下命令部署Dify。
git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d
访问
http://<IP地址>/install
注册用户并登录。IP地址为运行Dify的服务器IP地址。
步骤二:接入大模型
鼠标悬浮于右上角头像处,单击设置。
单击左侧导航栏的模型供应商,选择并安装模型供应商。本文示例选择通义千问。
安装完成后,在待配置区域,找到对应模型,并单击设置,输入API Key并保存。
步骤三:配置Supabase
在Dify界面安装Supabase插件,作为外部存储或向量存储的一部分。
单击右上角的插件,然后单击左侧的搜索Marketplace。
搜索supabase,根据提示完成安装。
授权Dify操作Supabase项目。
获取Supabase项目的URL和service role key。查询方法请参见获取API Keys。
在插件列表中找到已安装的Supabase,单击卡片,并选择API Key授权配置。
在弹出框中配置授权信息,单击保存。
步骤四:准备Supabase测试数据
创建orders表,并插入测试数据。
您可以在Supabase Dashboard页面左侧导航栏单击SQL Editor,复制以下SQL语句并单击Run,快速插入测试数据。
CREATE TABLE IF NOT EXISTS orders (
order_id TEXT PRIMARY KEY, --订单号
customer_name TEXT NOT NULL, --用户姓名
product_name TEXT NOT NULL, --商品名称
product_size TEXT NOT NULL, --商品尺码
current_status TEXT NOT NULL, --物流状态
last_updated TIMESTAMP WITH TIME ZONE NOT NULL, --最后一次更新的时间
estimated_delivery DATE --预计送达日期
);
INSERT INTO orders (
order_id,
customer_name,
product_name,
product_size,
current_status,
last_updated,
estimated_delivery
) VALUES (
'ORD12345',
'张***',
'法式复古蓝色连衣裙',
'M',
'已到达【杭州市】分拨中心,等待发往【宁波市】',
'2025-08-16 14:20:00+08',
'2025-08-20'
);
步骤五:创建电商客服工作流
在Dify界面,单击上方的工作室>Chatflow,然后创建应用。
按照以下过程配置节点。相关节点的配置操作,请参见workflow。
本示例中问题分类器中配置了三个问题分类,包括“物流”、“颜色”和“尺寸”,您可根据需要添加对应分类。分类器用于识别物流状态查询咨询,提取具体订单号,“物流”分类下的流程节点配置如下:
节点
配置信息
参数提取器
输入变量:sys.query。
提取参数:
名称:order_id。
类型:String。
描述:客户的订单号,必须是以 "ORD" 开头的字母数字组合,例如 ORD12345, ORD67890。只提取符合此格式的字符串。
必填:是。
GET ROWS
配置此节点,AI助手向Supabase发起API请求,查询物流状态。
添加节点时,选择工具>Supabase>Get Rows。
在节点配置右侧,选择已配置的API Keys。
输入变量:
Table Name:orders
Limit:100
Filter:order_id
模板转换
输入变量,变量值选择Get Rows下的json。
LLM
AI助手将查询到的物流信息与客户情绪结合,根据提示词生成回复。
上下文:选择模板转换下的output。
SYSTEM:将以下提示词复制到SYSTEM,并在<context></context>XML标签内输入“/”插入上下文。
使用以下上下文作为你所学习的知识,放在<context></context> XML标签内。 <context> <请在此处输入“/”插入上下文> </context> 当回答用户时: 如果你不知道,就说你不知道。如果你不确定时不知道,寻求澄清。 避免提及你从上下文中获取的信息。 并根据用户问题的语言进行回答。
直接回复
回复:选择LLM下的text。
测试示例
用户问题
你好,我订单号 #ORD12345 的那件连衣裙,物流没更新了,急着穿,什么时候能到?会不会丢件了
AI回复
您好,关于您的订单 #ORD12345,目前物流状态显示商品已到达杭州市分拨中心,预计将在 2 天内送达宁波市。请您放心,商品在运输过程中有完善的追踪系统,不会丢失。我们建议您保持关注物流信息,如有任何异常我们将第一时间通知您。