Plato Research Dialogue System - 创建、训练和部署会话 AI 代理


Apache-2.0
跨平台
Python

软件简介

柏拉图(Plato)研究对话系统是一个灵活的框架,可用于在各种环境中创建、训练和测试会话 AI
代理。它支持通过语音、文本或对话行为进行交互,每个会话代理可以与数据、人类用户或其他会话代理进行交互(在多代理设置中)。每个代理商的每个组成部分都可以在线或离线独立培训,只要遵守
Plato 的界面,Plato 就可以轻松地绕过几乎任何现有的模型。

柏拉图(Plato)研究对话系统如何运作?

从概念上讲,会话代理需要经过各种步骤才能处理它作为输入接收的信息(例如,“今天天气如何?”)并产生适当的输出(“有风但不太冷”。)。与标准体系结构的主要组件(参见图1)相对应的主要步骤是:

  • 语音识别(将语音转录为文本)
  • 语言理解(从该文本中提取意义)
  • 状态跟踪(到目前为止已经说过和完成的内容的汇总信息)
  • API 调用(搜索数据库,查询 API 等)
  • 对话策略(生成代理人回应的抽象含义)
  • 语言生成(将抽象意义转换为文本)
  • 语音合成(将文本转换为语音)

Plato 的设计尽可能模块化和灵活,它支持传统和自定义会话 AI
架构,重要的是,支持多方交互,其中多个代理可能具有不同的角色,可以相互交互,同时训练和解决分布式问题。

下面的图1和图2描述了与人类用户和模拟用户交互时的示例 Plato
对话代理体系结构。与模拟用户交互是研究社区中用于快速开始学习的常见做法(即,在与人类交互之前学习一些基本行为)。每个单独的组件都可以使用任何机器学习库(例如,Ludwig
TensorFlowPyTorch、用户自己的实现)在线或离线进行培训,因为
Plato 是一个通用框架。Uber 的开源深度学习工具箱 Ludwig 是一个很好的选择,因为它不需要编写代码并且与 Plato 完全兼容。

图1:Plato
的模块化架构意味着任何组件都可以在线或离线进行培训,可以通过自定义或预先训练的模型进行替换。(此图中的灰色组件不是核心 Plato 组件。)

图2:使用模拟用户而不是人类用户,如图1所示,我们可以预先训练 Plato
各种组件的统计模型。然后,这些可以用于创建原型会话代理,该代理可以与人类用户交互以收集更多自然数据,这些数据随后可用于训练更好的统计模型。(此图中的灰色组件不是
Plato 核心组件。)

除了单代理交互之外,Plato 还支持多代理对话,其中多个 Plato 代理可以相互交互并相互学习。具体来说,Plato
将产生会话代理,确保输入和输出(每个代理听到和说出的内容)被适当地传递给每个代理,并跟踪对话。

这种设置可以促进多代理学习的研究,其中代理需要学习如何生成语言以执行任务,以及研究多方交互的子领域(对话状态跟踪,轮流等)。
)。对话原则定义了每个代理可以理解的内容(实体或含义的本体;例如:价格,位置,偏好,烹饪类型等)以及它可以做什么(询问更多信息,提供一些信息,调用
API)等)。代理可以通过语音,文本或结构化信息(对话行为)进行通信,并且每个代理都有自己的配置。下面的图3描述了这种架构,概述了两个代理和各种组件之间的通信:

图3:Plato
的架构允许对多个代理进行并发培训,每个代理具有可能不同的角色和目标,并且可以促进多方交互和多代理学习等领域的研究。(此图中的灰色组件不是核心 Plato
组件。)

最后,Plato 通过图4所示的通用代理体系结构支持自定义体系结构(例如,将 NLU
分成多个独立组件)和联合训练的组件(例如,文本到对话状态,文本到文本或任何其他组合)。此模式远离标准会话代理体系结构并支持任何类型的体系结构(例如,使用联合组件,文本到文本或语音到语音组件,或任何其他设置)并允许加载现有或预先训练有素的模型进入
Plato。

图4:Plato
的通用代理体系结构支持广泛的自定义,包括联合组件,语音到语音组件和文本到文本组件,所有这些组件都可以串行或并行执行。

用户可以通过简单地提供该类模块的 Python 类名和包路径以及模型的初始化参数来定义自己的体系结构和/或将自己的组件插入到 Plato
中。用户需要做的就是按照应该执行的顺序列出模块,Plato 负责其余部分,包括包装输入/输出,链接模块和处理对话。Plato 支持模块的串行和并行执行。

Plato 还通过组合结构的贝叶斯优化(BOCS)为对话 AI 架构或单个模块参数的贝叶斯优化提供支持。

安装

  1. 克隆此存储库:

    git clone git@github.com:uber-research/plato-research-dialogue-system.git

  2. 安装要求:

对于 MacOS:

brew install portaudio
pip install -r requirements.txt

对于 Ubuntu/Debian:

sudo apt-get install python3-pyaudio
pip install -r requirements.txt

对于 Windows:

pip install -r requirements.txt
  1. 运行

有关配置文件以及如何运行第一个 Plato 代理的快速介绍,请参见文档

为了支持语音,有必要安装
PyAudio,它具有许多开发人员机器上可能不存在的依赖项。如果上述步骤不成功,
PyAudio 安装错误的这篇文章包含有关如何获取这些依赖项并安装
PyAudio 的说明。