当前位置: 首页 > news >正文

基于GPT的智能客服落地实践

📍前言

在日常生活中,「客服」这个角色几乎贯穿着我们生活的方方面面。比如,淘宝买东西时,需要客服帮你解答疑惑。快递丢失时,需要客服帮忙找回。报名参加培训课程时,需要客服帮忙解答更适合的课程……

基于此背景下,可以了解到客服在我们生活中的重要性。传统的客服更多是以「一对一人工回复」的方式,来帮我们解答疑惑。那在以GPT为例的各类大模型爆火之后,纷纷涌现出一些新奇的「智能客服」。那在下面的文章中,就将来聊聊,关于大模型在智能客服领域相关的一些落地方案。

以下文章整理自 稀土开发者大会2023·大模型与AIGC-掘金 第二部分,讲解关于 Think Academy 公司,基于GPT的智能客服落地实践方案。

一、💬项目背景

该公司想要做这个项目的背景如下:

  • 从业务场景出发:希望提供一个体验更好,响应更实时的智能客服。
  • 从技术层面出发:跟进新技术,以及验证大模型在生产环境下的可应用性和可塑性。

基于上面的背景信息,分析出即将要做的智能客服系统,要满足以下几个场景:

  • 回答教育机构的教学理念、如何上课等类似静态的相关咨询。
  • 当用户问到和入学测相关的问题时,会去引导用户去添加相关的教学主任,之后做相关的转化的动作。
  • 希望大模型只回答业务相关的问题。

image.png

有了上面的基本信息铺垫以后,接下来来介绍,关于智能客服系统的第一个版本。

二、💭问答客服V_1.0 — 基于企业专有知识库的客服系统

技术选型、方案设计、数据表现及缺陷

1、如果让大模型学会特定领域知识

(1)两种学习方式

首先在刚开始,我们调研到了有两种预训练方式:Fine-tuning LearningIn-context Learning

Fine-tuningIn-context Learning是机器学习中用于调整预训练模型的两种不同方法。它们之间的主要差异有:

Fine-tuning(微调)👇🏻:

  1. 定义:在预训练模型的基础上,用特定任务的数据集进行再训练,调整模型的参数以适应新任务。
  2. 数据需求:需要一定量的标记数据来进行微调。
  3. 训练时间:根据任务的复杂性和数据量的大小,微调可能需要一定的时间和计算资源。
  4. 泛化能力:微调后的模型在特定任务上表现很好,但可能在其他任务上表现不佳。
  5. 应用范围:适用于有足够数据的任务,并且希望模型在这个特定任务上达到最佳性能。
  6. 灵活性:一旦微调完成,模型就固定了,想要适应新任务需要再次微调。

In-context Learning(上下文学习)👇🏻:

  1. 定义:在不改变预训练模型的参数的情况下,通过向模型提供包含任务信息的上下文来使其执行特定任务。
  2. 数据需求:不需要额外的训练数据,但是需要为每个任务设计合适的上下文。
  3. 训练时间:不需要再训练,可以立即用于各种任务。
  4. 泛化能力:可以应用于多种任务,但性能可能不如微调后的模型。
  5. 应用范围:适用于数据稀缺和任务多样的场景。
  6. 灵活性:非常灵活,可以通过改变上下文来快速适应新任务。

总的来说,如果你有足够的标记数据,并且希望在特定任务上获得最佳性能,微调可能是更好的选择。而如果你需要模型适应多种任务,并且希望迅速部署,上下文学习可能更合适。

因此,基于上述两种学习方式的调研后,最终V1.0版本选择了 In-context Learning 的预训练方式。

(2)in-context learing

确定了上面这种预训练模式之后,接下来,就要思考,Prompt该怎么进行组织。可以理解为,给定一个题目,如何让大模型有相应的回答。

那在解决这个问题的过程中,就需要去攻克之后三个问题:

  • 语料要如何组织
  • 如何匹配到和用户问题相关的语料
  • token如何进行限制

2、V1.0系统设计

有了上面的问题,接下来就是攻克上面这三个问题。

(1)知识库的搭建

第一个是解决关于语料的问题。在V1.0版本中,采用的是人为清洗数据的方式。

可以看下图👇🏻,左边是原始语料,会先先人为地对这些数据先清洗一下,得到最后要使用的数据。

