意图

“意图”用于对一轮对话中的最终用户意图进行分类。 与 ES 意图相比,CX 意图已经过简化,使其成为更可重复使用的资源。

意图包含以下数据:

术语 定义
显示名称 控制台上显示的 intent 名称。
标签 有助于对 intent 进行分类的标签。例如:头部 intent
训练短语 训练短语是最终用户可能输入或说出的示例短语,称为最终用户输入。如果最终用户输入与这些短语中的其中一个相似,Dialogflow 便会将其与该意图匹配。您无需定义所有可能的示例,因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表。
参数 您可以定义训练短语,以使用参数从最终用户输入的特定部分提取值。

意图匹配

当最终用户输入或说出某些内容(称为“最终用户输入”)时,Dialogflow 会将该输入与意图训练短语进行比较,以找到最佳匹配。此过程称为“意图匹配”。只有与范围内的意图路由(具有意图要求的状态处理程序)关联的意图才会发生意图匹配。

在搜索匹配意图时,Dialogflow 根据“意图置信度分数”(也称“置信度分数”)为潜在匹配项评分。取值范围从 0.0(完全不确定)到 1.0(完全确定)。 在对意图进行评分后,可能会出现以下两种结果:

  • 如果得分最高的意图的置信度得分大于或等于分类阈值设置,则系统会将其返回为匹配项。
  • 如果没有任何意图满足阈值,则系统会调用无匹配事件

Dialogflow ML 模型在一定程度上区分大小写,这可能会导致最终用户输入在大小写方面略有不同的匹配分数。如需了解详情,请参阅代理设计最佳实践指南

训练短语

训练短语是最终用户可能输入或说出的示例短语,称为“最终用户输入”。对于每项意图,您可以创建许多训练短语。如果最终用户输入与这些短语中的其中一个相似,Dialogflow 便会将其与该意图匹配。

例如,训练短语“I want pizza”会训练代理识别与该短语相似的最终用户输入,比如“Get a pizza”或“Order pizza”。

您无需定义所有可能的示例,因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表。建议您至少创建 10-20 个训练短语(具体取决于意图的复杂程度),以便您的代理能够识别各种最终用户输入。例如,如果您希望您的意图可以识别最终用户关于他们最喜欢的颜色的输入,则可以定义以下训练短语:

  • “I like red”
  • “My favorite color is yellow”
  • “black”
  • “Blue is my favorite”
  • ...

注释训练短语

您可以通过为训练短语的特定部分添加注释并配置关联的参数来控制最终用户数据的提取方式。

例如,假设有一条训练短语为“What is the forecast tomorrow for Tokyo?” 您应使用 date 参数为“tomorrow”添加注释,使用 location 参数为“Tokyo”添加注释。当您为训练短语的特定部分添加注释后,Dialogflow 会识别出这些部分只是最终用户将在运行时提供的实际值的示例。 对于“What is the forecast on Friday for Sydney?”这样的最终用户输入,Dialogflow 会从“Friday”中提取 date 参数,并从“Sydney”中提取 location 参数。

您必须为要作为参数提取的所有训练短语部分添加注释。否则,Dialogflow 将不会提取值。

使用控制台构建代理时,如果您所添加的训练短语中包含可与现有实体类型匹配的特定部分,那么系统会自动为您创建大多数注释。这些部分会在控制台中突出显示。 您可以根据需要修改这些注释和参数。

要使用控制台手动为训练短语添加注释,请执行以下操作:

  1. 选择要添加注释的训练短语部分。
  2. 从列表中选择所需的实体类型。
  3. 系统会在下方的参数表中为您创建一个参数。

使用 API 构建代理时,必须手动为训练短语部分添加注释。请参阅 Intent 类型使用的 TrainingPhrase 类型。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

由训练短语创建的隐式实体

大多数自定义实体是通过创建实体类型并添加实体条目来显式定义的。但是,自定义实体还可能包含隐式值。当您为训练短语的文本添加注释时,会出现这种情况,其中注释的文本不是所选实体类型定义的值。注释的文本将成为隐式添加的实体条目的实体引用值。如果实体类型是映射实体,则文本也会成为实体条目的同义词。

