智能应用程序工作负载的意图识别和实体提取选项

意图识别和实体提取是自然语言理解的关键组成部分。

意图识别涉及识别用户输入背后的目标或目的。 例如,如果用户说“我想预订航班”,则目的是预订航班。 意图识别可帮助代理了解需要根据用户的请求采取哪些操作。

实体提取涉及从用户的输入中识别和提取特定信息。 实体可以是日期、名称、位置或任何其他相关数据等内容。 例如,在“预订 9 月 15 日飞往纽约的航班”这句话中,“纽约”和“9 月 15 日”是实体。

代理使用意图来理解用户的目标,并使用实体来识别完成任务所需的特定细节。 因此,意图识别和实体提取使代理能够为用户查询提供准确有效的响应。

在设计智能应用程序工作负载时,您需要选择意图识别和实体提取的最佳选项,以确保您的智能应用程序工作负载提供积极的用户体验。

定义

术语 定义
NLU 自然语言理解是 AI 中自然语言处理的一个子集,专注于机器阅读理解。
CLU 对话语言理解是 Azure AI 的一项功能,可以创建自定义 NLU 模型。
LLM 大型语言模型是一种旨在理解和生成人类语言的 AI 模型。
GPT 生成式预训练转换器是指一系列大型语言模型,它们使用 transformer 体系结构来理解和生成类似人类的文本。
动态链接 动态链接是生成式操作的一种自动化触发器的方法。 与手动定义每一个可能的主题或触发短语相比,动态链允许人工智能根据对话的上下文确定需要调用哪些主题或插件操作。

在智能应用程序工作负载中为意图识别和实体提取选择正确的选项涉及几个关键注意事项:

  • 预建实体与自定义实体:评估 Microsoft Copilot Studio 提供的预建实体是否满足您的需求。 预生成实体涵盖日期、数字和名称等常见信息类型。 如果您的应用程序需要特定于域的知识,则可能需要创建自定义实体。

  • 用户输入的复杂性:考虑用户输入的复杂性和可变性。 对于简单的方案,预生成的实体可能就足够了。 对于更复杂的交互,可能需要自定义实体和高级配置,如正则表达式(regex)。

  • 插槽填充:确定您的应用是否需要主动填充插槽,即代理主动寻找并填充用户输入中的缺失信息。 插槽填充可以通过减少对后续问题的需要来增强用户体验。

  • 性能和可扩展性:评估所选方法的性能和可扩展性。 自定义实体和复杂配置通常需要更多的处理能力,并且可能会影响响应时间。

  • 易于维护:考虑维护和更新实体的难易程度。 预生成的实体更易于管理,而自定义实体需要随着应用程序的发展而不断调整。

在标准 NLU, Azure CLU 或动态链接之间进行选择

在 Copilot Studio 中,可以通过使用标准 NLU 模型、将其与自定义 Azure CLU 模型结合或覆盖,或者使用动态链(一种基于 GPT 大型语言模型的模型)完全替换 NLU 模型来实现主题或操作触发。

标准 NLU 模型 自定义 Azure CLU 模型 动态链接
Pro 预训练的默认现成模型,具有许多预定义的实体类型。

配置是通过添加触发短语和自定义实体(包含值和同义词的封闭列表或正则表达式)来完成的。
支持更多语言,具有本机模型。

支持自定义意图触发模型,以便更好地识别意图或满足特定的行业要求。

允许复杂实体提取(例如,相同类型的实体)。

实体提取也可使用 Copilot Studio 标准 NLU。
使用 GPT 大型语言模型,并在更广泛的数据上进行预训练。

可以处理多个意图并链接主题和/或插件。

自动生成缺少输入的问题,并回答对话上下文中的复杂实体和问题。

配置是通过描述主题、插件操作、输入和输出来完成的。
条件 每个查询的单一意图识别。

无法扩展。 您无法修改模型的行为方式或微调模型。 它按原样提供。

在同一查询中填充同一类型的多个实体时,需要对每个实体进行消歧处理(例如,从城市和到城市)。
每个查询的单一意图识别。

配置在 Azure 中完成,但需额外付费。

有自己的需要评估的服务限制。

