何时使用对话语言理解或编排工作流应用

创建大型应用程序时,应该考虑用例是最适合由单个对话应用(平面体系结构)处理,还是由多个经编排的应用处理。

编排概述

编排工作流是一项功能,可让你在一个项目中连接 LUIS对话语言理解自定义问题解答等不同方面的项目。 然后,你可以使用此项目通过一个终结点进行预测。 编排项目会对应当调用哪个子项目进行预测,然后自动路由请求,并返回其响应。

编排涉及两个步骤:

  1. 预测要调用哪个子项目。
  2. 将语句路由到目标子应用,并返回子应用的响应。

编排优势

  • 分解清晰,开发更快:

    • 如果整体架构有大量领域,则可借助编排方法将应用程序分解为多个子应用(每个子应用服务于特定域)。 例如,汽车对话应用可能有导航领域或媒体领域
    • 并行开发每个领域应用会更加容易。 具有特定领域专业知识的人员和团队可以针对各个应用以协作和并行的方式开展工作。
    • 由于每个领域应用都更小,因此开发周期变得更短。 与单个大型应用相比,规模较小的领域应用所需的训练时间要少得多。
  • 更灵活的置信度分数阈值:

    • 由于服务于每个领域的子应用是单独的,因此可以轻松地为不同的子应用设置单独的阈值。
  • 在适当时进行 AI 质量改进:

    • 某些应用程序要求某些实体必须受领域限制。 编排使此任务很容易完成。 在编排项目预测了应该调用哪个子应用后,就不会调用其他子应用。

      例如,在应用包含 Person.Name 预生成实体的情况下,在车辆问题的上下文中考虑“How do I use a jack?”这个语句。 在该上下文中,jack 是一种汽车工具,不应被视为人名。 使用编排时,可以将此语句重定向到一个为回答此类问题而创建的子应用,该子应用没有 Person.Name 实体。

编排缺点

  • 子应用中有冗余实体:

    • 如果需要在所有语句中返回特定的预生成实体(无论领域如何),例如 Quantity.NumberGeography.Location,则无法将实体添加到编排应用(它是纯意向模型)。 需要将其添加到所有单独的子应用。
  • Efficiency:

    • 编排应用采用两种模型推理。 一种用于预测要调用哪个子应用,另一种用于在子应用中进行预测。 推理时间通常会比具有平面体系结构的单个应用长。
  • 为业务流程协调程序训练/测试拆分:

    • 训练编排应用时,不允许在测试集和训练集之间精细地拆分数据。 例如,不能为子应用 A 训练一个 90-10 分割,然后为子应用 B 训练一个 80-20 分割。此限制可能是一个小问题,但得记住。

平面体系结构概述

平面体系结构是开发对话应用的另一种方法。 无需使用编排应用将语句发送到多个子应用之一,只需开发一个单一(或平面)应用来处理语句。

平面体系结构优势

  • 简易性:

    • 对于小型应用或领域,业务流程协调程序方法可能过于复杂。
    • 由于所有意向和实体都处于同一应用级别,因此一起对所有意向和实体进行更改可能会更容易。
  • 添加应始终返回的实体会更容易:

    • 如果希望为所有语句返回某些预生成实体或列表实体,则只需将其与其他实体一起添加到单个应用中即可。 如果使用编排,如上所述,则需将其添加到每个子应用中。

平面体系结构缺点

  • 对于大型应用来说不方便:

    • 对于大型应用(例如 50 多个意向或实体的应用)来说,可能难以跟踪不断变化的架构和数据集。 在应用必须为多个领域提供服务的情况下,这种困局就显得很明显。 例如,汽车对话应用可能有导航领域或媒体领域
  • 对实体匹配项进行有限的控制:

    • 在平面体系结构中,没有办法限制实体仅在某些情况下返回。 使用编排时,可以将这些特定实体分配给特定的子应用。