默认欢迎意图

创建代理时,系统会为您创建默认欢迎意图。对于某些语言,意图具有简单的训练短语(例如“Hi”或“Hello”),旨在匹配初始最终用户输入。您可以根据需要修改此意图。

使用 API 时,您可以使用以下意图 ID 引用此意图:

00000000-0000-0000-0000-000000000000

如果您的代理发起对话,您可以使用 API 触发此意图。调用 detectIntentstreamingDetectIntent 方法时,请在 QueryInput.intent.intent 字段中使用值 projects/<PROJECT_ID>/locations/<LOCATION_ID>/agents/<AGENT_ID>/intents/00000000-0000-0000-0000-000000000000

默认负意图

创建代理时,系统会为您创建默认负意图。您可以将训练短语添加到此意图中作为反例。在某些情况下,终端用户的输入可能与正常意图中的训练短语略有相似之处,但您不希望这些输入与任何正常意图匹配。

例如,房间预订代理可能会有“我想预订房间”之类的培训用语。如果最终用户想要购买有关房间的图书,可能会说“我想购买有关房间的图书”。如需确保最终用户输入的意思与您的意图不匹配,您可以添加该用语作为反例。

此外,您还应添加在代理范围之外的可能短语,因此它们不会匹配任何意图。但是,请避免添加大量这些短语。例如,如果您定义了 10000 个默认的负意图短语,则会对正常的意图匹配产生负面影响。

您应该定期查看这些短语,因为其中一些短语可能最初不在代理的范围内,但随后添加到意图中。

默认负意图会影响所有意图匹配。您添加到该意图中的短语可以有利于对一个意图的匹配,但会危害对另一个意图的匹配。例如,您可以将“国际长途电话”添加到默认的负意图中,以避免匹配国际旅行意图。但是,这也会阻止该短语匹配国际长途电话意图。

使用 API 时,您可以使用以下意图 ID 引用此意图:

00000000-0000-0000-0000-000000000001

取消意图

在对话期间,最终用户可能需要取消当前的对话主题。例如,当前活跃的页面可能要求提供新预约的日期,但最终用户决定不创建新预约。最终用户可能会说“取消”或“我不想新建预约”之类的内容。如需应对这种情况,您可以为代理创建一个或多个取消意图。您可以随意命名这些取消意图,但通常的做法是在名称中包含“取消”。您应该将这些取消的意图与对话中相关点范围内的意图路由相关联。这些意图路由应转换到相应的页面来处理取消操作。

取消意图的训练短语应处理通用尝试和主题特有的尝试取消。例如:

  • 取消
  • 停止
  • 我改主意了
  • 不用了
  • 返回
  • 返回
  • 我不想新建预约
  • 取消新预约
  • 删除新预约

创建意图

如需创建意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击+创建
  7. 输入意图数据。
  8. 点击保存

API

请参阅 Intent 类型的 create 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

删除意图

如需删除意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 将鼠标悬停在要删除的意图上。
  7. 点击 删除按钮。

API

请参阅 Intent 类型的 delete 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

访问意图数据

如需访问意图数据,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击您要访问的意图。
  7. 查看或更新意图数据。
  8. 点击保存以保存更改。

API

请参阅 Intent 类型的 getpatch/update 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

intent 建议

Dialogflow 会自动分析对话期间不匹配的情况,并可以建议新的意图或为现有意图推荐其他训练短语。 接受这些建议有助于避免日后出现无匹配项。

使用建议时,您可以调整集群大小。集群大小值越小,表示意图越多,每个意图的训练短语数量就越少。 集群大小值越大,表明意图越少,每个意图的训练短语就越多。

如需接受 intent 建议,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击建议标签页。
  7. 根据需要调整集群大小
  8. 选择一条建议。
  9. 选择所需的训练短语。
  10. 对于目标意图,请将训练短语添加到现有意图或新意图中。
  11. 点击保存新建以保存所有更改。 接受 intent 建议后,该 intent 会保留在建议列表中。

拆分 intent

