AIGC | 如何用“Flow”,轻松解决复杂业务问题
随着LLM(大语言模型)的爆火,不少企业都在寻找通过LLM解决企业业务问题的方法,以达到降本增效的效果。但是,当面对较为复杂的业务问题(如:背景资料多、问题分类多、条件判断复杂、涉及模块多等)时,以LLM当前的发展程度,仅通过简单的LLM对话交互,是无法有效地解决此类问题的,原因在于,LLM也有自身的能力限制,如幻觉、上下文等。
由极光(Aurora)开发的GPTBots平台,为解决此类问题,打造了“Flow”形态的Bot搭建模式。该模式可将复杂的业务问题简单化,通过“Flow”的方式,将复杂多变的业务问题简化并抽象为多个“节点”和“流程”,并通过可视化编排workflow方式,让多个专职LLM并行/串行工作,各司其职,从而快速地搭建起一个Bot,并立即应用于实际业务问题场景中。
本文将以搭建一个简单的“售后服务Bot”为目标,为您讲述“Flow”的实际应用过程。
找出问题,定义目标
设计一个Bot,和设计一款产品是一样的,首先需要定义该Bot需要解决的问题是什么,并定义出这个Bot的目标。
在本例中,我们需要解决的是售后服务问题。原有的售后服务,可能会包括(但不限于):
- 咨询量大,需要投入大量的人力资源在其中;
- 咨询的内容很广,意味着对客服人员的知识量要求较高;
- ……
如果有一个专门解决售后咨询问题的Bot,那么就可以帮助企业提升售后服务效率的同时,降低售后服务的成本(人力、时间、管理资源……)。
业务梳理
在定义好问题和目标后,我们需要根据实际的业务场景,先规划好Bot的流程。
在该例子中,我们可以设计出这样的一个简单的售后问题处理流程:
-
当客户提问关于保障服务(Support Service)相关问题时,则Bot基于《保障服务》文档知识,为客户解答;
-
当客户提问是关于退货(Returns)时,则Bot基于《退货》文档的知识,为客户解答;
-
当客户想要查询快递进度(Express Tracking)时,则Bot调用预定义好的快递查询插件,并为客户返回结果;
-
当客户提出关于退款(Refund)的请求时,由于该业务涉及资金流动,较为敏感,因此我们选择让Bot调用预定义好的退款处理插件,为客户执行退款,并返回结果;
-
当客户提问不属于以上任意一种类型时,我们设置一个默认回复信息给客户,例如可以让客户通过某种联系方式联系人工客服。
当然,在真实的企业售后服务中,远远不止这五种场景。企业开发者可根据实际情况设计Bot。
知识分类
在定义业务流程后,我们需要为该Bot准备售后知识数据。原因在于,既然是一个售后Bot,则这个Bot必须要熟知公司在售后服务上的所有知识,才能依照知识,对客户的问题进行合理的响应。
在准备Bot知识时,最重要的思维则是“分类”。
在售后服务场景中,售后服务人员会遇到很多不同的问题,例如可以退货吗?退货进度在哪里看?可以换货吗?怎么换?退款的话要多久能回到我的账户?快递配送到哪了?等等问题。
以上图为例,我们可以将前文业务梳理结果中涉及问答的部分,即保障服务和退货场景中的常见需要进行问答的场景进行分类,并且基于这些分类,来组织知识文档。例如《保障服务》、《退货》。
清晰的知识分类,有助于Bot对知识的学习和理解,并能在面对客户咨询时提供更加准确的回答。
Bot设计
FlowBot创建
在完成了知识组织和流程规划后,我们可以正式进入GPTBots平台,进行FlowBot的搭建。
在【FlowBot】模块中,先创建好一个售后服务Bot,并进入设置界面。
知识学习
在【知识库】模块中,分别将之前已经组织好的《保障服务》和《退货》文档提交给Bot进行学习和训练。GPTBots平台提供了多种类型的知识上传方式。
在本例中,我们选择了“Q&A”作为知识文档的管理格式。这是一种以“问答对(Q&A Pair)”为基本单位的知识储存格式。当客户提出了和其中某些问题(Q)语义相似的问题时,Bot可以迅速找到对应答案(A),并经过LLM组织语言后,给客户解答。
Flow设计
在配置好知识文档后,我们可以开始进入到Flow的设计环节中。
通过【编辑】进入Flow的可视化编辑界面。
每一个Flow都是由三个基本元素构成的:
-
输入(Input):即客户的输入信息;
-
输出(Output):即经过一系列Flow处理后,为输出给客户作为响应的信息;
-
组件(Component):各类数据处理组件,包括了LLM、知识检索、条件判断和预置响应等。
场景判断
按照我们之前对业务流程的规划,在客户提出问题后,我们需要先对客户的问题进行判断,并根据客户的问题分类,进入对应的响应流程。
因此,Flow设计的第一步,就是将【输入】的下一步设置为一个【分支判断】组件,并通过自然语言设置【退款】、【物流】和【退货】等分支。
通过这个组件,Bot会根据客户提问内容判断下一步应该往哪个流程继续下去。
知识问答:退货、保障服务
以【退货】为例。若客户提问被判断为退货,则下一步需要做的,就是为客户的提问,从知识文档中,寻找合适的回答内容。
我们可以在此添加一个【知识向量】组件,并将【分支判断】中的【退货】连接至此。在【知识向量】中,我们选择之前已经上传并训练好的《退货》文档,作为本组件的知识检索材料。
由于【知识向量】组件检索出来的结果,都是较为“生硬”的知识片段,是不能直接用于回复客户的,因此我们需要在下一步,将客户提问与知识检索结果提供给LLM,让LLM基于这些信息进行理解、分析,并最终组织出一个合适的回答。
最后,将LLM的输出信息连接至【输出】组件,完成整个的流程。以上流程放在【保障服务】分支中,也是可以复用同样的设计思路。
插件调用:快递查询、退款
当客户的请求被判定为需要查询快递进度时,我们可以设置一个LLM组件,并为该组件添加【快递查询】插件。
LLM将从客户的请求内容中提取需要查询快递的订单号,并通过调用插件,为客户返回该订单号的物流进度。
同样地,若LLM从客户的请求中识别出了【退款】意图,则会指引客户提供必须信息,并帮助客户通过插件,向系统提交请求,执行退款流程。
预置相应:其他
最后,我们需要补充一个“兜底”分支。当客户问题不属于【分支判断】中设定的任意分支时,我们通过【预置响应】组件,设定一个通用的回复信息,让客户直接联系企业客服人员,以进一步人工解决问题。
Flow总览
经过上述一系列操作后,记得【保存】,这个简单的“售后服务Bot”就搭建完成了。
Flow验证
在【保存】之后,我们可以通过【运行】或【对话】,直接测试Bot的回复效果。
在【输入】组件中,输入客户提问内容,并点击【运行】,界面上就会以虚线的形式,展示出该问题的数据流转路径,并在最终的【输出】组件中,可以看到最终的输出结果。
同样,也可以通过【对话】,直接以对话的形式,验证Bot输出效果。
现在就开始免费体验!
在接下来的一段时间内,GPTBots有一系列优化FLow功能的计划,包括会提供如Webhook、Task等组件,提供更丰富的预置响应模式等,让Flow能够在面向复杂业务场景时更加地游刃有余。
亲爱的朋友,现诚挚地邀请您加入GPTBots平台,与我们一起通过AI,创造更美好的未来。
在GPTBots平台上,您可以轻松创建企业AI助手,提升企业人效。我们拥有优秀的AI团队,并接入了全球领先的LLM及向量知识库服务,让您的创意无处不在
完成快速注册并完成开发者认证,我们将赠送您50个使用积分。您可以用积分体验各种高级功能,提升助手的智能化程度。
访问 www.gptbots.ai立即加入GPTBot
关于极光
极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。
相关文章:

