写点什么

最小可行架构实践:构建家庭保险聊天机器人

作者:Kurt Bittner, Pierre Pureur

  • 2022-06-24
  • 本文字数:3518 字

    阅读完需:约 12 分钟

最小可行架构实践:构建家庭保险聊天机器人

我们的前一篇文章探讨了最小可行架构(Minimum Viable Architecture,MVA)的概念。本文将通过一个聊天机器人与传统保险系统(如保单管理系统)和企业外部数据源(重建成本、房屋估价数据)交互的虚构示例,探讨如何应用 MVA 概念,并回答房主可能针对他们的保单和保障范围提出的问题。为了便于说明问题,我们将集中讨论与住宅重置成本有关的问题。

使用 MVA 方法实现一个聊天机器人

 

我们之所以选择了聊天机器人作为示例,是因为它有一个简单的用户界面,把与数据完整性、并发性、延迟和响应性相关的复杂问题隐藏掉了。聊天机器人是一种软件服务,它可以通过文本或文本到语音的方式提供在线聊天对话,从而替代真人。

 

它很适合被用在许多软件系统中,如保险公司使用的家庭保险系统。受火灾等自然灾害的影响,保险公司和保险公司的家庭保险专家经常会接到大量来自客户的电话和咨询电子邮件。受自然灾害影响的房主希望他们的问题能得到及时回答,但因为电话数量太多,中介不能及时回答房主的紧急问题。在正常时期,房主通常会有一些简单但不紧急的问题,他们想问这些问题,但又不想麻烦中介。聊天机器人可以提供更及时的信息,从而提高客户满意度,同时让代理腾出时间处理更复杂的任务。

初始 MVA:一个简单的基于菜单的聊天机器人

 

创建 MVA 的第一步是选择聊天机器人的工作方式,这足以实现最小可行产品(MVP)。在我们的例子中,MVP 仅具备能够实现我们为其设定的产品目标的最小功能。如果没有人想使用它,或者它不能满足客户的需求,我们就不会继续开发它。因此,我们打算向有限的用户群发布 MVP,采用了简单的基于菜单的界面,并假设因访问外部数据源收集数据可能产生的延迟是客户可以接受的。我们希望避免超出我们试图要解决的问题的需求——包括功能性需求和质量属性需求(QAR)。这将产生如下所示的初始设计。如果我们的 MVP 被证明是有价值的,我们将增加它的功能,并在随后的步骤中逐步构建它的架构。MVP 是产品开发战略的一个有用的组成部分,与原型不同,MVP 最终不会被“扔掉”。

 

我们可以用可重用的开源框架(如RASA)来实现一系列客户服务聊天机器人,从简单的基于菜单的机器人到使用自然语言理解(Natural Language Understanding,NLU)的高级机器人。借助这个框架,最初的 MVA 设计实现了基于菜单的单用途聊天机器人,它能够处理简单的咨询业务。这个简单的聊天机器人在智能手机、平板电脑、笔记本电脑或台式电脑上向用户提供一个简单的选择列表。其结构如下图所示:



聊天机器人与以下这些后台服务发生交互:

 

  • 投保范围:这项服务是保险公司的内部服务,提供了 API 访问,预计存在低至中等的延迟。

  • 重建成本:这项服务在保险公司外部,提供了 API 访问,延迟是未知的。

  • 房屋评估:这项服务也在保险公司外部,也提供了 API 访问,延迟也是未知的。

 

正如我们在前一篇文章中所描述的,在开始 MVA 时,我们针对解决方案做出了一系列基本的选择,并使用一个简单的检查清单来确保我们做出了合适的架构决策。我们的清单包括以下这些项:

 

  • 安全性——我们需要考虑 MVP 的安全性需求。用户需要授权才能访问聊天机器人检索的信息,因此,聊天机器人应该捕获用户凭据并将这些凭据传递给后端服务进行验证。

  • 监控——我们相信,每一个应用程序都应该提供基本的监控功能,用于监控性能并收集在初次发布期间可能遇到的潜在系统问题。

  • 平台——我们已经决定 MVP 将托管在商业云平台上。

  • 用户界面——我们认为,一个简单的基于菜单的界面对于 MVP 来说已经足够了,但可能需要根据最初用户的反馈进行调整。MVP UI 适用于智能手机、平板电脑、笔记本电脑和台式电脑。

  • 延迟和响应性——虽然我们不担心延迟和响应性,因为 MVP 的部署面向的是一个小用户群,但如果 MVP 获得成功,我们需要扩大它的用户基础。届时,延迟和响应性可能成为潜在的问题。延迟指标将作为基本监控功能的一部分。

 