Azure CLU 的意图和 Copilot Studio 主题必须保持同步。
由于这是一种生成式人工智能功能,因此信息的许可烧毁率要高于常规的主题触发。

触发短语和插槽填充

在开发智能应用程序工作负载时,使用本机功能来增强意图识别并简化对话。 首先从现有的常见问题解答数据库和聊天记录中识别主题触发短语,以确保预期的短语相关且准确。 考虑如何使用实体;例如,您是使用正则表达式来查找订单 ID、电子邮件的预生成实体,还是使用具有同义词的操作类型的封闭列表。 此外,计划如何使用示例短语测试主题触发器,以验证和优化意图识别和实体提取过程的准确性。 更多信息,请参阅部署和测试注意事项

触发短语

触发短语可训练代理的 NLU 模型。 它们通过定义触发特定主题的特定短语来帮助代理识别和准确响应用户话语。 正确配置这些触发短语可确保代理能够正确识别用户的意图并做出适当的响应。 当代理不确定要触发的主题时,它可以建议最多三个潜在的候选主题(多个主题匹配系统主题),或者在未确定主题的情况下回退到默认响应。 这种机制有助于维持对话的流畅性,并确保代理能够有效地处理各种用户输入。

实体提取和槽填充

实体提取和槽填充是开发有效代理的重要组成部分。 这些过程使代理能够通过从用户查询中识别和提取相关详细信息来有效地获取和使用信息。

实体提取涉及解析用户的输入,以识别特定的信息片段。 例如,在查询“我想订购三件蓝色大 T 恤 ”中,代理的 NLU 模型应提取以下实体:

  • 数量:3
  • 颜色:蓝色
  • 尺码:大号
  • 物品类型:T 恤

槽填充是使用这些提取的实体来完成给定任务所需的信息的过程。 在此示例中,代理将主题识别为订单,并用提取的实体填充所需的插槽。 代理能够在不提出更多问题的情况下理解用户的请求,从而简化交互。

实体提取和槽填充使代理能够更有效地处理复杂的查询,提供准确且与上下文相关的响应并增强用户体验。

了解详细信息:

将 Microsoft Copilot Studio 与 Azure CLU 集成

将 CLU 模型与 Copilot Studio 代理集成可显著增强代理的能力。 这种集成包括将 Azure CLU 意图映射到 Copilot Studio 主题,使代理能够更准确地理解和响应用户意图。 此外,Copilot Studio 预建实体可与 Azure CLU 实体一起使用,为实体提取提供了一个强大的框架。

在考虑此集成时,请务必评估您的智能应用程序工作负载是否需要 Azure CLU。 例如,Azure CLU 支持更多语言、行业特定词典和复杂的实体提取,这对您的应用程序来说可能是必不可少的。 使用 Azure CLU 的自定义实体提取还可以启用静默或“幸运”槽填充,这允许代理处理场景,例如在单个短语中识别来源城市和目的地城市,而无需询问后续问题。

另一个重要方面是确保 Azure CLU 服务配额和限制与代理的使用情况保持一致。 例如,如果您预计每分钟需要意图识别的呼叫少于 1,000 个,则可以使用 S 层设置 Azure CLU。 此配置可确保您的代理可以处理预期的工作负载,而不会超出服务限制或产生意外成本。

了解详细信息:

主题结构注意事项

有效地构建主题对于创建自然和无缝的对话非常重要。 主题是离散的对话路径,当它们组合在一起时,允许用户顺利地与代理交互。 以下是设计主题结构的一些关键注意事项:

  • 基于触发的主题:这些主题根据用户发言激活,并作为切入点。 为这些主题定义清晰的触发短语。 如果触发短语在多个主题中重叠,请考虑实施一个包罗万象的主题,该主题可以在提出澄清性问题后重定向到相应的主题。 通过实体提取和槽填充,如果已经提供了必要的信息,则可以跳过这些澄清问题。

  • 基于重定向的主题:这些主题由重定向操作、活动或事件触发,可被多个其他主题调用。 它们应设计为可重用和模块化,并具有输入和输出变量,以促进无缝集成到各种对话路径中。

  • 双重触发式主题:有些主题既可以通过意图识别触发,也可以通过明确的重定向触发。 这种灵活性允许进行更动态和响应式的对话。

  • 对话增强和回退:为用户查询未触发匹配主题的情况创建回退主题。 这些主题可以提供一般性响应或建议相关主题,以保持对话流。

