Copilot Studio 中智能体对话的一个显著部分是自然语言理解,这是 AI 理解用户意图的功能。 例如,客户可能表示“我尝试使用我的礼品卡,但它不起作用”,智能体知道应该将客户传递到与礼品卡不起作用相关的主题,即使该确切短语未列为触发短语。
自然语言理解的一个基本方面是在用户对话中确定实体。
可以将实体视为代表某种类型的现实世界主题的信息单元。 例如电话号码、邮政编码、城市或人名。 智能体可以利用实体赋予的知识智能识别用户输入中的相关信息并保存,供将来使用。
预建实体
智能体中的实体可以将信息存储在类似的组中。
Copilot Studio 支持一组 预生成实体,这些实体表示实际对话中最常用的信息类型,例如年龄、颜色、数字和名称。
通过实体授予的知识,代理可以智能地识别用户输入中的相关信息,并将其保存供以后使用。
为了帮助了解这个概念,让我们以 Money 实体为例。
在 Copilot Studio 中打开智能体,在页面顶部选择设置,然后在菜单中选择实体。
所有可用实体列表将显示。
选择金钱实体。 将打开实体的详细信息面板。
您可以在此处查看此实体的说明,以及用于从用户输入中提取与金钱或货币相关的信息的方法。
例如,当用户输入“价值 1000 美元”时,智能体使用此金钱实体可以知道“1000 美元”代表金钱类型的信息。 当智能体提取此信息并保存到变量时,将把“1000”作为数字保存,即使其两侧的信息为文本。
自定义实体
预构建的实体涵盖常用的信息类型。 有时,例如在生成用于特定用途的智能体时,您可能需要教授智能体的语言理解模型特定于领域的知识。
例如,假设要为户外商店生成智能体。 在这种情况下,您需要教导智能体识别对话中的“户外用品产品”类别。
首先,创建自定义实体。 在此情况下,您可以创建一个实体来为智能体提供有关所有室外产品类别的知识。
转到代理的 “设置” 页,然后选择“ 实体”。
选择添加实体>新建实体。
选择所需的实体类型:封闭列表实体或正则表达式(regex)实体。
封闭式列表实体
通过封闭式列表实体可以定义项目列表。 这些实体最适合用于易于管理、具有简单项目标签的小型列表。
在创建实体中,选择封闭列表。
在打开的面板中,输入新实体的名称 - 例如,露营活动。
必要时添加说明。
在列表项目下,输入要与该实体关联的值。 例如,徒步旅行和瑜伽。
或者,您也可以上传文件列出您想为该实体添加的所有值。
输入项目时,您可以:
- 选择项目并更改它的名称。
- 选择垃圾桶图标来删除项目。
- 选择同义词(如果已添加同义词,则选择列出的同义词),打开编辑同义词面板。
您可以添加同义词来扩展列表中每个值的匹配逻辑。 例如,对于远足,您可以添加徒步旅行和登山作为同义词。
如果需要,为该实体打开智能匹配。
智能匹配是智能体的语言理解模型所支持的智能的一部分。 当智能匹配处于活动状态时,智能体会根据为实体列出的值使用模糊逻辑来解释用户输入。
特别是,智能体将自动更正拼写错误并在语义上扩展匹配逻辑。 例如,智能体可以自动将“垒球”与“棒球”匹配。
完成创建或编辑实体后,选择保存。 选择关闭放弃更改。
为封闭列表实体上传值
从封闭列表实体的详细信息面板中,您可以添加或替换与该实体关联的值和同义词集。
准备一个文本文件(最大 3 MB),其中列出了要为实体添加的所有值,包括同义词(如果有)。 使用此格式:每行一个值,并使用管道(
|)作为同义词的分隔符。 例如:hiking|trekking hiking|mountaineering yoga cycling|bicycling cooking在列表项下,选择上传文件。
在上传文件中,选择所需的选项:
- 如果要为实体添加新值和同义词,请选择添加。
- 要使用文件中的列表替换所有现有值和同义词,请选择替换。
将文件拖放到窗口上。 或者,选择单击浏览,导航到文件并将其选中。
查看出现的值和同义词,然后选择添加。
下载封闭列表实体的值
从封闭列表实体的详细信息面板中,您可以下载一个文本文件,其中列出了与该实体关联的值和同义词集。
在列表项下,选择下载文件。
保存生成的文本文件,或在文本编辑器中打开查看其内容。 每个实体值都显示在单独的行上。 如果一个值有多个同义词,它们会显示在单独的行上,如下所示:
hiking|trekking hiking|mountaineering
正则表达式 (regex) 实体
正则表达式 (regex) 实体让您可以定义可用于匹配和提取输入中的信息的逻辑模式。 正则表达式实体非常适合针对用户输入的复杂模式匹配。 在您需要允许用户在对话中设置输入的格式或输入其输入内容可能采用的方式发生特定变化时,这些实体也很有用。
例如,使用 regex 实体来识别跟踪 ID、许可证号、信用卡号或 IP 地址等项目。
在创建实体中,选择常规表达式(regex)。
在打开的面板中,输入新实体的名称。
必要时添加说明。
输入应该用于匹配和提取输入中的实体项的正则表达式模式。
Copilot Studio NLU 和 CLU 语言理解功能使用 .NET 正则表达式语法。 NLU+ 使用 JavaScript 正则表达式语法。
默认情况下,模式匹配区分大小写。 要使其不区分大小写,请在模式字符串中使用
(?i)正则表达式选项。 Regex 实体窗格中提供了一些基本示例。 有关语法的更多信息和示例,请参阅正则表达式语言 - 快速参考。如果您需要让正则表达式适应多个模式,您可以使用交替运算符
|连接正则表达式。 例如,您可以组合两个正则表达式模式来查找产品 ID 代码的旧格式和新格式。完成创建或编辑实体后,选择保存。 选择关闭放弃更改。
在对话中使用实体
现在,根据露营活动实体和您创建的其他自定义实体,您的智能体已经知道了户外装备的信息,可以开始在智能体中使用它们了。
转到智能体的主题页面。
打开要收集的实体的主题。
选择添加节点图标
,然后选择提出问题。在标识下,选择在自定义实体中创建的实体。
(可选)也可以选择要显示为按钮的项。 例如,如果要将某些类别显示为按钮供用户方便地作为输入进行选择,只需选择选择用户选项,然后从其中包含您在创建自定义实体时添加的项的列表中选择它们。
如有必要,为用户的响应输出的变量命名。
时隙填充
时隙填充是表示将提取的实体保存到对象的自然语言理解概念。 在 Copilot Studio 中,槽填充意味着将提取的实体值放入变量中。 有关与每个预生成实体关联的变量基类型的详细信息,请参阅 “实体”。
让我们继续以露营活动主题为例,在测试聊天中输入“我想找点事做”就会触发该主题。
将成功触发该主题,而智能体将询问活动类别,并且显示在制作问题节点时指定的按钮选项。 如果打开主题间跟踪选项,对话树还会显示智能体正在运行到问题节点。
用户可通过选择下面的一个按钮使用预定义的选项。 此外,他们也可以键入“远足”之类内容,并且看到其映射到“徒步旅行”,因为这些词定义为同义词。
跟踪视图显示对话已正确路由到产品类别值为“徒步旅行”的路径。您可以从创作画布底部的变量监视窗口中检查变量值。 查看窗口显示变量值为“徒步旅行”。
基本上,通过在变量 VarCampType 中插入提取的实体“徒步旅行”进行了时隙填充。
也可以使用所谓的“主动时隙填充”,其中,用户可以指定映射到多个实体的多段信息。 智能体可以自动理解哪些信息属于哪个实体。 如果不确定意向映射,将通过提供选项更具体地提示用户。
在此示例中,用户写道“我很无聊,但我喜欢登山”。此消息包括用户希望帮助进行户外活动的触发短语,以及第二条信息“登山”,这是徒步旅行的同义词。 在此情况下,智能体同时填充有关选择户外活动的实体和有关活动类型的实体。
跟踪视图显示,智能体接收了用户输入,并智能地跳过了询问活动类型的问题节点。
智能体始终主动倾听用户输入,并预先记忆信息,以便根据需要跳过不必要的步骤。
我们重新开始测试并尝试另一个案例。 在这一回合中,您可以再添加几个问题节点,询问您有多少活动时间(使用持续时间实体)以及价格范围(使用金钱实体)。
这次在提供产品类别问题时,用户不仅告知智能体产品类别,还可以说出“我要买一双价格低于 100 美元的登山靴”。。在此示例中,智能体不仅可以传递到正确的徒步旅行产品类别路径,还可以主动填充时隙以询问徒步旅行用品类型和目标价格范围信息。
可以在节点级手动控制主动时隙填充。 如果要始终为特定节点内的问题提供提示,而无论是否从之前的用户响应填充了时隙,都可以为该问题节点禁用跳过问题选项。 执行以下步骤禁用跳过问题选项。
选择问题节点的更多图标 (…),然后选择属性。 将显示问题属性面板。
在问题属性面板上,选择问题行为。
在问题行为面板上的跳过问题下,选择每次询问,然后选择页面顶部的保存。
在对话轮次接受多个实体中的一个
在某些情况下,代理可以在给定的对话轮次接受多个有效答案之一。 例如,代理可能会提示客户提供其账号或电话号码。 您可能还希望智能体允许客户说明他们没有信息,并相应地路由客户,而不是立即升级到客户服务代表。
添加 问题节点。
在 “标识”下,选择 多个实体之一。
对于想要在此节点上接受的每个实体,请选择“ 新建实体 ”,然后选择所需的实体。 问题节点最多可以支持五个不同的实体。
选择 “保存用户响应” 下的默认变量名称以打开 “变量属性 ”面板,并将名称更改为有意义的名称,例如 “标识符”。
存储已识别实体值的变量是类型记录,此节点上每个受支持的实体都有一个元素,例如 Identifier.account、Identifier.phone、Identifier.unknown。
根据客户提供的信息添加条件以路由对话。 最好使用“不是空白”运算符(或 “空白”)来设置条件。
“多个实体之一”的确认行为
这种识别类型旨在在对话轮次中从一组可能的实体中识别出单个实体。 如果客户输入一个包含两个或多个实体的语句,而这些实体是为在相应的 问题 节点上进行标识而配置的,代理会 仅仅 标识列表中的第一个实体。 因此,请确保设计这些问题并相应地设计此类问题节点之后的条件逻辑。
例如,假设 “问题 ”节点配置为识别以下项之一:库卡号、电话号码或“我不知道”,顺序如下。 如果客户说“我的电话号码是 777 555-1212,我的卡号是123456789”,则识别的实体值是卡号,因为它是相应 问题 节点中可能实体列表中的第一个实体。
如果代理无法识别 问题 节点配置为识别的任何实体,则会应用为该节点指定的 重新提示行为。
局限性
以下是配置为在对话轮次收集多个实体中其中一个的问题节点的已知限制:
最多支持五个实体。
不支持外部实体。
任何给定类型仅支持一个实体。 例如,一个 问题 节点无法识别 日期类型的两个实体。