AIGC | 如何用“Flow”,轻松解决复杂业务问题
随着LLM(大语言模型)的爆火,不少企业都在寻找通过LLM解决企业业务问题的方法,以达到降本增效的效果。但是,当面对较为复杂的业务问题(如:背景资料多、问题分类多、条件判断复杂、涉及模块多等&a…...

多级菜单 树结构 排序 前端 后端 java
目录 省流: 正文: v1.0版 前端传的值: 后端代码: v2.0版 v3.0版 省流: 前端提交过来整个树即可。 给整个树进行sort。代码如下: public static void sort(List<Node> tree){int i 0;for…...

LAN-Free在数据备份时的应用与优势
在灾备领域中,常见的备份架构有LAN、LAN-Free和Server-Free备份,其中LAN备份架构图见图1,LAN-Free备份架构图见图2,Server-Free备份架构图见图3,途中红色箭头为备份数据流量走向: 图 1 图 2 图 3 从图1、图…...

HTML 文档声明和语言设置
HTML 文档声明 DOCTYPE 文档类型声明,用于告诉浏览器的解析器,该以那种 HTML 版本来解析这个文件。 HTML 5 版本声明 <!DOCTYPE html>XHTML 1.0 严格版声明 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:/…...

【C++基础知识学习笔记】精华版(复习专用)
常用语法 函数重载(Overload) 规则: 函数名相同 参数个数不同、参数类型不同、参数顺序不同 注意: 返回值类型与函数重载无关 调用函数时,实参的隐式类型转换可能会产生二义性 默认参数 C++ 允许函数设置默认参数,在调用时可以根据情况省略实参。规则如下: 默认参数只能…...

探索ChatGPT在学术写作中的应用与心得
随着人工智能的迅猛发展,ChatGPT作为一种强大的自然语言处理模型,逐渐在学术界引起了广泛的关注。本文将探讨ChatGPT在学术写作中的应用,并分享使用ChatGPT进行学术写作时的一些经验和心得。 01 — ChatGPT在学术写作中的应用 1.文献综述和…...

Android:怎么学习才能更好的进大厂呢?
怎么学习才能更好的进大厂呢? 很多朋友都在问这个问题。 其实没有什么特别的技巧,就是依靠自己的毅力和决心。一天做不到,就一个月;一个月做不到,就一年。只要有决心,无论学历或资历如何,都不是…...

CSS标点符号换行问题
最近遇到一个奇怪的现象,元素中中文文本正常显示,但是加了一堆符号后中文文本居然换行了. div{width: 200px;border: 1px solid blue;word-break: break-all;} <div>文本</div>经过研究发现,因为标点符号不允许出现在行首和行尾,连带着符号…...

jdbc Preparestatement防止SQL注入的原理
2023-10-28T03:37:11.264132Z 2 Execute select * from users where username liulemon and password \ or \1\ 1\ 可以看到这一行,预编译时?变成了转义字符 useServerPrepStmtstrue加上这句才能预编译...

如何控制 LLM 的输出格式和解析其输出结果?
现在很多人对于如何使用像 ChatGPT 这样的 LLM 已经比较有经验了,可以使用各种不同的 Prompt 得到自己想要的结果。但有时候我们的使用场景不局限于手动操作,而是需要结合程序去调用 API,并且解析 API 的返回结果,从而实现一些自动…...

【Linux】 ps 命令使用
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。 语法 ps [选项] ps命令 -Linux手册页 著者 ps最初由布兰科兰克斯特撰写<lankestefwi.uva.nl>。迈克尔K约翰逊<johnsonmred…...

C++二分查找算法的应用:长度递增组的最大数目
本文涉及的基础知识点 二分查找 题目 给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件&…...

提示3D标题编辑器仍在运行怎么解决,以及3D标题编辑器怎么使用
在进行视频剪辑时,尤其是剪辑一些带有文字的开场视频,一般都会使用具有立体效果的3D标题,这样制作出来的视频效果不仅好看,还非常的炫酷,但是对于一些刚刚开始接触视频剪辑的小伙伴来说,可能对3D标题还不是…...

1. PPT高效初始化设置
1. PPT高效初始化设置 软件安装:Office 2019 主题和颜色 颜色可以在白天与黑夜切换,护眼 切换成了黑色 撤回次数 撤回次数太少,只有20次怎么办 自动保存 有时忘记保存就突然关闭,很需要一个自动保存功能 图片压缩 图…...

el-cascader级联选择器选中一个全选中问题
问题 只选中一个却把同级全选中 解决 :props中添加label、value、children属性 label、value、children属性值需要和后端返回的集合中的字段名保持一致 后端返回数据:...

Opencascad(C++)-创建自定义坐标系
文章目录 1、前言2、在Opencascad中显示小的坐标系3、在Opencascad中创建自定义的坐标系 1、前言 在Opencascad开发时,在view中可以显示小的坐标系,但是有时我们需要在建模时创建基准坐标系,当然可以作为工件坐标系也可以作为基准坐标系。本…...

MySQL数据库入门到大牛_01_数据库概述
文章目录 1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库管理系统排名(DBMS)2.4 常见的数据库介绍 3. MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Why choose MySQL?3.5 Oracle v…...

Web - Servlet详解
目录 前言 一 . Servlet简介 1.1 动态资源和静态资源 1.2 Servlet简介 二 . Servlet开发流程 2.1 目标 2.2 开发过程 三 . Servlet注解方式配置 编辑 四 . servlet生命周期 4.1 生命周期简介 4.2 生命周期测试 4.3 生命周期总结 五 . servlet继承结构 5.1 ser…...

postgresql 触发器如何生成递增序列号,从1开始,并且每天重置
大家好,我是三叔,许久不见,这期给大家介绍一下笔者在开发中遇到的业务处理:pgsql 创建触发器生成每日递增序列,并且第二天重置,根据不同的用户进行不同的控制。 1.创建生成递增序列的 table 表 -- 创建us…...

“第五十九天”
这是昨天那道题,这个后面自己的处理思路还是差了点,这道题关键感觉就是对进位的处理的,由于进位的存在,所以处理数据的时候只能从最低位开始,我一开始是从高位处理的,而且后面越来越迷,这个点一…...

IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
Docker官网 Docker官网:https://www.docker.com/ Docker Hub官网:http://hub.docker.com/ 什么是Docker Docker 是一个开源的容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编…...

【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/03
文章目录 TCP/UDP对比端口号作用字节序字节序转换api套接字 socket实现网络通讯服务端 逻辑思路demo: 满血版双方通讯/残血版多方通讯服务端 demo客户端 demo FTP 项目实现sever demo:client demo: 局域网多方通讯 配合线程实现sever demo:client demo: TCP/UDP对比…...

Leetcode刷题详解——全排列
1. 题目链接:46. 全排列 2. 题目描述: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],…...

JSONP 跨域访问(1), 简介, 原理, 实验, 缺点
JSONP 跨域访问(1), 简介, 原理, 实验, 缺点 一, JSONP 简介 JSONP(JSON with Padding)是一种非官方跨域数据交互协议。它允许web页面从不同的域名下加载数据。 由于同源策略,web页面通过XMLHttpRequest调用通常只允许访问与其自身相同域名…...

velero备份k8s集群
流程图 velero备份原理 本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。 velero的…...

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。
文章目录 2章4 章5章(没看)6章(没看) 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络,预先简历链路 卫星和地面终端有…...

Spring Boot实践 --windows环境下 K8s 部署 Docker
第一步:搭建项目并制作合适的jar包 这里我们准备好前面项目 用户管理系统 项目里的jar包。测试功能,定时任务会每过10s打印一次日志: E:\test>java -jar demospringboot-0.0.1-SNAPSHOT.jar2023-11-01 20:24:21.059 INFO 11848 --- [ …...

Linux 将Qt程序打包为AppImage包
前言 在 Linux 环境下,开发完 Qt 程序后,也需要制作为一个安装包或者可执行文件进行分发。这里介绍使用 linuxdeployqt 将 Qt 程序打包为 .AppImage 应用程序(类似于 Windows 的绿色免安装软件) 环境配置 配置 Qt 环境变量 这…...

修复国产电脑麒麟系统开机出现initramfs 问题
目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏,重启后大概率就会进…...

机器人控制算法—如何使用C++读取pgm格式的栅格地图并转化为ROS地图格式的data?
1.Introduction 近期正在做全局规划局部动态规划的项目,目前遇到的问题是,我们如何利用C处理pgm地图文件。即将地图信息要与像素点结合起来。所以我们需要知道地图读取和处理的底层原理,这样更好地在非ROS平台下移植。 2.Main 如下几条信息…...