我们是阿里云大模型技术服务团队,专注于通过专业技术服务,推动大模型技术在各行业的场景落地,涉及大模型的整体技术链路、PE调优,模型微调以及迁移支持等工作。
1. 背景介绍
客服质检,就是基于一定规则检验客服的回复和对话是否合规,例如给定一条规则判断客服回答是否合乎礼貌,需要检验的是对话文本中客服是否使用了礼貌用语,使用则合规,不使用则不合规。随着AI大模型的兴起,智能判定合规的方法逐渐取代传统的人工判定,大模型因其出色的性能成为目前主流的方法。
从本质上说,客服质检-->给定对话文本,判定合规/不合规-->文本二分类任务,针对文本分类任务,大模型一般有几种解决方法:直接判定,加入提示词判定和微调,直接判定速度快便宜但效果不好,提示词判定迭代次数多,微调高成本高耗时但效果好,具体选择哪种方法需要结合实际需求来确定,在质检场景,输入的文本是长度一般在几百至上千字的多轮对话并且存在固定的规则参考,最经济高效的做法就是提示词工程(prompt engineering/PE),也就是设计并优化提示词,提升大模型判定的准确率。
在本项目中,存在四条质检规则,分别是是否礼貌用语,是否确认客户诉求,是否提供联系方式,是否表达上门意愿,每个规则具体的含义和样例在下表中给出。从四个维度分别考察客服的回复是否合规,四个规则下分别有300条客服与客户的对话文本数据,合计1200条数据,这些数据有真实标签我们需要用大模型PE来对四个维度分别考察是否合规,因此决定设计四个不同的提示词,分别适配四个规则场景,分别优化大模型对不同规则的判断能力。
规则 |
是否礼貌用语 |
是否确认客户诉求 |
是否提供联系方式 |
是否表达上门意愿 |
含义 |
客服的在询问客户信息时是否加了敬语 |
客服是否再次确认客户表达的问题 |
客服在对话结尾是否提供了联系方式 |
客服是否表达了愿意到客户门口的意图 |
合规样例 |
请问您的地址是XX吗 |
请问您反馈的是XX事情吗 |
有问题您可以联系这个号码XX |
您好我是XX,现在到您门口 |
不合规样例 |
您的电话是不是XX |
我知道XX事情了 |
有问题请再次联系 |
给您放在驿站了 |
2. 需求分析
客服质检项目的核心需求如下:
(1)给定一轮客服和客户的对话,大模型首先理解这段长文本;(2)给定一条规则,大模型定位到关键的对话片段;
(3)把客服的回答和规则比对,判断回答是否合规;
针对核心需求,我们搭建了如下的解决方案,
整体是一个迭代式的解决方案,通过每一轮根据大模型判错的例子来优化提示词,不断提升大模型对易错例子的理解能力,从而提升整体的判断准确率,最终达到预期效果。具体可分为三个步骤,如下图所示:
在用大模型搭建解决方案链路的过程中,存在如下的难点:
(1)提示词的设计会影响特定规则下大模型判断的准确效果,设计一个好的提示词能让大模型更准确的做判断;
(2)提示词如何优化才能尽可能减少模型出错的概率,针对大模型判断的例子需要分析数据特征,然后修改提示词让大模型能理解这些易错特征并下次不再犯错;
(3)对话文本特别是录音转文本的质量不高时会影响大模型的文本理解,例如存在大量的同音错别字,需要提示大模型此类情况的处理方法;
(4)人工分析判错例子(几千字左右)的数据特征比较费时费力,需要大模型辅助我们定位具体出错的文本片段;
(5)人工分析判错例子的数量特别大时也同样费时费力,需要我们对这些数据做取舍。
分析了上述难点后,经过实践,我们总结了对应的五条重要经验,如下详细阐述。
3. 经验总结
3.1 如何设计提示词
有关通用的提示词设计规范的文章很多,本文只聚焦特殊的质检场景下的提示词规范。以下是设计提示词的三条原则:
(1)严格按照规则
质检场景的特殊性就是存在固定的参考规则,比如客服有没有用敬语,客服有没有联系方式等,因此质检场景下大模型的主要任务是依据规则判断一个小的对话片段合不合规,而不是做长上下文理解判断整体合不合规,因此首要传达给大模型的要求一定是对规则的描述。例如,在本项目中有一条规则是客服需要提供联系方式给客户,以下是我根据规则设计的提示词:
客服回答中出现本机号码或者这个号码或者此号码或者我的号码的描述,判定为合规,客服回答中出现加微信、发送电话短信、申请微信、用短信发送联系方式的描述,判定为合规;
(2)先否定后肯定
质检场景本身的要求很严格,会对客服多处的回答检查,如果有一处回答不合规则整体判为不合规,只有全部回答合规才算整体合规,因此为了方便大模型做判断,提示词中需要把不合规的情况放在前面合规的情况放在后面,让大模型优先判定不合规的情况,提升准确率和缩短判断时间。例如,在本项目中有一条规则是客服需要表达送货上门的意愿,以下是我设计的提示词:
如果客服询问了给你送货上门还是放在哪里,要送到哪里,要送货上门吗这样的问题则后面都不看直接判定不合规;如果客服的话语中明确提到送货上门或者送到指定地址且非驿站代收点或者送到一个具体的地方例如xx市xx县xx小区xx楼等类似表达判定为合规;
(3)一条规则对应一个提示词
质检的任务一般不止一个规则,会有多条规则对客服考察,例如上文提到的两条规则:提供联系方式和表达上门意愿,为了精简提示词来提升大模型的响应时间和生成质量,推荐采用对每一条规则都设计一个提示词,而不是一个提示词里包含所有的规则,通过这种并行提示词输入大模型判断的做法,让大模型每次只聚焦一条规则判断该规则下是否合规,有效防止规则冗余互相干扰影响大模型的最终判断。以下是并行设计提示词的链路流程图:
3.2 如何优化提示词
提示词优化是根据上一轮的大模型判断错误的例子,需要通过人工判断这些错误例子的数据特征,在新的提示词中提示大模型对这些特征的处理方法,从而在下一轮让大模型能理解并判对这些例子。以下是优化提示词的两条原则:
(1)抽象
在人工学习判错例子的数据特征时,需要对大量例子的数据特征做抽象提取规律,不要具体化的提取某一个出错的内容。例如在本项目中,有一条规则是客服提供有效联系方式,在一轮反馈优化中,模型判错的50条例子集中在模型认为客服提供的电话不符合标准电话格式而判定不合规,而实际情况由于录音问题缺少一两位数字也仍然合规,因此我抽象这一规律为存在不符合标准格式的电话号码而不是具体的告诉模型缺失什么数字,以下是我对提示词的优化:
(2)从众
在人工学习判错例子的数据特征时,可能会存在两种数据特征互相冲突的情况,此时优化的方向在占多数的数据特征并舍弃占少数的数据特征以保证准确率。例如,在本项目中,有一条规则是客服提供有效联系方式,在上述的50条数据中存在两种冲突的数据特征,一种是占多数的45条数据中的电话格式只缺少了一两位数字,另一种是占少数的5条数据中的电话格式缺少了很多数字以至完全不像一个号码,显然实际情况下前者合规后者不合规,如果想要前者情况模型判定合规提示词需要加入。
客服回复了一串具体的电话号码并且无需是标准号码格式则合规
如果想要后者情况模型判定合规提示词需要加入。
客服回复了一串具体的电话号码并且必须是标准号码格式才合规
两者冲突,因此少数的5条数据被舍弃未参与到反馈优化中,只根据占多数的45条数据来优化,最终的提示词也确定为上述的无需标准格式则合规。
3.3 处理文本中错别字
大模型输入的是文本对话而不是原始的录音文件,因此录音转文字这一步会存在错别字和遗漏的情况,推荐在提示词中加入相关提示。例如以下是我的处理:
每一句话开头会标注是客户还是客服说的话,对话是电话录音,存在部分错别字和缺少部分字,根据上下文来理解;
3.4 了解大模型理解错误的依据
在优化提示词过程中,需要人工学习上一轮大模型判断错误例子的数据特征,如果人工再去浏览上千字的对话文本费时费力,这里可以做一个简化操作,就是让大模型不仅输出是否合规的结论,还要输出判定的依据,这样我们在人工浏览时可以根据大模型给出的依据快速定位到这些原文中的片段,而不用通读全文,只需分析这些片段的数据特征即可。例如以下是我的处理:
##输出格式: 两行,第一行是一个字,是或者否,表示你判断是否合规;第二行是你判断的依据
3.5 抽样反馈
当数据集体量特别庞大时,比如上百万的数据条目,每一轮反馈,需要人工学习的大模型判错例子的数量至少会达到上万条,当我们没有大量的人力和时间时,用随机抽样反馈代替全量反馈,随机抽取20%-30%的数据,尽量拟合原始分布同时加快迭代速度并尽量减少准确率的损失。
4. 评测效果
以下是实际的评测效果,原始的数据集是1200条客服与客户的对话文本数据,分为4个规则,是否礼貌用语,是否确认客户诉求,是否提供联系方式,是否表达上门意愿,每条规则下分别是300条数据,每条规则有一个对应的提示词,总共进行了五轮提示词优化,最终准确率有显著提升,每个规则都达到0.9左右,符合预期要求。
来源 | 阿里云开发者公众号
作者 | 李德