以下内容并不是目前应该关注的问题,但随着用户群和使用量大幅增长,以后可能需要关注。

 

  • 并发性——目前不需要考虑,我们假设用户群不会变得太大。

  • 吞吐量——目前不需要考虑,因为目前需要处理的数据量非常小。

  • 可伸缩性——目前不需要考虑,但如果聊天机器人的用户基数显著扩大,这可能会成为一个问题。

  • 持久性——目前不需要考虑,因为聊天机器人需要存储的数据很少。

 

你可以将这个清单视为你的应用程序的一个合理的入手点,当然,你可能需要根据你遇到的技术问题调整或扩展它。

 

在 MVP 交付之后,用户似乎对产品的性能相对满意,但他们表示,基于菜单的界面太过局限。即使是 MVP 中使用的简单菜单也相当繁琐,增加菜单选项只会让用户体验进一步恶化,特别是在智能手机和平板电脑上。他们希望能够使用自然语言与聊天机器人进行更自然的交谈。

实现自然语言接口

 

MVP 使用的开源聊天机器人框架也支持自然语言理解,因此,我们将继续使用它来为聊天机器人添加 NLU,将简单的聊天机器人变成机器学习(ML)应用程序。

 

切换成 NLU 接口会改变聊天机器人的架构,如下图所示。训练数据的离线数据摄取和数据准备是两个非常重要的步骤,此外,还需要模型部署和模型性能监控。对语言识别准确性以及吞吐量和延迟的监控尤为重要。商业用户会使用一些“行业术语”,随着时间的推移,聊天机器人会更好地理解这些术语。

 


新架构包含了两个模型,它们需要在沙盒环境中进行训练,并部署到一组 IT 生成环境中。这两个模型可以看作是与用户提问有关的 NLU 模型,以及与聊天机器人的回答有关的对话管理模型。更具体地说,聊天机器人使用 NLU 模型来理解用户想要做什么,并使用管理模型来构建对话,让聊天机器人能够顺畅地回应问题。模型和它们所使用的数据都应该放在版本控制系统中。

处理后端服务的延迟

 

重建成本和房屋估价数据最初是由其他组织存储和维护的,保险公司可控的只有投保信息是。即使在使用量较低的情况下,当聊天机器人从两个外部数据服务收集必要的数据时,用户也可能会感受到延迟。我们应该在使用最初基于菜单的 UI 时对客户可接受延迟的假设进行测试。

 

如果因访问外部服务导致的延迟不受欢迎,就必须调整架构,在本地(或至少与投保数据位于相同的位置)缓存外部服务数据,并定期更新缓存数据。假设房屋估价和重建成本在短时间内不会发生太大变化,那么缓存这些数据似乎是一种合理的权衡。然而,我们也需要对这种假设进行测试,将延迟影响客户体验的成本与维护缓存一致性的成本进行对比,确定是否值得花费时间和精力在缓存上。此外,我们还应该经常复查 MVA 检查清单,确保在这个过程开始时所做的假设仍然有效,并且在 MVP 演变成为成熟产品的过程中,架构仍然是令人满意的。

结论

 

乍一看,聊天机器人似乎并不需要太多的架构考量,因为提供了大部分构建模块的框架比比皆是,开发应用程序似乎只需要训练一些 NLU 模型和集成一些现成的组件。但是,任何经历过构建聊天机器人的人都知道,正确使用聊天机器人应用程序并不容易,试错成本会极大地影响客户满意度。即使是像聊天机器人这样简单的应用程序也需要 MVP 和 MVA。

 

对于更复杂的应用,MVA 需要解决的问题将取决于 MVP 的目标。MVP 是从客户的角度来测试产品是否值得开发,而 MVA 则通常考虑的是向客户交付解决方案在技术和经济方面是否可行,并在其预期寿命内为解决方案提供支持。MVA 还必须超越 MVP,至少需要提供 MVP 成功之后解决问题的方案,以免成功的 MVP 导致组织无法承受长期的产品维持。

 

作者简介:

 

