引言:
本文将介绍爱彼迎的智能自动化平台是如何通过支持对话式 AI 和客服自动化,来提升爱彼迎的用户体验的。
随着机器学习和自然语言处理技术的快速发展,对话式人工智能(Conversational AI,以下简称「对话式 AI」)近年来受到了极大的关注。越来越多基于对话式 AI 的应用程序被开发出来,例如虚拟助手、智能扬声器和客户支持聊天机器人。他们为人们的日常生活提供了很多帮助。
在爱彼迎,我们开发了多种对话式 AI 产品来提升房东和房客的用户体验:
客服聊天机器人系统:通过 APP 内部的消息或者自动外呼电话来帮助用户
面向任务的机器学习框架:识别用户问题,并提供自动解决的方案
房客入住助手:主动帮助用户解决入住问题,改善用户体验
在这篇文章中,我们将介绍爱彼迎自研的通用企业级平台——智能自动化平台 (Automation Platform, 以下简称 AP ),该平台支持对话式 AI 产品套件。
通过将对话式 AI 产品建模为马尔可夫决策过程(Markov Decision Process),AP 提供了工作流和动作的统一表达,以便于工作流的整合并提高动作的可复用性。此外,该平台还提供了一个图形化界面的开发工具,以支持拖放式的工作流创建,促进产品的快速迭代,并赋能非技术团队构建对话式 AI 产品。
平台架构
图 1:AP 整体架构
图 1 展示了 AP 的整体架构,它包含以下 4 个主要模块:
事件编排器(Event Orchestrator):平台的事件编排层。它在客户端和工作流引擎之间转换输入/输出消息,以确保能以通用方式构建和执行平台上的工作流。
工作流引擎(Workflow Engine):平台的「大脑」。它负责管理和执行平台支持的所有工作流。
动作库(Action Store):平台的动作执行引擎。它负责执行工作流里的动作请求(Action Request)。动作库可开放给开发人员用以创建新动作或复用现有动作。通过使用动作库中的动作,我们对基于不同的系统和后端的任务执行进行了标准化,并确保用户在使用不同产品时体验一致。
工作流构建器(Flow Builder):平台的工作流创建图形界面(GUI)。它是一个协作的拖放式(Drag-and-drop)界面,可简化工作流程的创建和管理。工作流构建器的输出的工作流模板可以由工作流引擎加载和执行。
图 2:问答工作流示例
图 2 展示了 AP 上的一个示例:「问答」工作流。通过工作流构建器配置的工作流可以回答来自不同渠道(例如文本消息或语音电话)的用户问题。
当 AP 收到「问答」工作流的请求时,它会触发:
事件编排器可对请求进行规范化,并创建或者找到该请求所对应的工作流会话(Session)。工作流会话是工作流的单个实例,一个工作流在运行时会有一个相对应的工作流会话。事件编排器随后将请求转发到工作流引擎。
对于新建的会话,工作流引擎将从开始节点创建一个新的工作流状态(State);对于已存在的会话,工作流引擎则会恢复工作流的先前状态。确定好状态后,工作流引擎将会执行工作流:a) 调用动作库去执行当前状态所定义的动作;b) 根据动作结果或其他条件将工作流移动到下一个状态;c) 暂停工作流程并在需要时等待下一个用户输入。
动作库会执行工作流引擎所需的所有动作。
AP的主要模块
事件编排器
AP 的设计原则之一是提供跨渠道(Channel-agnostic)的问题解决能力。渠道在这里代表请求的来源,例如 APP 内的聊天机器人或用户拨打的客服热线。工作流和工作流内所采取的动作旨在跨渠道解决问题,也就是说:无论用户选择通过哪个渠道与我们联系,AP 都关注于问题的核心,帮助他们解决问题。
事件编排器是 AP 的事件编排层。它规范了平台的输入和输出,以确保能以与渠道无关的方式构建和执行会话工作流。图 3 提供了事件编排器的架构,它包含 3 层:编排层、上下文数据层和工作流请求层。
图 3:事件编排器架构图
编排层处理所有请求和响应。它目前支持 3 种类型的输入:
外部渠道消息。这些是从不同渠道传递的消息,例如电话、电子邮件或 APP 内部消息。
内部异步事件。这些是爱彼迎不同的内部系统生成的异步事件,例如订单取消事件。
内部服务请求。事件编排器还提供了一些接口来直接处理来自其他内部服务的工作流请求。
上下文数据层存储与请求相关的所有上下文信息。在向工作流引擎创建工作流请求之前,上下文数据层会执行以下操作:a) 通过查找会话映射表,来识别该请求是关于现有的工作流会话,还是需要为其创建新的会话。b) 通过从会话数据表中读取上下文信息以恢复工作流执行。
工作流请求层可创建对工作流引擎的请求,并处理来自工作流引擎的响应。它确保将来自不同来源的请求转换为相同格式的工作流引擎请求,以便工作流引擎能以通用方式处理所有工作流。
工作流引擎
工作流引擎是 AP 的大脑,负责执行和监控由平台驱动的所有工作流。
图 4:工作流引擎架构图
图 4 展示了工作流引擎的整体架构,它包含 4 个主要组件:
会话管理器(Session Manager)。会话管理器管理整个工作流执行的生命周期。收到工作流执行请求后,将恢复工作流的先前状态(如果已存在工作流)或从开始状态创建新工作流(如果没有对应的已存在的工作流)。当工作流需要暂停并等待用户响应时,会话管理器会将当前状态和所有工作流变量存储到数据库中,以便在同一会话的下一次请求时实现恢复。
模板加载器(Schema Loader)。可加载由图形界面工作流构建器生成的工作流模板(Schema)。工作流模板是由工作流构建器自动生成的 JSON 模版文件(请参阅工作流构建器部分中的更多详细信息)。
工作流执行器(Workflow Executor)。工作流执行器基于工作流模版,从工作流的当前状态开始执行工作流。它通过向动作库发送请求来处理当前状态中定义的动作,处理响应,并将变量保存到变量管理器。之后,根据转移条件将工作流移动到下一个状态,并开始处理下一个工作流状态。工作流执行器将不断重复该过程,直到需要暂停工作流(并等待用户响应),或者直到工作流结束。
变量管理器(Variable Manager)。变量是支持工作流执行的数据。变量管理器管理所有变量,并且支持工作流执行器在工作流执行期间读取和更新变量。
动作库
动作库是 AP 的动作执行引擎,支持来自工作流引擎的动作执行请求。它也是开发人员创建新动作或复用现有动作的开放平台。动作库中的所有动作都可以在工作流构建器上用于创建工作流。
图 5:动作接口
如图 5 所示,动作库中的所有动作都实现了一个通用接口,以便在(由工作流引擎发起的)动作执行和(由工作流构建器发起的)工作流创建期间以相同的方式处理它们。一个动作可以像获取用户的预订数据一样简单,也可以像用户问题预测一样复杂;后者可能涉及多个机器学习模型和特征生成管道。
图 6:动作库架构
图 6 展示了动作库的高层架构图,主要包含 3 个组件:
动作执行器:动作执行器接收并执行动作执行请求。当动作执行器接收到请求时,会根据动作类型从事件管理器中加载动作实现,并调用实现中定义的执行函数。许多动作依赖 AP 外部的服务来完成执行,动作执行器将负责发送这些 AP 外部的请求并处理响应。
动作信息处理器:在创建工作流时,动作信息处理器将所有动作信息(例如,元数据、有效负载、结果等)序列化到工作流构建器上,从而在图形界面上呈现动作节点和支持动作配置。工作流构建器的部分将提供更多详细信息。
动作管理器:动作管理器注册和管理在动作库中创建的所有动作。它根据动作类型为动作执行器和动作信息处理器查找并返回动作实现。
工作流构建器
工作流构建器是 AP 工作流创建的图形界面,可支持拖放式创建工作流。它与动作库集成,检索所有的动作信息,并在工作流执行期间将生成的工作流模版发送到工作流引擎。
图 7:工作流创建界面(动作配置)
图 7 展示了在工作流中配置动作时工作流构建器的界面。图中左侧是动作面板,列出了动作库中所有可用的动作,并支持按动作名称或描述进行搜索。工作流创建者可以在工作流面板中拖放任何动作,然后通过单击动作节点来配置该动作相关的参数。
图 8:工作流创建界面(工作流程图配置)
图 8 展示了配置工作流程图时的界面。工作流创建者可以通过创建节点之间的链接(Link)和配置转换条件来创建工作流节点转换(每个节点可以被视为工作流的一个步骤或状态)。配置完所有工作流节点和链接后,即可测试和发布工作流。
图 9:工作流构建器架构
图 9 是工作流构建器的高层架构图,包括以下两个组件:
前端工具集。前端工具集使用第三方库 React-diagrams 构建,展示所有的工作流信息,并支持界面上的所有操作。
工作流管理器,负责管理工作流:a) 从动作库中获取所有动作信息并传递给前端层。b) 从界面上配置的工作流程图生成工作流引擎可以执行的工作流模版。c) 在工作流执行期间将工作流模版提供给工作流引擎。
图 10:自动生成的工作流模板示例
图10 展示了一个由工作流构建器生成的工作流模板,该模板能够被工作流引擎执行。
总结
本文介绍了爱彼迎的智能自动化平台(AP)。该平台是一个通用且易于业务团队开发的企业平台,用于支持爱彼迎的对话式 AI 产品套件,包括客户聊天机器人、房客入住助手和自动化客服。借助智能自动化平台,我们可以简化和加速对话式 AI 产品的开发,将 AI 技术普及到业务团队,并扩展越来越多的智能解决方案,不断改善爱彼迎的用户体验。
作者:Zhiheng Xu,Alex Zhou,Jeremy Wang,Zecheng Xu,Ziyi Wang,Jiayu Lou,Liuming Zhang,Gary Pan,译者:Xiang Lan,校对:Yiqi Jia, Wei Ji
特别感谢项目的所有参与者,以及相关开源库的贡献者。
如果你想了解关于爱彼迎技术的更多进展,欢迎关注我们的 Github 账号(https://github.com/airbnb/) 以及微信公众号(爱彼迎技术团队)