在代理中使用实体和槽填充
代理对话 Copilot Studio 的一个重要部分是自然语言理解,即 AI 理解用户意图的能力。 例如,用户可能会说“我尝试使用我的礼品卡片,但它不起作用”,而代理知道将用户路由到与礼品相关的主题卡片不起作用,即使该确切短语未列为触发短语。
自然语言理解的一个基本方面是在用户对话中确定实体。 观看视频以开始使用实体。
实体可以被认为是代表某种特定类型的现实世界主题的信息单元,如电话号码、邮政编码、城市或人的名字。 借助实体授予的知识,代理可以智能地从用户输入中识别相关信息并将其保存以备后用。
预建实体
代理中的实体允许您在类似的组中存储信息。
Copilot Studio 自带一组现成的预生成实体,代表现实对话中的最常用信息类型,例如年龄、颜色、号码和姓名。
借助实体授予的知识,代理可以智能地从用户输入中识别相关信息并将其保存以备后用。
我们以金钱实体为例来帮助理解该概念。
打开您的代理并 Copilot Studio 选择 页面顶部的 Settings ,然后在 菜单中打开 Entities 。
将显示可用的预构建实体列表。
选择资金实体,这将打开实体的详细信息窗格。
您可以在此处查看此实体的说明,以及用于从用户输入中查找与金钱或货币相关的信息的方法。
例如,当用户输入“It cost 1000 dollars”时,使用此 money 实体的代理知道“1000 dollars”表示 money 类型的信息。 当代理提取此实体并将其保存到变量时,它会将“1000”保存为数字,即使周围的信息是文本。
自定义实体
预构建的实体涵盖常用的信息类型。 在某些情况下,例如在构建用于特定目的的代理时,您可能需要教授代理的语言理解模型特定于领域的知识。
例如,假设您想为一家户外商店构建一个代理。 在这种情况下,您需要教代理在对话框中确认“outdoor gears product”类别。
首先,创建自定义实体。 在这种情况下,您可以创建一个实体,为代理提供所有户外商品类别的知识。
打开您的代理并 Copilot Studio 选择 页面顶部的 Settings ,然后在 菜单中打开 Entities 。
选择添加实体>新实体。
封闭式列表实体
通过封闭式列表实体可以定义项目列表。 这些实体最适合用于易于管理、具有简单项目标签的小型列表。
在创建实体时选择此选项将显示一个窗格,您可以在其中指定实体的名称、可选说明,并输入要包含在实体中的项目。
输入项目时,您可以:
- 选择每个项目并更改其名称。
- 选择垃圾桶图标从列表中删除项目。
- 选择 + 同义词(如果已添加,选择列出的同义词)打开编辑同义词窗格。
您可以添加同义词来手动扩展实体列表中每个项目的匹配逻辑。 例如,在“远足”项目中,您可以添加“徒步旅行”和“登山”作为同义词。
对于每个实体,您还可以启用智能匹配。
智能匹配是代理的语言理解模型支持的智能的一部分。 启用此选项后,代理将根据实体中列出的项使用模糊逻辑解释用户的输入。
特别是,代理将自动更正拼写错误并在语义上扩展其匹配逻辑。 例如,代理可以自动将“softball”与“baseball”匹配。
完成创建或编辑实体后,选择保存保存并返回到实体列表。 选择关闭放弃您的更改(如果您意外选择了错误选项,您将看到返回编辑实体的选项)。
正则表达式 (regex) 实体
正则表达式 (regex) 实体让您可以定义可用于匹配和提取输入中的信息的逻辑模式。 正则表达式实体非常适合针对用户输入的复杂模式匹配,或者在您需要允许用户在对话中设定输入的格式或输入其输入内容可能采用的方式发生特定变化时。
例如,您可以使用 regex 实体,从用户输入到代理中的字符串中识别跟踪 ID、许可证编号、信用卡号或 IP 地址等项目。
在创建实体时选择此选项将显示一个窗格,您可以在其中指定实体的名称、可选说明,并输入应该用于匹配和从输入中提取实体项的 regex 模式。
Copilot Studio regex 实体使用 .NET 正则表达式语法。
默认情况下,模式匹配区分大小写,要使其不区分大小写,请在模式字符串中使用 (?i)
正则表达式选项。 一些基本示例包含在 regex 实体窗格中,有关语法的其他信息和更多示例可以在正则表达式语言 - 快速参考主题中找到。
如果您需要让正则表达式适应多个模式,您可以使用交替运算符 |
连接正则表达式。 例如,您可以组合两个正则表达式模式来查找产品 ID 代码的旧格式和新格式。
完成创建或编辑实体后,选择保存保存并返回到实体列表。 选择关闭放弃您的更改(如果您意外选择了错误选项,您将看到返回编辑实体的选项)。
在对话中使用实体
现在,您已经完成通过创建产品类别实体和其他一些自定义实体为代理提供有关户外装备的知识,您可以在构建代理对话时开始使用它们。
转到 要编辑的代理的 Topics(主题 )页面。
打开要收集的实体的主题。
选择添加节点图标 ,然后选择提出问题。
在标识下,选择在自定义实体中创建的实体。
(可选)也可以选择要显示为按钮的项。 例如,如果要将某些类别显示为按钮供用户方便地作为输入进行选择,只需选择选择用户选项,然后从其中包含您在创建自定义实体时添加的项的列表中选择它们。
如有必要,为用户的响应输出的变量命名。
时隙填充
时隙填充是表示将提取的实体保存到对象的自然语言理解概念。 但是,在 Copilot Studio 中,时隙填充意味着将提取的实体值放入变量中。
我们将继续把露营活动主题用作示例,测试聊天中将通过键入“我要买东西”触发该主题。
成功触发主题,并且代理询问活动类型,还显示在创作 Ask a question 节点时指定的按钮选项。 在对话框树中,主题之间的跟踪还会显示代理正在运行到您刚刚编辑的问题节点。
用户可通过选择下面的一个按钮使用预定义的选项。 此外,他们也可以键入“远足”之类内容,并且看到其映射到“徒步旅行”,因为这些词定义为同义词。
在主题之间的跟踪中,其显示对话正确传递到其中的产品类别值为“徒步旅行”的路径。 可以在创作区域底部变量查看窗口中检查变量值。 在查看窗口中,显示的变量值为“徒步旅行”。
基本上,通过在变量 VarCampType
中插入提取的实体“徒步旅行”进行了时隙填充。
也可以使用所谓的“主动时隙填充”,其中,用户可以指定映射到多个实体的多段信息。 代理能够自动理解哪些信息属于哪个实体。 如果不确定意向映射,将通过提供选项更具体地提示用户。
在本示例中,用户写道“我很无聊,但我喜欢登山”。该消息既包括用户希望在户外活动中获得帮助的触发短语,也提供了第二条信息,即“登山”,这是实体定义的徒步旅行的同义词。 在本例中,代理会填写用于选择户外活动的实体和活动类型。
在主题之间跟踪时,您可以看到代理接收此用户输入,并智能地跳过询问活动类型的问题节点。
代理始终积极倾听用户输入,提前记住信息,以便根据需要跳过不必要的步骤。
我们重新开始测试并尝试另一个案例。 在这一回合中,您可以再添加几个问题节点,询问您有多少活动时间(使用持续时间实体)以及价格范围(使用金钱实体)。
这一次,当产品类别问题出现时,用户可以说“我想在 $100 下买一双登山靴”,而不是只告诉代理产品类别。 在此示例中,代理不仅能够找到正确的远足产品类别路径,还能主动填充用于询问远足装备类型和目标价格范围信息的槽。
可以在节点级手动控制主动时隙填充。 如果要始终为特定节点内的问题提供提示,而无论是否从之前的用户响应填充了时隙,都可以为该问题节点禁用跳过问题选项。 执行以下步骤禁用跳过问题选项。
选择问题节点的更多图标 (…),然后选择属性。 将显示问题属性面板。
在问题属性面板上,选择问题行为。
在问题行为面板上的跳过问题下,选择每次询问,然后选择页面顶部的保存。