1、非常现实的问题
像绝大多数小型科技公司一样,作为一家中关村里的软件企业,我们的产品定位清晰、目标客户明确,在自己擅长的领域持续研发和耕耘,拥有了一定规模的用户群。
在公司发展的近10年时间里,我和我的同事共接待了近万名客户,这些客户有的购买了我们的产品成了真正的用户,有的只是做了咨询。我们的售前人员和售后服务人员平均每天要花3个多小时通过QQ或微信与客户聊天,每年的聊天记录保存下来有上万条,电脑的大部分空间被历史聊天记录占据着。
说到这里,你可能猜到我想说什么了。那就是:这么多客户、这么多次的沟通,聊天的内容大多是雷同的。
分析总结一下几十万条聊天记录,最后发现交流的内容竟然都聚焦在仅仅一百个左右的具体问题上。换句话说,我们大部分时间是在做重复的工作、说重复的话,只是面对的人不同、说话的语气不同、聊天的话术不同而已,但沟通的内容是一样的。这一点我们每个人也是非常清楚的,同样的话在翻来覆去的说,所谓的成长,只是语气更温和了、讲话更简洁清楚了、说话的主题更明确了、让用户更容易理解和接受我们了......(这就是我们与机器的区别吧)。
大概5年前吧(2018年),我就有了使用AI客服的想法,在用户访问我们的网页或APP的时候,使用智能聊天机器人接待客户,回答客户问题,必要时再引导到人工客服那里进一步沟通,从而实现节约接待成本、提高接待效率的目的,毕竟机器人可以时刻在线,如果足够智能应该还是不错的。这期间我也逐渐开始接到一些智能机器人呼入的推销电话、打过一些大厂的智能客服电话、在大厂的网页上跟一些机器人聊过天,说实话,总体效果不好,不管对方是多么大的企业,实现的效果真的很牵强,经常答非所问、不能真正理解客户需求,也很难解决实际问题,最终还是要转到人工,排队等待真人客服接待。三大电信公司、银行、几大云厂商的智能电话都是这个情况,真正的效果他们应该也清楚。
效果不理想的原因其实很简单,那就是这些智能客服其实一点也不“智能”,他们采用的技术只是传统的搜索和匹配,并没有上升到“学习”、“总结”、“理解”和“推理”的层次。这个结论是我自己在反复调查、体验和技术尝试的过程中总结出来了。
这个情况直到2022年11月份一天,被彻底改变了,那就是ChatGPT的出现,简直是平地一声雷,惊呆了所有人。紧接着是几款开源大模型的出现,让众多模仿者欣喜若狂。从大厂到小公司无不是基于开源代码,纷纷构建自己的大模型。2022年应该是真正智能的、可用的、亲民的、廉价的聊天机器人出现的元年。
下面我把我们这一路尝试开发智能客服机器人的过程给大家简述一番。
2、实现过程
1)首次尝试:使用大厂的聊天机器人产品,结果让人崩溃
在2022年前后,我们先后尝试了两家大厂的聊天机器人服务:xx云小蜜和xxx云智能聊天机器人。
单看产品介绍这两款产品还是不错的,能够满足我的期望需求的,只是价格稍贵(每路每年2000元左右,调用一次接口1分钱左右)。贵就贵点吧,只要能够达到预期效果,价格还是能接受的。
我们按照产品指南准备聊天素材、开发聊天界面、调用接口实现自动聊天。这个过程并不复杂,大约一周时间搞定。
效果如何呢,客观的说是非常不如人意!不论我们如何调整优化聊天素材,效果总是达不到预期。
总体结论是:生硬、答非所问、回答重复无新意、没有人情味。这哪里是AI,这就是一个查询程序。因为不是AI,同样的问题换个问法是没有答案的,除非你准备所有问法的素材。
2)再次尝试:自己开发聊天机器人
在尝试了大厂的聊天机器人后,我们发现所谓的智能机器人无非就是一个查询程序。
于是我们做了一疯狂的举动,自己开发一个聊天机器人。
局限于当时的情况,我们技术选型看是先进,实则方向完全错误。最大的错误是:当时(2023年)ChatGPT和相关开源系统已经出现,而我们还是选择了错误的技术。
总体方案是:全文搜索技术+多模式匹配+更全面的素材+多个命中的随机使用。
实现效果可想而知:比上面的使用xx云的效果要好,但是里预期效果还很远。
3)三次尝试:使用AI大模型技术
错误的尝试让我们意识到,要想做好客服机器人,除了AI大模型技术没有其他选择。
我们反反复复的体验ChatGTP的效果,他是那么的聪明,那么的人性化,那么的善于学习和归纳总结,已经远远超出了我们大部分人类。
原来打算使用ChatGPT的API服务来实现新版本的客服机器人,但是由于各种限制和价格问题,我们开始转向开源大模型。
经过对比测试,我们选择Meta的大模型Llama-2。国内有几个基于Llama-2微调的项目,这些项目大都在原版Llama-2的基础上扩充并优化中文词表,使用中文大数据语料进行增量预训练,以增强中文语义的理解能力。我们测试几个项目,效果还真不错,这给了我们很大信心,于是我们也开始沿着这个路线开始了大模型的搭建和调优。
这个过程主要是学习、调试和调优的工作,比上面的第二次尝试轻松不少,至少不用自己去实现对话的细节,开发编码工作也很少。主要工作包括:
扩充中文词表 使模型的通用语言能力结合企业专有数据、行业数据、客服聊天数据来训练大模型。为此我们使用了企业知识库、行业知识库和客服聊天记录。我们把有代表性的聊天内容筛选出来,对说话内容进行编辑,使答案更加规范准确、用词更加平滑友好。 训练个性化人物特征,这个过程也是准备个性化语料,重点是让大模型学习用什么样的语气与人沟通,碰到一些特殊问题如何应答。 定制prompt提示工程,通过强化学习,进一步扩展大模型的能力。 开发脚手架工具,方便挂载和更新企业知识库数据。使用这些工具我们可以直接挂载txt、doc、md、pdf等各种格式数据。 使用带有较高性能GPU的电脑行大模型运行和测试模型效果,并持续进行迭代优化。经过多轮的测试和优化,大模型的运行效果竟然远超我的预期,现在她的回答准确率在95%以上,比我们大部分人工客服做的还好!
她是如此的善于学习,我们一次次的把优化后的语料交给她去学习(训练),每次效果都有提升;她是如此的善于总结和推理,能够从我们给她的学习资料中总结出更好的答案!她又是如此的大胆和随意,有时候会对客户问的问题闭着眼睛说没问题!
在系统上线时,我们给大模型起来一个好听的名字:云云。至此我们的大模型算是有了正式身份,可以上岗了。
现在我们都称呼我们的大模型为“云云”,她好像也很喜欢这个称呼,我们已经把她人格化了。
大家有兴趣可以和云云聊聊,请注意,她是个客服人员,聊天重点只在公司业务范围内。
3、总结
至此,我的开发人工智能客服的尝试告一段落,说一下自己的体会吧。
1)如果要做智能客服,大模型是最好的选择,因为它是真正的“智能”:会学习,会总结,会推流,不刻板,有人情味。
2)企业知识库和个性化数据的搜集整理和编辑很重要,这些是大模型的学习资料,直接决定你的大模型是不是更像你。
3)要想做的更好,要选用合适的大模型,衡量标准包括:是否容易搭建和使用、是否容易调优、是否具有持续性、模型的大小、基础语料的大小和质量、适用的场景(知识问答、聊天、客服、多轮对话...)、运行成本等等。
4)开发自己的工具集,让模型的调优和知识更新在一个高效的平台上运行。