Dialogflow - 组件



Dialogflow 是 Google 提供的一项技术,用于构建聊天机器人或虚拟助手。它使更容易理解他人的话语并做出正确的回应。组合这些组件可以创建智能聊天机器人,能够与用户进行自然对话。

Dialogflow 的组件

  1. Agent

  2. 意图 (Intents)

  3. 实体 (Entities)

  4. 唤醒词 (Invocation)

  5. Fulfillment 请求

  6. 响应 (Response)

  7. 上下文 (Context)

  8. 用户说 (User says)

  9. 训练短语 (Training Phrases)

现在让我们详细讨论一下下面部分的每个要点:

Agent

Dialogflow Agent 是虚拟代理,可以同时处理与最终用户的许多对话。它是一个自然语言解释模块,可以识别口语中的差异。Dialogflow 将对话期间最终用户的文本或音频转换为您的服务和应用程序可以理解的结构化数据。您可以设计和构建 Dialogflow Agent 来处理系统所需的多种对话类型。

Dialogflow Agent 类似于现实世界的呼叫中心座席。它们都接收关于如何处理常见争议案例的指令,这些指令不需要深入。

Agent 也充当数据的顶级容器和设置。

  • 要查看哪些语言、机器学习和其他偏好会影响您的 Agent 的行为,请查看 Agent 设置。

  • 尝试在整个对话过程中对最终用户的意图进行分类。

  • 使用实体识别并从用户说的话中提取特定信息。

  • 能够读取书面内容(如常见问题解答)并识别预设的回复。

  • 可以集成在硬件或服务上运行的程序,这些程序直接处理最终用户的交互(例如 Google 助理)。

  • 使用集成连接您的服务时,请使用 Fulfillment。

预构建 Agent

Dialogflow 提供了一组称为预构建 Agent 的 Agent,用于常见的用例。您可以使用这些 Agent 开始关于送货、酒店预订、路线指引和其他事物的对话。

预构建 Agent 为某些用例提供了意图和实体,但您仍然需要提供意图回复。反应通常取决于您的特定情况或需要满足的需求。

Agent 的局限性

以下限制适用:

  • 只有适用于全球地区的预构建 Agent。

  • 预构建 Agent 支持所有 Dialogflow 语言的一个子集。浏览预构建 Agent 时,只显示支持活动 Agent 默认语言的预构建 Agent。

导入预构建 Agent

以下是将预构建 Agent 导入到您的项目中的方法:

  • 转到 Dialogflow ES 控制台。

  • 从左侧的侧边栏菜单中选择“预构建 Agent”。

  • 将鼠标光标指向现有 Agent。

  • 点击“查看详情”。

  • 选择“导入”。

  • 从活动 GCP 项目中选择,或启动一个全新的项目。

  • 选择“从模板创建 Agent”。

多语言 Agent

Dialogflow 支持多种语言。创建 Agent 时选择的语言将成为默认语言,您可以添加更多语言。语言分为两类:

  • 根语言:根语言是没有位置规范的语言,例如英语 (en)。

  • 特定地区语言:特定地区语言包括美式英语 (en-US),它将某个地区识别为特定的国家或地区。

意图 (Intents)

意图对对话单轮中最终用户的意图进行分类。您为每个 Agent 描述许多意图,所有意图的集合可以管理整个对话。Dialogflow 将 Agent 的最佳意图与最终用户的书面或口语语言(也称为最终用户表达)进行匹配。匹配意图也称为意图分类。

创建一个可以识别和响应用户关于天气查询的天气 Agent 是一个典型的用例。如果问题是关于天气预报,您很可能会指定一个目标。Dialogflow 会将预报意图与最终用户的表达(例如“天气预报怎么样?”)进行匹配。您还可以指定是否要从最终用户表达中提取特定信息,例如预期的天气预报的位置或时间。此提取的数据对于您的系统向最终用户提供天气查询是必需的。

Intents of Dialogflow

基本意图包括以下项目:

  • 训练短语:最终用户可以使用训练短语作为代表性术语。如果这些句子中的任何一个听起来像最终用户会使用的表达,那么 Dialogflow 会匹配意图。不需要识别所有可能的情况,因为 Dialogflow 的内置机器学习会扩展以适应列表中更相关的短语。

  • 操作:我们可以向 Agent 提供操作。当我们匹配意图时,Dialogflow 会向系统提供操作。这些操作可用于启动不同的预定义系统操作。

  • 参数:如果您想在运行时匹配意图,则 Dialogflow 会将最终用户表达作为参数接受。实体类型或一种精确描述如何检索数据并将其分配给每个参数的类型。设置与最终用户的原始输入不同。“参数”一词描述的是用于提供响应或执行逻辑的有组织的数据。

  • 响应:您可以向用户提供音频、视觉或文本响应。这些具有响应最终用户查询、从他们那里获取更多数据和结束对话的能力。

下图显示了意图匹配的基本流程,以及它如何响应最终用户。

Intent Matching

操作 (Actions)

操作字段是一个简单的实用程序功能,可以改进服务的逻辑。构建 Agent 时,您可以输入您认为有用的任何文本。

在运行时匹配意图时,Dialogflow 会将操作值提供给您的 Fulfillment webhook 请求或 API 交互响应。它可以用于在您的服务中启动某些逻辑。