之后呢,就是把清洗后的数据,转换为右边的结构化语料

(2)全局流程图

接着是攻克第二和第三个问题,请看关于该系统 V1.0 版本的全局流程图:

3、线上数据表现

V1.0系统搭建完成了,下面来看看线上的数据表现。可以看下左边这张图,里面有关于相关问题回复评分不相关问题评分

最终得出的结论是:

  • 相关问题评分 → 1分2分的问题还是比较多,1分case基本算是一本正经地胡说八道了。
  • 不相关问题评分 → 整体表现还可以。

4、设计缺陷

在分析了线上数据之后,V1.0版本的设计总结出有以下缺陷:

  • 需要扩展更多的覆盖场景,如老师咨询、课程咨询等。
  • 动态信息的维护麻烦,给业务增加过多的维护成本。比如很多短期的活动、每学期的上课课程、上课时间等内容都会频繁地变动,这无形中给业务方带来了很大的麻烦。
  • 部分情况下,ChatGPT存在自由发挥的情况,不完全可控。

三、🗯问答客服V_2.0 — 基于指令识别的智能客服系统

技术选型、AutoGPT原理介绍、方案设计、数据表现

分析了设计缺陷之后,接下来就继续迭代了V2.0版本,可以说是从问答客服到智能客服的一个转变。

1、问答客服升级为智能客服

V2.0总结下来就是,基于指令识别的智能客服系统。

基于V1.0的设计缺陷,到了设计V2.0时,第一想法就是去扩展相关的语料库。以此让GPT回答公司更多的业务问题和更多的教学场景。

但在实践过程中发现,随着语料的数据量增加,会导致匹配准确率直线下降。又或者,如果语料的相似度很高,也会导致匹配的准确率直线下降。比如老师信息课程信息,有可能只是两个老师的名字不同,但其他内容都相同。这也就是下图提到的方案一。

就在烦于要用什么方案来解决时候,AutoGPT问世了,于是借助AutoGPT的设计思想,也就有了下面方案二的方案。

2、AutoGPT原理介绍

AutoGPT的原理是基于预训练语言模型,使用大量的语料库进行训练,从而学习到自然语言的规律和特征,进而生成符合语法和语义规则的文章。AutoGPTGPT的改进版,通过自动搜索算法来优化GPT的超参数,从而提高其在各种任务上的表现。

AutoGPT使用多层的自注意力机制前馈神经网络,可以有效地处理长文本序列,从而提高生成文章的质量和准确性。在生成文章时,AutoGPT会根据输入的文本内容,通过预训练模型进行编码,然后使用解码器生成符合语法和语义规则的文章。

3、AutoGPT 的 Prompt组织形式

AutoGPT也是基于Prompt来进行组织的,总结下来主要有三种组织形式:

  • 内置能力
  • 数据结构化
  • 记忆缓冲区

(1)内置能力

AutoGPT内置了很多工程上的能力,比如:

  • Google Search
  • 文件的读写
  • 类似github相关的代码拉取
  • 等等……

这些都定义在AutoGPT它内部的程序里面。

(2)数据结构化

第二个是数据结构化。相当于AutoGPT要求ChatGPT的返回必须是一个JSON结构。

(3)记忆缓冲区

AutoGPT的记忆缓冲区是指用于存储临时数据或信息的区域。在AutoGPT中,记忆缓冲区可能用于存储生成的文本片段、上下文信息或其他临时数据,以便在生成过程中使用。这样的缓冲区有助于AutoGPT在处理长文本序列时保持连贯性和一致性,从而提高生成文章的质量和准确性。

4、AutoGPT流程图

了解了上面AutoGPT的基本原理三种组织形式以后,下面来看AutoGPT的流程图。如下图所示👇🏻:

5、V_2.0 设计过程

(1)方案设计

该公司参考了上面AutoGPT的思想,就有了V2.0的方案设计。

如下图所示,最左边就是整个业务系统的提示词,其中内置了几种命令。比如:第一个是获取老师的命令、第二个是获取课程信息的命令、第三个是兜底的命令(如果走的逻辑不是前面两种类型的命令,那么就会去执行原来V1.0方案的命令,让GPT「基于知识库去回答用户问题」的命令。)

(2)整体流程

下面我们来看下V2.0的整体实现流程,如下图所示:

(3)调试数据

