“意图”用于对一轮对话中的最终用户意图进行分类。
意图包含以下数据:
术语 | 定义 |
---|---|
显示名称 | 控制台中显示的意图名称。 |
标签 | 有助于对 intent 进行分类的标签。例如:head intent。 |
训练短语 | 训练短语是最终用户可能输入或说出的示例短语,称为最终用户输入。如果最终用户输入与这些短语中的其中一个相似,对话式 AI 助理 (Dialogflow CX) 便会将其与该意图匹配。您无需定义所有可能的示例,因为对话式 AI 助理 (Dialogflow CX) 的内置机器学习功能可使用其他相似的短语扩展您的列表。 |
参数 | 您可以定义训练短语,以使用参数从最终用户输入的特定部分提取值。 |
DTMF 模式 | 请参阅用于电话集成的 DTMF。 |
意图匹配
当最终用户输入信息(文本、语音或电话按键)时,对话式 AI 助理 (Dialogflow CX) 会将该输入与意图训练短语进行比较,以找到最佳匹配。此过程称为“意图匹配”。只有与范围内的意图路由(具有意图要求的状态处理程序)关联的意图才会发生意图匹配。
系统会根据 DTMF 模式匹配按键输入。不过,在搜索与文本匹配的意图时,Conversational Agents (Dialogflow CX) 会根据意图检测置信度分数(也称为置信度分数)为潜在匹配项评分。取值范围从 0.0(完全不确定)到 1.0(完全确定)。 在对意图进行评分后,可能会出现以下两种结果:
训练短语
训练短语是最终用户可能输入或说出的示例短语,称为“最终用户输入”。对于每项意图,您可以创建许多训练短语。如果最终用户输入与这些短语中的其中一个相似,对话式 AI 助理 (Dialogflow CX) 便会将其与该意图匹配。
例如,训练短语“I want pizza”会训练代理识别与该短语相似的最终用户输入,比如“Get a pizza”或“Order pizza”。
您无需定义所有可能的示例,因为对话式 AI 助理 (Dialogflow CX) 的内置机器学习功能可使用其他相似的短语扩展您的列表。建议您至少创建 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”添加注释。当您为训练短语的特定部分添加注释后,对话式 AI 助理 (Dialogflow CX) 会识别出这些部分只是最终用户将在运行时提供的实际值的示例。
对于“What is the forecast on Friday for Sydney?”这样的最终用户输入,Conversational Agents (Dialogflow CX) 会从“Friday”中提取 date
参数,并从“Sydney”中提取 location
参数。
您必须为所有要作为参数提取的训练短语部分添加注解。否则,Dialogflow 将不会提取这些值。
使用控制台构建代理时,如果您所添加的训练短语中包含可与现有实体类型匹配的特定部分,那么系统会自动为您创建大多数注释。这些部分会在控制台中突出显示。 您可以根据需要修改这些注释和参数。
要使用控制台手动为训练短语添加注释,请执行以下操作:
- 选择要添加注释的训练短语部分。
- 从列表中选择所需的实体类型。
- 系统会在下方的参数表中为您创建一个参数。
使用 API 构建代理时,必须手动为训练短语部分添加注释。请参阅 Intent
类型使用的 TrainingPhrase
类型。
为意图参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | intent 资源 | intent 资源 |
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 触发此 intent。调用 detectIntent
或 streamingDetectIntent
方法时,请在 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
取消意图
在对话期间,最终用户可能需要取消当前的对话主题。例如,当前活跃的页面可能要求提供新预约的日期,但最终用户决定不创建新预约。最终用户可能会说“取消”或“我不想新建预约”之类的内容。如需应对这种情况,您可以为代理创建一个或多个取消意图。您可以随意命名这些取消意图,但通常的做法是在名称中包含“取消”。您应该将这些取消的意图与对话中相关点范围内的意图路由相关联。这些意图路由应转换到相应的页面来处理取消操作。
取消意图的训练短语应处理通用尝试和主题特有的尝试取消。例如:
- 取消
- 停止
- 我改主意了
- 不用了
- 返回
- 返回
- 我不想新建预约
- 取消新预约
- 删除新预约
创建意图
如需创建意图,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击+创建。
- 输入意图数据。
- 点击保存。
API
请参阅 Intent
类型的 create
方法。
为意图参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | intent 资源 | intent 资源 |
RPC | Intent 接口 | Intent 接口 |
C++ | IntentsClient | 不可用 |
C# | IntentsClient | 不可用 |
Go | IntentsClient | 不可用 |
Java | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 不可用 | 不可用 |
Python | IntentsClient | IntentsClient |
Ruby | 不可用 | 不可用 |
删除意图
如需删除意图,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 将鼠标悬停在要删除的意图上。
- 点击 delete 删除按钮。
API
请参阅 Intent
类型的 delete
方法。
为意图参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | intent 资源 | intent 资源 |
RPC | Intent 接口 | Intent 接口 |
C++ | IntentsClient | 不可用 |
C# | IntentsClient | 不可用 |
Go | IntentsClient | 不可用 |
Java | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 不可用 | 不可用 |
Python | IntentsClient | IntentsClient |
Ruby | 不可用 | 不可用 |
访问意图数据
如需访问意图数据,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击您要访问的意图。
- 查看或更新意图数据。
- 点击保存以保存更改。
API
请参阅 Intent
类型的 get
和 patch/update
方法。
为意图参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | intent 资源 | intent 资源 |
RPC | Intent 接口 | Intent 接口 |
C++ | IntentsClient | 不可用 |
C# | IntentsClient | 不可用 |
Go | IntentsClient | 不可用 |
Java | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 不可用 | 不可用 |
Python | IntentsClient | IntentsClient |
Ruby | 不可用 | 不可用 |
intent 建议
Dialogflow 会自动分析对话期间出现的不匹配情况,并可以建议新的 intent 或为现有 intent 推荐其他训练短语。接受这些建议有助于避免日后出现不匹配的情况。
使用建议时,您可以调整集群大小。集群大小值越小,表示意图越多,每个意图的训练短语越少。聚类大小值越大,意图越少,每个意图的训练短语越多。
如要接受 intent 建议,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击建议标签页。
- 根据需要调整集群大小。
- 选择一项建议。
- 选择所需的训练短语。
- 对于目标 intent,请将训练短语添加到现有 intent 或新 intent。
- 点击保存或创建新建以保存更改。 接受 intent 建议后,该 intent 会保留在建议列表中。
拆分 intent
您可以使用控制台将一个 intent 拆分为两个 intent。借助该界面,您可以从来源 intent 中选择训练短语,并将其移至新 intent:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择要拆分的意图。
- 点击拆分。
- 从来源 intent 中选择 intent。
- 点击向右移动。
- 提供目标 intent 的其他详细信息。
- 点击拆分。
比较和合并 intent
您可以使用控制台比较两个 intent 或将两个 intent 合并为一个 intent:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择要比较或合并的两个 intent。
- 点击比较。
- 训练短语会并排显示以供比较。
- 如需合并这两个 intent,请点击合并。
导出和导入 intent
您可以导出和导入 intent,以便在多个代理之间共享。
导出格式选项之一是 CSV,其中包含以下列:
- 意图显示名称
- 语言
- 短语
每个条目都包含显示名称、语言和第一个训练短语;或者仅包含之前声明的意图的训练短语。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 的显示名称与导入的 intent 的显示名称匹配,则可能会出现合并冲突。您可以通过选择以下任一选项来控制 intent 显示名称匹配时的合并行为:
- 替换现有 intent:导入的 intent 会覆盖现有代理中所有同名 intent。
- 重命名并作为新 intent 导入:系统会将导入的 intent 重命名,方法是将“_1”附加到显示名称。
- 与现有 intent 合并:导入的 intent 的训练短语会添加到现有 intent 中。如果存在相同的训练短语,系统不会重复添加。
- 保留原始 intent:现有 intent 保持不变,系统会忽略冲突的 intent。导入不冲突的 intent。
如需导出 intent,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择要导出的每个 intent。
- 点击导出所选 intent。
- 选择所需的格式和目标位置。
- 点击提交。
如需导入 intent,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击导入。
- 选择来源。
- 如果存在任何冲突,系统会显示一个对话框窗口,以便您选择合并行为。
- 点击提交。
导出和导入训练短语
您可以导出和导入现有 intent 的训练短语。
导入的文件格式为 CSV,不含列标题且只有一列。例如:
"I want a pony"
"I need a pony"
"I must have a pony"
导入训练短语时,您可以选择以下导入模式之一:
- 导入为新的训练短语:文件中的短语会添加到现有短语列表中。
- 替换现有训练短语:系统会删除现有训练短语,并添加文件中的训练短语。
默认情况下,系统会自动为导入的训练短语添加注释。您可以选择跳过自动注解来停用此行为。
如需导出意图的训练短语,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择一个意图。
- 向下滚动到训练短语 (Training phrases) 部分。
- 选择要导出的训练短语。
- 点击导出。
如需为 intent 导入训练短语,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择一个意图。
- 向下滚动到训练短语 (Training phrases) 部分。
- 根据需要,选择跳过自动注解。
- 点击训练语句列表上方的“导入”按钮。
- 选择文件和导入模式。
- 点击提交。
头意图和补充意图
设计代理时,有时将 intent 视为头 intent 或补充 intent 很有用。
头意图标识最终用户与代理交互的主要目的。补充意图标识最终用户与头意图相关的后续问题。这些后续问题可能会为最终用户的需求提供额外的背景信息,或者可能是后续跟进问题,可帮助最终用户说明或更好地了解相关内容。
头意图通常是对话中首先匹配的意图之一,而进一步的最终用户问题匹配补充意图。例如:
对话框 | 说明 |
---|---|
最终用户:激活新电话 代理:Sure I can help you with that。您要激活的电话号码的后 4 位数字是什么? |
头意图匹配 |
最终用户:1234 代理:现在准备好激活手机了吗? |
参数已设置 |
最终用户:我的所有消息都会转移到我的新手机吗? 代理: |
补充意图匹配 |