参数 (Parameters)

当意图匹配时,Dialogflow 会将从最终用户表达中收集的值作为参数返回。与每个参数相关的实体类型指定了提取数据的确切方式。参数是有组织的数据,与非结构化的最终用户输入相比,可以轻松地用于执行逻辑或生成回复。

通过标记训练短语的特定部分并设置关联的参数,您可以在创建 Agent 时管理数据收集过程。

响应 (Responses)

当意图匹配时,可以通过意图中的集成响应处理程序给出响应。此功能仅允许静态响应,但您可以使用参数引用使这些响应更具动态性。这对于呈现最终用户提供的数据很有帮助。例如,要回答查询,可以说:“好的,我为您预订了 10 月 20 日的房间”。

默认意图

创建 Agent 时,会自动设置两个意图:

  • 默认问候意图:一旦最终用户开始与您的代表对话,就会匹配。

  • 默认回退意图:当您的 Agent 无法将最终用户的输入与其他意图匹配时,它将匹配默认回退意图。

实体 (Entities)

实体定义为 Agent 用于回答用户问题的知识库。有许多不同类型的系统实体,例如天气、位置、日期等等。

实体帮助 Dialogflow 理解用户陈述的特定部分。例如,尝试句子“新德里的天气怎么样?”“新德里”就是一个实体(一个位置)。

实体选项

许多实体参数可以改变数据提取和实体匹配的行为。这些参数是为系统实体预先配置的,因此您无法更改它们。但是您可以修改它们以适合您自己的自定义实体。根据您选择的设置,您可以创建多种类型的实体

  • 映射实体:对于每个参考值,映射实体都提供从同义词到参考值的映射。每个映射实体项都包含同义词列表和单个参考值。

  • 列表实体:列表实体提供单个值实体项的列表。它们具有参考值和同义词。

  • 复合实体:复合实体是一种特定类型的列表实体。虽然还可以包含更多实体类型,但列表实体的实体条目通常包含简单的单词或句子。对可以在另一种实体类型中找到的一种实体类型的引用称为别名。当列表对象具有对其他实体类型的同义词时,它称为复合实体。

  • 正则表达式实体:您可以提供正则表达式以使用正则表达式实体进行匹配。

此外,还有两个选项可以修改实体匹配的行为,但不会指定实体类型

  • 自动扩展

  • 模糊匹配

Fulfillment 请求

当匹配意图时,您的 Agent 的默认响应是静态的。如果您使用的是其中一个集成选项,则可以使用 Fulfillment 提供更动态的答案。当为 Fulfillment 启用意图时,Dialogflow 会调用您在响应意图时指定的 serviço。例如,如果最终用户想预订周五的理发,您的服务可以在您的数据库中查找信息,并通过周五的可用性回复他们。

为了允许执行操作,每个意图都设置了一个选项。当某个意图需要动态响应或系统执行某种操作时,应允许意图执行操作。如果匹配的意图未启用执行操作,Dialogflow 将使用您为该意图提供的静态响应。

当启用执行操作的意图匹配时,Dialogflow 会通过发送包含匹配意图详细信息的请求来通知您的 Webhook 服务。您的系统能够执行任何必要的任务,并向 Dialogflow 提供有关下一步操作的指令。只有在启用执行操作时您的 Webhook 服务失败的情况下,才会使用您为该意图提供的静态响应。执行操作流程图如下所示。

Dialogflow Fulfillment Request

以下是用户与 Dialogflow 智能体交互时的流程:

  • 最终用户说出或输入语句。

  • Dialogflow 提取参数并将最终用户的表达评估为一个意图。

  • 您的 Webhook 服务从 Dialogflow 接收 Webhook 请求消息。此消息包含有关操作、参数、为意图定义的响应和匹配意图的详细信息。

  • 必要时,您的服务将运行命令,例如数据库查询或外部 API 调用。

  • Dialogflow 从您的服务接收 Webhook 响应消息。此消息中提供了要传递给最终用户的回复。

  • 最终用户从 Dialogflow 接收响应。

  • 最终用户可以看到或听到答案。

上下文 (Context)

Dialogflow 的上下文功能很像聊天机器人的记忆。它帮助机器人记住用户在对话期间先前做出的评论。这提高了聊天机器人的理解能力,并使其能够根据之前的语句给出精确的答案。

例如,如果用户说:“我想预订航班”,聊天机器人会跟踪它。当用户稍后说:“飞往新德里”时,机器人就会明白他们指的是安排前往新德里的旅行。

有一些设置可以实现更自然的对话。下图显示了银行代理如何使用上下文。

Dialogflow Context

这是一个关于 Dialogflow 如何在对话中使用上下文的示例:

  • Dialogflow 努力将用户用来询问其支票账户信息的词语与正确的意图匹配。如果两者匹配,系统将进入“支票”上下文。

  • 然后,代理直接询问用户他们想知道其支票账户的哪些信息。如果用户说类似“我的余额”之类的话,Dialogflow 提供的“支票”上下文仍然处于活动状态,并将用户的响应与“支票余额”意图匹配。

  • 同样,如果用户在“储蓄”上下文处于活动状态时询问其储蓄账户,则可以使用“SavingsBalance”意图。

  • 系统确认所需数据库后,代理将回复支票账户余额。

广告