最后来分析下V2.0方案中,调试数据的整体过程表现。如下图所示:

四、📢总结

迭代过程中的一些心得和思考

1、思考与总结

经过上面两个版本的迭代,得到了一些总结。如下所示:

开发思维 —— 相信大模型很聪明,并尽量让它做更多的事情。

模型能力 —— 详细了解各模型和参数的使用,以及prompt组织形式的设计。

效果调优 —— 根据业务场景,明确调优方案和目标,做好预期管理。

2、讨论

  • AutoGPT在调用的过程中,会存在死循环

五、🐣彩蛋One More things

  • 稀土开发者大会2023·大模型与AIGC-掘金

  • 🎬 PPT下载&回放链接|2023稀土开发者大会大模型与 AIGC 分论坛

相关文章:

基于GPT的智能客服落地实践

📍前言 在日常生活中,「客服」这个角色几乎贯穿着我们生活的方方面面。比如,淘宝买东西时,需要客服帮你解答疑惑。快递丢失时,需要客服帮忙找回。报名参加培训课程时,需要客服帮忙解答更适合的课程…… 基…...

Sourcetree和GitLab的结合使用

一、写在前面 为什么是Sourcetree和GitLab?因为遇到的坑最少,在不用梯子的情况下,推送速度还可以。 这篇文章主要介绍的是,怎么把自己写的代码文件打包放到GitLab上去,方便别人下载使用,也方便自己在另一…...

双十一开启极速达夜派;黑神话获泰国年度最佳游戏;AI 模型可帮助识别 17000 多种疾病的候选药物....| 网易数智日报

双 11 菜鸟在北京、上海、广州、杭州等城市开启「预售极速达夜派」服务 10 月 21 日,菜鸟在北京、上海、广州、杭州等城市开启「预售极速达夜派」服务,批量大促包裹实现小时级送达。 据介绍,在消费者支付尾款前,菜鸟供应链就已经…...

深入理解JAVA虚拟机(一)

介绍JAVA虚拟机的运行时数据区域 按照物理结构来划分:java虚拟机主要由以下几部分构成栈、堆和程序计数器,其中栈又可以分为虚拟机栈VM stack 和 本地方法栈 Native Method Statck,堆可以划分方法区和普通的堆内存。按照逻辑划分线程私有空间…...

从Excel文件中读取数据

笔记 import openpyxl # 打开工作簿 workbookopenpyxl.load_workbook(景区天气.xlsx) # 选择要操作的工作表 sheetworkbook[景区天气] # 表格数据是二维列表,先遍历的是行,后遍历的是列 lst[] # 存储的是行数据 for row in sheet.rows:sublst[] # 存储单…...

深入剖析MySQL的索引机制及其选型

在数据库管理系统中,索引是一种重要的优化工具,用于加速数据的检索和查询处理。在MySQL中,合理使用索引可以显著提高数据库的性能。本文将深入探讨MySQL的索引机制,包括不同类型索引的优势、劣势及在实际使用中的选型策略。 1. 什…...

校园表白墙源码修复版

此校园表白墙源码基于thinkphp,因为时代久远有不少bug,经本人修复已去除大部分bug,添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…...

Android 内存优化——常见内存泄露及优化方案

看到了一篇关于内存泄漏的文章后,就想着分享给大家,最后一起学习,一起进步: 如果一个无用对象(不需要再使用的对象)仍然被其他对象持有引用,造成该对象无法被系统回收,以致该对象在…...

Qt6.7.2中使用OpenSSL的坑

最近编写Qt Quick项目,使用Qt6.7.2版本,CMAKE编译,开始QtCreator运行代码都没有问题,访问https也正常,但打出安装包后一试,发现https访问不了,尴尬!! 查看了相关日志发现…...

Mybatis-08.基础操作-删除