Kurt Bittner 拥有超过 30 年短周期交付软件的经验。他帮助过许多采用敏捷软件交付实践的组织,包括大型银行、保险、制造和零售企业,以及大型政府机构。他曾为大型软件交付企业工作,包括甲骨文、惠普、IBM 和微软,并曾是 Forrester Research 公司的技术行业分析师。他的重点领域是帮助组织建立强大、自组织、高性能的团队,为客户交付受欢迎的解决方案。他撰写了 4 本与软件开发相关的书,包括“The Nexus Framework for Scaling Scrum”。他现居科罗拉多州博尔德市,并担任 Scrum.org 的企业解决方案副总裁。

 

Pierre Pureur 是一位经验丰富的软件架构师,拥有丰富的创新和应用程序开发背景、广泛的金融服务行业经验、广泛的咨询经验和全面的技术基础设施知识。他曾担任一家大型金融服务公司的首席企业架构师,领导大型架构团队,管理大型并发应用程序开发项目,指导创新计划,以及制定战略和业务计划。他是“Continuous Architecture in Practice: Scalable Software Architecture in the Age of Agility and DevOps”(2021 出版)和“Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World”(2015 出版)的合著者,并发表了许多文章,以及在多个软件架构会议上发表相关演讲。

 

原文链接

Minimum Viable Architecture in Practice: Creating a Home Insurance Chatbot

2022-06-24 08:004770

评论

发布
暂无评论
发现更多内容

太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA

Java 程序员 后端

模块三作业

心怀架构

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

Java 程序员 后端

多线程详解第4讲:线程同步(重点)

Java 程序员 后端

多线程详解第3讲:线程状态

Java 程序员 后端

linux检测系统是否被入侵(上)

入门小站

Linux

大神万字总结:InnoDB 锁类型及其详细分析

Java 程序员 后端

在线文本中英文数字清除工具

入门小站

工具

太强了!这是我见过最通俗易懂的一篇Spring知识点总结

Java 程序员 后端

堪称完美!字节强推数据结构与算法进修指南:理论源码面试三飞

Java 程序员 后端

多层次存储器

Java 程序员 后端

大战618,决胜双十一 高并发秒杀系统解密—后端java程序员力荐

Java 程序员 后端

大年初三,我带着Spring事务管理详解来给大家拜年啦-!

Java 程序员 后端

头条五面惨败,被虐到怀疑人生!面试官三十六连击,你能答出多少?

Java 程序员 后端

增删改查的基本操作:实现MyArrayList,你学会了吗?

Java 程序员 后端

从 Kafka 到 Pulsar,BIGO 打造实时消息系统之路

Apache Pulsar

分布式 BIGO 消息中间件 云存储 Apache Pulsar 消息系统

大厂面试必备:JVM-垃圾回收机制—垃圾回收中的概念

Java 程序员 后端

阿里技术官限产的MySQL高级笔记及面试宝典,简直开挂

Java MySQL 数据库 程序员

大厂炸锅了!这份全程无尿点的Java彩版面试开挂攻略在GitHub火了

Java 程序员 后端

头条二面:你确定ThreadLocal真的会造成内存泄露?

Java 程序员 后端

云原生 DevOps,模型化应用交付能力很重要!

阿里巴巴云原生

DevOps 云原生 模型 应用交付

奉劝那些想把编程学好的学弟学妹们!呕心沥血,袒露心声,掏心掏肺

Java 程序员 后端

堪称全网最全的JAVA面试复盘笔记(23个技术栈)5000字解析!冲击大厂必备

Java 程序员 后端

备战明年金三银四,阿里P8大佬总结的这份Java面试文档,你可一定要好好看看

Java 程序员 后端

大专生出身,做Java程序员真的没有春天吗?冲刺拼多多终拿下Offer

Java 程序员 后端

奉劝各位学弟学妹们,该打造你的技术影响力了!

Java 程序员 后端

太强了,阿里P8面试官用1个多月,总结1000道题的Java面试文档!

Java 程序员 后端

太悲伤了,女朋友面试惨遭面试官吊打,半夜偷偷摸摸躲在被子里抹眼泪刷题

Java 程序员 后端

Win11上openvino_notebooks环境搭建

IT蜗壳-Tango

IT蜗壳 OpenVINO 11月日更

天哪!手动编写mybatis雏形竟然长这样

Java 程序员 后端

天天curd,怎么才能成长,跳离CRUD的苦海?

Java 程序员 后端

最小可行架构实践:构建家庭保险聊天机器人_语言 & 开发_InfoQ精选文章