“意图”用于对一轮对话中的最终用户意图进行分类。
意图包含以下数据:
| 术语 | 定义 |
|---|---|
| 显示名称 | 在控制台中显示的 intent 名称。 |
| 标签 | 有助于对 intent 进行分类的标签。例如:头部意图。 |
| 训练短语 | 训练短语是最终用户可能输入或说出的示例短语,称为最终用户输入。当最终用户输入与其中一个短语类似时,Dialogflow CX 会匹配该意图。您无需定义所有可能的示例,因为 Dialogflow CX 的内置机器学习功能会使用其他类似短语来扩展您的列表。 |
| 参数 | 您可以定义训练短语,以使用参数从最终用户输入的特定部分提取值。 |
| DTMF 模式 | 请参阅用于电话集成的 DTMF。 |
意图匹配
当最终用户输入内容(文本、语音或电话按键)时,Dialogflow CX 会将输入内容与 intent 训练短语进行比较,以找到最佳匹配。此过程称为“意图匹配”。意图匹配只能针对与范围内的意图路由(具有意图要求的状态处理程序)关联的意图进行。
按键输入根据 DTMF 模式进行匹配。但是,在搜索与文本匹配的 intent 时,Dialogflow CX 会使用 intent 检测置信度(也称为置信度分数)对潜在匹配项进行评分。这些值的范围为 0.0(完全不确定)到 1.0(完全确定)。
意图评分后,可能会出现两种结果:
训练短语
训练短语是最终用户可能输入或说出的短语示例,称为最终用户输入。对于每个 intent,您需要创建许多训练短语。当最终用户输入与其中一个短语类似时,Dialogflow CX 会匹配该意图。
例如,训练短语“我想吃披萨”会训练代理识别与该短语类似的最终用户输入,例如“买个披萨”或“订披萨”。
您不必定义每种可能的示例,因为 Dialogflow CX 的内置机器学习功能会使用其他类似短语来扩展您的列表。您应该创建至少 10-20 个(取决于意图的复杂性)训练短语,以便代理可以识别各种最终用户输入。例如,如果您希望意图识别最终用户关于其最喜欢的颜色的输入,则可以定义以下训练短语:
- “I like red”
- “My favorite color is yellow”
- “black”
- “Blue is my favorite”
- …
自动生成和自动翻译训练短语
您可以选择使用 AI 生成功能自动生成训练短语,而无需手动输入。如需使用此功能,请执行以下操作:
- 前往管理标签页,然后点击意图。选择现有意图,或点击 + 创建以创建新意图。
- 请务必在说明字段中输入意图的用途,例如“当用户询问其订单状态时,会触发此意图”。AI 生成器会使用此字段生成更准确的训练短语。
- 点击 __ newly AI-generated phrases(__ 个新生成的 AI 短语)单选按钮。默认值为 3。一次生成超过 15 个训练短语可能会导致错误。
- 点击 + 添加。AI 将生成您指定的训练短语数量,并将其填充到表格中。请务必检查所有生成的训练短语,确保其准确无误。
如需了解如何使用此功能为非默认语言自动生成和自动翻译数据,请参阅多语言代理文档
注释训练短语
您可以通过注释部分训练短语并配置关联的参数来控制最终用户数据的提取方式。
例如,假设训练短语为“东京明天的天气预报是什么?”您应使用 date 参数为“明天”添加注释,并使用 location 参数为“东京”添加注释。当您为训练短语的某些部分添加注释时,Dialogflow CX 会识别出这些部分只是最终用户在运行时提供的实际值的示例。
对于最终用户输入(例如“悉尼周五的天气预报如何?”),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”等训练短语,旨在匹配初始最终用户输入。您可以根据需要修改此 intent。
使用 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
取消意图
在对话期间,最终用户可能希望取消当前对话主题。例如,活跃页面可能正在询问新预约的日期,但最终用户已决定不创建新预约。最终用户可能会说“取消”或“我不想预约”。 为了应对这种情况,您可以为代理创建一个或多个取消 intent。您可以随意命名这些取消 intent,但通常会在名称中包含“cancel”。您应将这些取消 intent 与对话中相关时间点范围内的 intent 路由相关联。这些 intent 路由应转换到适当的页面来处理取消。
取消意图的训练短语应能处理一般取消尝试和特定主题取消尝试。例如:
- 取消
- 停止
- 我改主意了
- 不用了
- 返回
- 返回
- 我不想预约
- 取消新预约
- 删除新预约
创建意图
如需创建意图,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (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 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 将鼠标指针悬停在要删除的 intent 上。
- 点击 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 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (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 | 不可用 | 不可用 |
意图建议
Dialogflow 会自动分析对话期间发生的无匹配情况,并可以建议新 intent 或为现有 intent 推荐其他训练短语。接受这些建议有助于避免日后出现不匹配的情况。
使用建议时,您可以调整集群大小。聚类大小值越小,表示意图越多,每个意图的训练短语越少。聚类大小值越大,表示意图越少,每个意图的训练短语越多。
如需接受意图建议,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击建议标签页。
- 根据需要调整集群大小。
- 选择一项建议。
- 选择所需的训练短语。
- 对于目标 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 导入:通过在显示名称后附加“_1”来重命名导入的 intent。
- 与现有意图合并:导入的意图的训练短语会添加到现有意图中。如果存在相同的训练短语,则不会重复。
- 保留原始 intent:现有 intent 保持不变,冲突的 intent 将被忽略。系统会导入不冲突的 intent。
如需导出 intent,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择要导出的每个 intent。
- 点击导出所选 intent。
- 选择所需的格式和目标位置。
- 点击提交。
如需导入 intent,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 点击导入。
- 选择来源。
- 如果存在任何冲突,系统会显示一个对话框,供您选择合并行为。
- 点击提交。
导出和导入训练短语
您可以导出和导入现有意图的训练短语。
导入的文件格式为 CSV,不含列标题,采用单列格式。 例如:
"I want a pony"
"I need a pony"
"I must have a pony"
导入训练短语时,您可以选择以下导入模式之一:
- 作为新的训练短语导入:文件中的短语会添加到现有短语列表中。
- 替换现有训练短语:系统会删除现有训练短语,并添加文件中的训练短语。
默认情况下,导入的训练短语会自动添加注释。您可以通过选择跳过自动注解来停用此行为。
如需导出意图的训练短语,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择一个意图。
- 前往训练短语部分。
- 选择要导出的训练短语。
- 点击导出。
如需为意图导入训练短语,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的项目。
- 选择您的代理。
- 选择管理标签页。
- 点击意图 (Intents)。
- 选择一个意图。
- 前往训练短语部分。
- 如有需要,请选择跳过自动注解。
- 点击训练短语列表上方的导入按钮。
- 选择文件和导入模式。
- 点击提交。
头意图和补充意图
设计代理时,有时将意图视为头意图或补充意图很有用。
核心意图用于识别最终用户与代理互动的主要目的。补充意图用于识别最终用户与核心意图相关的后续问题。这些后续问题可能会为最终用户的需求提供额外的背景信息,或者可能是后续跟进问题,可帮助最终用户说明或更好地了解相关内容。
核心意图通常是对话中首先匹配到的意图之一,而最终用户的后续问题则会匹配到补充意图。例如:
| 对话框 | 说明 |
|---|---|
| 最终用户:激活新手机 客服人员:没问题,我可以帮您。您要激活的电话号码的后 4 位数字是什么? |
匹配到核心意图。 |
| 最终用户:1234 代理:现在准备好激活手机了吗? |
参数已设置。 |
| 最终用户:我的所有消息都会转移到我的新手机吗? 客服人员:… |
补充意图匹配。 |