ChatGPT与LlamaIndex:创造专属智能客服

290 阅读4分钟

需求背景

客服知识库:是存储和管理客户服务信息的系统,可提高客户满意度、品牌忠诚度并优化客服工作流程。

近日,收到咱们客服部提出的新需求:打造部门业务的客服知识库,利于知识传承和交流。一番沟通了解,落地大致像这样:

客服们反馈还是蛮好用的,但站在产品角度思考,会发现“发帖并回复”社交客服形式存在以下问题:

  • 答案可读性较低:一定情况下,需要在大段落“回复”中找答案
  • 检索体验较低:需通过“输入关键词-结果筛选-打开回复页”完成检索
  • 可维护性一般:信息的新增与更新,都需要人工进行分类和排版

那么,有没有更好的解决方案呢?

当前热门ChatGPT是不错的选择,但是它无法给到我们专属的答案。幸运的是,我们可以通过技术升级,让它学会我们的知识库,成为专属客服机器人。

技术方案

实现专属客服的核心在于:如何让ChatGPT学会客服知识库?

目前业内主要有两个思路:

  1. 模型微调(Fine-tunes),得到适应我们业务场景的新模型;
  2. 中间件(LlamaIndex),在输入问题的同时将“例子”也给到模型,达到现学现答的效果

注:目前仅可微调GPT-3模型,但API支持GPT-3.5调用

进一步调研内容如下:

方案简介优点缺点
Fine-tunes模型微调拓展性强,准确度一般训练和请求成本高
LlamaIndex在请求时给予“上下文”成本一般,准确度优秀拓展性一般

出于 实现成本和应用场景 考量,我们这次选择 LIamaIndex + OpenAI API 方案实现需求。

LlamaIndex

LlamaIndex:LlamaIndex (GPT Index) 是一个提供中央接口以将您的 LLM(large language model,大语言模型)与外部数据连接起来的项目。

我们通过栗子,来理解它解决ChatGPT的什么问题(如下图所示):

image.png

可以看到,ChatGPT给了一个错误的答案,我们需要喂给它正确的栗子矫正(如下图所示):

image.png

那么,我们在输入问题的同时,将知识库输入给ChatGPT,问答不就准确了?
不行,原因有两个:

  1. 每次请求ChatGPT是按token收费(1token≈0.73单词), $0.002/1K tokens,价格不菲。
  2. 每次请求ChatGPT是有token最多4096个。

聪明的小伙伴,可能想到了,那么每次询问ChatGPT像栗子一样,带上与问题关联性强的知识问题就迎刃而解了?是的,这就是LlamaIndex所提供的!

技术实现

LlamaIndex 运作流程:

  • 将知识库文本,转为index.json
  • 接收用户提问,通过index.json筛选关联性知识内容,一并发送给ChatGTP
  • 接收ChatGPT回传,对用户回复

技术实现细节如图所示:

具体代码及注释,我放在了colab上面(智能客服实现),提示prompt 与 回应completion,也可以在线编辑测试。大家有兴趣可以在线运行试试。

注:Colab是由Google提供的基于云端的开发环境,允许用户在Web浏览器中编写、运行和共享类似Jupyter Notebook的代码,提供了强大的计算资源。

结果展示

image.png 借助更丰富的知识库建设,以及客服人工强化学习,效果会更好。

目前在与客服协作训练,待通过后,起个后端服务,就可以供客户端调用了~

经验总结

本文介绍了如何通过 LlamaIndex + ChatGPT(OpenAI API) 技术方案,实现智能客服机器人。相比较于传统的社交客服形式,智能客服机器人可以提高答案可读性和检索体验,同时提升知识库的可维护性。

具体讲解了 LlamaIndex 的运作流程以及技术实现细节,并提供了 Colab 上的代码示例。

彩蛋:上面两段总结是ChatGPT自动生成的 :)

产品思路再做延伸,通过特定场景(帮助中心、社群自动回复)知识库训练,都可以让AI智能客服大展身手,广袤天地,AI大有可为!

参考资料

开源项目 LlamaIndex docs

Build AI chatbot with custom knowledge base using OpenAI API and GPT Index Irina Nik

OpenAI API reference [Fine-tunes] docs

写了技术文档别人不看?用GPT+llama_index解决!