您可以使用控制台将一个 intent 拆分为两个 intent。通过该界面,您可以从源意图中选择训练短语,并将其移至新意图中:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要拆分的意图。
  7. 点击拆分
  8. 从源 intent 中选择 intent。
  9. 点击右移
  10. 为目标 intent 提供其他详细信息。
  11. 点击拆分

比较和合并 intent

您可以使用控制台比较两个意图或将两个意图合并到单个意图:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要比较或合并的两个意图。
  7. 点击比较
  8. 训练短语并排显示以进行比较。
  9. 如需合并这两个意图,请点击合并 (Merge)。

导出和导入 intent

您可以导出和导入意图,以便在代理之间共享。

其中一个导出格式选项是 CSV,其中包含以下列:

  • intent 显示名称
  • 语言
  • Phrase

每个条目包含显示名称、语言和第一个训练短语;或者仅包含之前声明的意图的训练短语。Dialogflow 会对导出的训练短语中的注释进行编码,以便在导入时恢复注释。 这种编码的格式如下:

(annotated part)[entity, parameter]

例如:

Intent Display Name,Language,Phrase
Shirt Selection,en,I want a (green)[@sys.color, color] shirt
,,I would like a (yellow)[@sys.color, color] shirt
Store Hours,en,When are you open?
,,What are your hours?

导入意图时,如果现有代理中的意图的显示名称与导入的意图的显示名称一致,则可能会出现合并冲突。您可以通过选择以下选项之一来控制 intent 显示名称匹配时的合并行为:

  • 替换现有意图:导入的意图会覆盖现有代理中任何同名的意图。
  • 重命名并作为新 intent 导入:通过在显示名称后面附加“_1”来重命名导入的 intent。
  • 与现有意图合并:导入的意图的训练短语会添加到现有意图中。 如果存在相同的训练短语,则不会复制它们。
  • 保留原始 intent:现有 intent 保持不变,并忽略有冲突的 intent。系统会导入非冲突 intent。

如需导出意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要导出的每个意图。
  7. 点击导出所选意图 (Export selected intent)。
  8. 选择所需的格式和目标位置。
  9. 点击提交

如需导入 intent,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击导入
  7. 选择来源。
  8. 如果存在任何冲突,系统会显示一个对话框窗口,供您选择合并行为。
  9. 点击提交

导出和导入训练短语

您可以导出和导入现有意图的训练短语。

导入的文件格式为 CSV 格式,无列标题,只有一列。例如:

"I want a pony"
"I need a pony"
"I must have a pony"

导入训练短语时,您可以选择以下导入模式之一:

  • 作为新的训练短语导入:文件中的短语会添加到现有短语列表中。
  • 替换现有训练短语:系统会删除现有的训练短语,并添加文件中的训练短语。

默认情况下,系统会自动为导入的训练短语添加注释。您可以选择跳过自动注解来停用此行为。

如需导出意图的训练短语,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择一个意图。
  7. 向下滚动到训练短语 (Training phrases) 部分。
  8. 选择要导出的训练短语。
  9. 点击导出

如需为意图导入训练短语,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择一个意图。
  7. 向下滚动到训练短语 (Training phrases) 部分。
  8. 如果需要,可以选择跳过自动注解
  9. 点击训练短语列表正上方的导入按钮。
  10. 选择文件并采用导入模式。
  11. 点击提交

在设计代理时,有时将意图视为头 intent 或补充 intent 会很有用。

头意图标识最终用户与代理交互的主要目的。补充意图标识最终用户与头意图相关的后续问题。这些后续问题可能会为最终用户的需求提供额外的背景信息,或者可能是后续跟进问题,可帮助最终用户说明或更好地了解相关内容。

头意图通常是对话中首先匹配的意图之一,而进一步的最终用户问题匹配补充意图。例如:

对话框 说明
最终用户:激活新电话
代理:Sure I can help you with that。您要激活的电话号码的后 4 位数字是什么?
头意图匹配
最终用户:1234
代理:现在准备好激活手机了吗?
参数已设置
最终用户:我的所有消息都会转移到我的新手机吗?
代理
补充意图匹配