上一篇讲了单多轮对话的概念,这一篇会从更落地的角度写怎样结合业务去思考和表现多轮对话的流程设计。 首先我们通过观察业务场景,来抽取终端用户需求和明确需要通过AI来实现的对话流程。这一步的重点在于理清大多数用户的高频出现的需求,也可以说是正常用户经常会问的问题和会做的操作。要这样做是因为AI的开发成本毕竟不算低,所以好钢用在刀刃上,我们暂时不关注少量用户奇奇怪怪的想法。 以苹果专卖店为例,我拿了两个常见的对话场景: 1号场景——买iphone 店员:欢迎光临,您要买什么? 消费者:我要一台iphone 店员:您需要哪一款? 消费者:11 店员:128G还是64G? 消费者:64的 店员:什么颜色? 消费者:黑色 店员:好的,请您付款,谢谢。 2号场景——买Macbook 店员:欢迎光临,您要买什么? 消费者:我要一台Macbook pro 店员:什么尺寸呢? 消费者:15.6寸 店员:什么颜色? 消费者:黑色 店员:好的,请您付款,谢谢。 接下来我们把每个环节拆分成不同的用户意图,如下: 这样我们拿到了7个不同的意图,接下来是准备一些样本做识别训练。样本的概念就是对一个意图不同的表达方式,比如"我想买个iphone/您好我买个iphone/帮我拿个爱疯手机"都归为买iphone的意图。 样本的来源可以是实际的业务场景下发生的对话,也可以是靠自己生成,当然最好是前者,这里样本的丰富度决定了识别的准确性。 注意收集了足量的样本后,要抽取一部分用来后面作为测试集。当识别率达到我们要求的置信度时,假设阈值是80,就可以着手下面流程的部分了。 首先,我们把上面两个对话变成两个AI处理的流程。 关于付款之类的操作,大概率还需要跟其他系统的对接和联调,因为这篇主要讲对话,所以这部分按下不表。到这儿,我们就得到一个基本可以用的小机器人了,它可以完成前面场景里店员要做的工作。 下一步是对流程的完善。因为对话产品不像普通的产品,用户再怎样也离不开页面上有的东西。对话时用户行为是不受限的,他们讲什么都可以,那么也就可以不按照预设流程去走。 比如买iphone到一半,用户改主意要买MacBook呢?因此在上图的完美流程外,我们要加一些节外生枝的东西进去。 这里插播一个知识点。在NLP中,人工智能本身是不能够理解用户意图的,它只是根据大量样本的统计结果做概率预测。比如,如果你在"买iphone"的训练样本中加入了大量的"买豆腐",那么当你去测试买豆腐,它一定会认为你在买iphone。 没有理解力这个事情导致了什么呢?它既没有听得懂的概念,也没有听不懂的概念。因此,在实际的训练中,我们需要准备第8个意图,叫做"无意图",用来把跟实际场景无关的话语与有效话语区分开来,比如"买豆腐"就应该算到无意图里。 back回来,考虑了非理想流程的可能性后,两个流程结合到了一起,现在长这样: 乍一看可能有点眼花,我解释一下。中间交叉的线表示,当用户在买iphone的过程中表示了买MacBook的意愿,则转去MacBook流程;反之亦然,用户可以买MacBook时切换到买iphone。 为了简单表示流程,当用户表达了跟当前场景没什么关系的话,即我们认为无意图时,则让AI再次询问前一个问题,以便提示用户走完流程。核心原则依然是收敛而非发散。轮次与AI询问的内容都不是固定的,届时根据实际应用场景灵活运用即可。 事实上,在我写过的PRD中,上图是一个非常简化的版本,它一共只有流程*2和意图*8. 在真实的业务流程中,因为场景的复杂度很高,所以交叉排列出的可能性也非常之多。这一部分就很考验PM对于用户行为的观察和预测,以及对场景的拆解能力。理论上,拆解出的颗粒度越细,设计的场景丰富度越高,那么使用起来的体验就越舒适越近似人工客服。 我另外做了一个更为复杂的版本,基本框架都没有变,所以不再多做说明,贴上来以供参考。(欢迎同行一起交流呀)