设计方法:

  • 针对关键场景的自定义主题:针对关键场景开发一些自定义主题,并提供相关的触发短语和重定向。 使用父子主题结构来管理复杂的交互。 对于无法识别的意图,请实施生成式答案和回退机制。

  • 消歧义主题:计划对需要澄清问题的操作使用歧义主题。 例如,用户账户操作可能需要说明操作类型(如创建、解锁、暂停)和涉及的系统(如 SAP、ServiceNow、Microsoft)。

  • 避免重复:为避免内容重复,可为需要重复的对话路径创建可重复使用的主题。 这些可重用的主题可以由父主题调用,完成后,对话可以恢复父主题的逻辑。

了解详细信息:

处理无法识别的意图

有效管理无法识别的意图可确保流畅的用户体验。 当代理不理解用户话语并且缺乏足够的置信度来触发现有主题时,会出现无法识别的意图。 下面是处理这些情况的一些建议:

  • 管理未识别的意图:最初,将未识别的意图引导至对话增强系统主题,该主题会在公共网站和企业资源(如 SharePoint 网站)中搜索答案。 如果没有找到相关信息,系统就可以使用 Azure OpenAI GPT-4 模型的自定义系统提示,返回到类似于 ChatGPT 的体验。 此方法可确保用户收到有用的响应,即使查询是计划外的。

  • 与外部系统集成考虑是否将与外部系统集成作为后备策略的一部分。 例如,使用 HTTP 请求与 Azure OpenAI GPT-4 模型集成,以提供类似 ChatGPT 的兼容体验。

  • 监控回退使用情况:定期检查使用回退功能的会话比例。 使用这些见解来丰富现有主题或创建新主题,确保代理不断提高其理解和响应能力。

  • 回退主题和生成答案:当没有找到匹配的话题时,就会触发 回退系统话题。 如果启用了生成式答案,则在未知意图事件中首先触发会话增强主题,然后根据需要触发回退主题。 这种分层方法有助于有效地管理无法识别的意图。

  • 使用会话增强和回退:使用生成式答案搜索各种数据源或与其他系统集成,如 Azure 语言认知服务。 此服务可以处理大量问答对,并包括用于随机问题的闲聊模型。

  • 核心场景和自定义主题:确保核心场景和主题定义明确,并通过自定义主题进行处理。 明确定义这些主题的结果,以保持结构化和高效的对话流程。

本地化和语言

在构建代理时,请考虑您的智能应用程序工作负载必须支持的语言和市场。 本地化和语言支持是确保您的智能应用程序工作负载满足不同用户群需求的关键因素。 以下是一些建议的方法:

  • 每种语言一个代理:这种方法是为每种语言创建一个单独的代理。 它确保每个代理都针对其特定语言进行了全面优化;但是,维护多个代理可能会占用大量资源。

  • 一个代理支持多种语言(配置翻译):采用这种方法时,一个代理支持多种语言,翻译作为代理配置的一部分提供。 此方法要求在每次更新代理或添加新内容时更新翻译。 它在资源效率和语言支持之间取得了平衡,但需要仔细管理翻译更新。

  • 一个代理支持多种语言(实时翻译):这种方法使用中继代理在运行时提供实时翻译。 它允许快速部署更多语言,并减少了频繁更新翻译的需要。 但是,它需要依赖中继代理和实时翻译层,如 Azure Service Copilot 和 Azure Cognitive Services Translator。

重要注意事项:

  • 语言和市场代理必须支持的语言和市场会影响本地化策略。

  • 单一代理与多语言代理:决定是开发支持多种语言的单一代理,还是为每种语言开发单独的代理。 此决策取决于资源可用性、维护能力和所涉及语言的复杂性等因素。

  • 翻译时机:考虑是在配置阶段设置翻译,还是在运行时实时提供翻译。 配置的翻译提供稳定性和可控性,而实时翻译提供灵活性和快速部署。

了解详细信息: