🚀 原文地址:https://rasa.com/docs/rasa/conversation-driven-development

1. 什么是CDD?

对话驱动开发(Conversation-Driven Development,CDD)是倾听用户意见,并利用这些见解改建 AI 机器人的过程,它是聊天机器人开发的总体最佳实践方法。

开发优秀的人工智能机器人是一项挑战,因为用户总是会说一些你没有预料到的话。CDD 背后的原则是,在每次对话中,用户都会用自己的话准确地告诉你他们想要什么。通过在机器人开发的每个阶段实践 CDD,我们可以让机器人面向真不真实的用户语言和行为。

CDD 包括以下操作:

  • 尽快和用户共享机器人
  • 定期回顾对话
  • 标注消息,并将其用作 NLU 训练数据
  • 测试机器人是否总是按照预期行事
  • 跟踪机器人何时出现故障,并随时间测量其性能
  • 基于处理不成功的对话修复机器人

CDD 不是个线性过程,在开发和改进机器人时,我们需要一遍又一遍地回到相同的操作。Rasa X 是一个专门为 CDD 构建的工具,合理地运用可以让 CDD 开发事半功倍。

2. 早期开发阶段的CDD

如果处于机器人开发的最早阶段,那么 CDD 似乎没有任何作用,毕竟我们还没有对话。但是,我们可以在机器人开发的一开始就采取 CDD 操作:

  • 参考 NLU 数据和 Story 的最佳实践,了解使用 CDD 创建训练数据的详细信息
  • 尽早地让机器人测试用户:CDD 就是倾听用户的声音,所以越早发现越好。测试用户可以是任何不知道机器人内部工作原理的人,机器人开发团队不应该是测试用户,因为他们确切地知道机器人能做什么以及不能做什么。同时,不要过度指导测试用户,他们对机器人领域的了解应该与最终用户一样多。
  • 设置 CI/CD 管道:当我们从机器人对话中收集见解时,CDD 会导致机器人进行频繁的、较小的更新。在开发早期阶段设置 CI/CD 管道,能够让那个我们根据在对话中看到的内容快速采取行动。

在这个阶段,我们可以在本地模式下安装 Rasa X,以便更轻松地与测试用户共享机器人、收集对话,并根据对话内容应用在 NLU 和 Story 上。

3. 生产中机器人的CDD

一旦机器人投入生产,我们就有更多的对话来获得见解,然后将其完全运用在 CDD 操作上。在这个阶段,我们可以再服务器上安装 Rasa X 来部署机器人,并在生产中使用机器人启用 CDD。

3.1 回顾

在对话中寻找用户真正想要的东西,测试用户至少有一些关于机器人打算做什么的说明,真正的用户通常要么啥都不知道,要么忽略给他们的说明。我们不可能迎合每一个意外的用户行为,但你可以尝试解决已经注意到的摩擦点。以下是我们可以考虑寻找的一些东西:

  • 查看发生out_of_scope意图或产生回退行为的对话,这些对话可能表明潜在的新技能,或者只是错误分类的用户话语
  • 寻找用户的挫败感,例如转给人工的请求
  • 如果机器人训练时采用了管道中的UnexpectTEDIntentPolicy,我们可以查找在任何对话轮次中所预测到action_unlikely_intent的对话。当前用户表达的最后一个意图在当前对话上下文中粗乎意料时,会预测出一个action_unlikely_intent。我们还可以通过运行以下操作的独立脚本来过滤掉此类对话:
    • 从跟踪存储器中获取真实对话
    • 对提取的对话运行rasa test,并在单独的警告文件中过滤包含action_unlikely_intent的对话,

回顾此对话子集可以帮助我们了解真实用户是否采用了训练数据中不存在的对话路径,因而采用TEDPolicy等机器学习策略进行处理。添加这些对话路径(如果TEDPolicy随后失败,可能会进行更正)作为训练故事,将导致通过TEDPolicy等策略进行更稳健的动作预测。鼓励用户调整UnpectTEDIntentPolicytolerance参数,从而控制“令人吃惊”对话是否被包含在警告文件中。

3.2 标注

在将真实对话的新用户话语添加道训练数据中时,继续遵循 NLU 最佳实践,并且注意不要将 NLU 模型过度拟合到训练数据中已有的话语中。当我们不断将已经正确预测且具有高置信度的用户话语添加到训练数据中时,就会发生这种情况。为避免过度拟合,并帮助模型泛化到更多样化的用户话语,请仅添加模型之前预测不正确或置信度较低的用户话语。

3.3 测试

将成功的用户对话添加道测试对话中,一直保持这样做有助于确保机器人进行其他修复时不会引入回归。

3.4 跟踪

寻找成功和失败的线索,来帮助我们跟踪机器人的性能。某些指标在机器人之外,例如,如果我们正在构建一个机器人来缓解客户服务呼叫中心的需求,那么衡量成功的一个指标可能是呼叫中心流量的减少。其他可以直接从对话中获取的信息,例如用户是否达到了实现目标的特定操作。

自动跟踪的指标本质上是代理指标,获得真正衡量成功的标准唯一方法时单独审查和评价与机器人的每一次对话。虽然这很不现实,但请记住,没有任何指标可以完美地代表机器人的性能,因此不要仅依靠指标来了解机器人需要改进的地方。

3.5 修复

随着扩展和提高机器人的技能,继续遵循故事的最佳实践。让用户需求指导添加哪些技能以及进行哪些修复,经常进行较小的更改,而不是偶尔进行一次大的更改。这将帮助我们衡量所做更改的有效性,因此我们可以获得更频繁的用户反馈。我们的 CI/CD 管道应该让我们有信息这样做。