一.删除 接口方法 package com.gjw.mapper;import com.gjw.pojo.Emp; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;import java.util.List;Mapper public interface EmpMapper {// 根据ID删除数据Delete("delete from e…...

通过FDM升级Firepower

1.基本说明 本文主要主要介绍如何通过FDM来升级Firepower设备,这里以FPR1010设备为例,那么什么事Firepower、FDM呢?在开始之前,进行简单的介绍。 Firepower:思科 Firepower 是网络安全和流量管理产品的集成套件&…...

使用 Kibana 将地理空间数据导入 Elasticsearch 以供 ES|QL 使用

作者:来自 Elastic Craig Taverner 如何使用 Kibana 和 csv 采集处理器将地理空间数据采集到 Elasticsearch 中,以便在 Elasticsearch 查询语言 (ES|QL) 中进行搜索。Elasticsearch 具有强大的地理空间搜索功能,现在 ES|QL 也具备这些功能&am…...

demo说明

代码说明 MDIO总线的注册和初始化:分配并注册MDIO总线,用于与PHY设备通信。 网络设备的创建:分配网络设备(如以太网接口)。 PHY设备连接:通过phy_connect函数连接PHY设备,指定回调函数my_adj…...

【c++篇】:从基础到实践--c++内存管理技巧与模版编程基础

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 前言一.c/c内存分布二.c/c的动态内存管理方式2.1.c语言的动态内存管…...

如何减小 Maven 项目生成的 JAR 包体积 提升运维效率

在使用 Maven 构建 Java 项目时,有时需要减小生成的 JAR 包的体积,以提高部署效率或减少资源消耗。以下是一些有效的方法来减小 JAR 包的体积: 排除不必要的依赖打包时,依赖jar包独立于应用jar包 1. 排除不必要的依赖 通过排除项目…...

Python自动化会议记录与摘要生成

前言 在现代工作环境中,会议是团队沟通和决策的重要方式。然而,整理会议记录和生成摘要往往是一项耗时且容易出错的任务。幸运的是,借助Python编程语言以及一些强大的库,我们可以自动化这一过程,让机器帮助我们完成这…...

SwiftUI 中 List 或 Form 子视图关联的 swipeAction 导致展开动画异常的解决

问题现象 小伙伴们都知道,在 SwiftUI 中更快捷的增强 List 或 Form 子视图(Cell)交互功能的方法是使用 swipeAction 修改器。不过,对其使用稍有不慎也会横生枝节。 如上图所示,不适当的设置 Cell 视图布局会使 swipeAction 无法生成正确的收缩和展开动画。对此我们有什么…...

Apache Paimon Catalog

Paimon Catalog可以持久化元数据,当前支持两种类型的metastore: 文件系统(默认):将元数据和表文件存储在文件系统中。hive:在 hive metastore中存储元数据。用户可以直接从 Hive 访问表。 2.2.1 文件系统…...

C++基础:三个字符串也能搞大小?

上一篇说了三个整数比较大小,按照顺序输入的,这次我们看看字符串的,顺便把那个简化以下: 题目:这次输入三个字符串。如果用户输入“Stenbeck", “Hemingway”,“Fitzgerald”,输出将是“Fitzgerald,Hemingway&…...

了解AIGC——自然语言处理与生成

AIGC——自然语言处理与生成:揭秘AI如何生成语言 近年来,AIGC(AI Generated Content)技术迅猛发展,自然语言处理(Natural Language Processing, NLP)与生成技术的结合,使得机器不仅…...

Modern CMake 简明教程(8)- 集成Qt

在项目中集成 Qt 库需要先使用 find_package 查找 Qt 的安装位置。对于 Qt4, CMake 使用 Module 模式进行查找(FindQt4.cmake 由 CMake 提供),而 对于 Qt5、Qt6,则是使用 Config 模式进行查找,相应的 config 文件位于类似下面的目录中 D:\Qt\5.15.2\msvc2019\lib\cmake。…...

人脸应用实例:性别年龄预测

在当今科技飞速发展的时代,人脸识别技术已经从科幻电影走进了我们的日常生活。通过算法来识别人脸的特征,进而判断身份、年龄和性别,这一技术正逐步改变着我们的生活方式。今天,我们就来探讨一下基于深度学习的人脸应用实例——性…...

学习threejs,通过THREE.Raycaster给模型绑定点击事件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Raycaster光线投射概…...

Jackson Json序列化反序列化的两个坑

Jackson is a suite of data-processing tools for Java (and the JVM platform) Jackson最常用的Json序列化功能&#xff0c;引入如下的包即可&#xff1a; <properties>...<!-- Use the latest version whenever possible. --><jackson.version>2.17.1<…...

k8s_Pod健康检查

Kubernetes 3种探针介绍 LivenessProbe&#xff08;存活探针&#xff09; LivenessProbe 用于检查容器是否仍然活着。如果探针检测到容器已经失去响应&#xff0c;Kubernetes 将重启该容器。这通常用来修复由于内部状态错误或死锁引起的程序失效问题。 作用&#xff1a;检测容器…...

基于DDPG算法的股票量化交易

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【基于PyQTFaceNet卷积神经网络实现的学生人脸识别考勤系统】 2.【卫星图像道…...

eIQ笔记(UI介绍+Loss曲线+OpenART例程)

This is a very beginner-friendly article ^o^ 目录 🍂一、训练器设置 input size: learning rate: learning rate decay: Epochs: Decay Rate: Linear Decay: Batch Size: Epochs to Train: QAT(Quantization Aware Training)量化感知训练: Pruning剪枝…...

微信小程序——消息订阅

首先用到的就是wx.requestSubscribeMessage接口。 注意&#xff1a;用户发生点击行为或者发起支付回调后&#xff0c;才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合&#xff0c;一次调用最多可…...

网络原理(传输层)->TCP协议解

前言 大家好&#xff01;我是小帅&#xff0c;今天我们来学习TCP协议&#xff0c;个人主页 文章目录 1. TCP协议2. TCP的核心机制2.1TCP核心机制一&#xff1a;确认应答2.2 TCP核心机制二&#xff1a;超时重传2.3 TCP核心机制三&#xff1a;连接管理2.4 TCP核心机制四&#xf…...

oracle imp和exp 导入不同库的用户和表空间

参考&#xff1a; oracle 导入(imp)数据时的表空间(tablespace users)问题_imp tablespace-CSDN博客 网上的解决办法大概都是这种&#xff0c;但是实际测试19c数据库并不能成功&#xff0c;所以最后采取在导出文件上强行修改表空间的办法&#xff0c;改完后再继续执行导出导入…...

中国建设银行网站首页公司机构/宁波seo网络推广外包报价

Hibernate目前总共分为三大类查询&#xff1a;cretiria,hql,本地sql 【以下篇章搜集于网络&#xff0c;感谢作者】 第一&#xff1a;关于cretiria的查询 具有一个直观的、可扩展的条件查询API是Hibernate的特色。 15.1. 创建一个Criteria 实例org.hibernate.Criteria接口表示特…...

福田的网站建设公司哪家好/长春做网站公司长春seo公司

表格样式可以分为两种&#xff1a;一要表格的自身的样式&#xff0c;比如边框&#xff0c;对齐方式、背景等&#xff0c;别一种是表格中文字的样式。本文的内容包括&#xff1a; 表格样式 表格的对齐方式&#xff1a;居中、居左、居右表格的亮度和高度表格边框表格内容的样式 字…...

网站域名更换相应内容/搜索引擎排名优化方案

系列文章目录 Hadoop第一章&#xff1a;环境搭建 Hadoop第二章&#xff1a;集群搭建&#xff08;上&#xff09; Hadoop第二章&#xff1a;集群搭建&#xff08;中&#xff09; 文章目录系列文章目录前言一、自定义文件配置1.core-site.xml2.hdfs-site.xml3.hdfs-site.xml4.ma…...

wordpress 扩展/潍坊网站建设

CyclicBarrier和CountDownLatch 都位于java.util.concurrent 这个包下 一、CountDownLatch用法 CountDownLatch类只提供了一个构造器&#xff1a; public CountDownLatch(int count) { }; //参数count为计数值 然后下面这3个方法是CountDownLatch类中最重要的方法&#xff…...

深圳网站建设公司服务/seo推广编辑

今天主要还是在想办法解决我搭建的网站打不开php的问题&#xff0c;我一直想尽快解决这个问题&#xff0c;但是在今天下午的时候我决定先不着急解决这个问题&#xff0c;先着手了解与之相关的数据库和服务器配置&#xff0c;采取迂回战术&#xff0c;等我弄懂了相关技术再去解决…...

pcb设备网站怎么做/托管竞价账户哪家好

//分别输入月份&#xff0c;日期&#xff0c;输出是今年的第几天 //每年的1 3 5 7 8 10 12 是31天 //今年的2月是28天 //其他的4 6 9 11 是30天 int m131; int m228; int m331; int m430; int m531; int m630;int m731; int m831; int m930; int m1031; int m1130;Console.Writ…...