Microsoft Fabric 中的 Copilot 是一种生成式 AI 辅助技术,旨在增强 Fabric 平台中的数据分析体验。 本文可帮助你了解 Fabric 中的 Copilot 的工作原理,并提供有关如何最好地使用它的一些高级指南和注意事项。

科皮洛特的能力正在随着时间的推移而演变。 如果计划使用 Copilot,请确保随时了解 Fabric 的每月更新,以及 Copilot 体验的任何更改或公告。

本文可帮助你了解 Fabric 中的 Copilot 的工作原理,包括其体系结构和成本。 本文中的信息旨在指导你和你的组织有效地使用和管理 Copilot。 本文主要面向以下受众:

  • BI 和分析主管或经理: 负责监督 BI 计划和策略的决策者,以及是否在 Fabric 或其他 AI 工具中启用和使用 Copilot。

  • 结构管理员: 组织中负责监督Microsoft Fabric 及其各种工作负荷的人员。 结构管理员负责监督谁可以在 Fabric 中使用 Copilot 处理每个工作负荷,并监视 Copilot 使用情况如何影响可用的 Fabric 容量。

  • 数据架构师: 负责设计、构建和管理支持组织中的数据和分析的平台和体系结构的人员。 数据架构师考虑在体系结构设计中使用 Copilot。

  • 卓越中心(COE)、IT 和 BI 团队: 负责促进成功采用和使用组织中的数据平台(如 Fabric)的团队。 这些团队和个人可能使用 Copilot 等 AI 工具,但也支持和指导组织中的自助服务用户从中受益。

    Fabric 中的 Copilot 工作原理概述

    Fabric 中的 Copilot 的工作原理与其他 Microsoft Copilot(例如 Microsoft 365 Copilot Microsoft Security Copilot Power Platform 中的 Copilot 和生成式 AI )类似。 但是,Fabric 中的 Copilot 的工作原理有几个方面是特定的。

    流程概述图

    下图概述了 Fabric 中的 Copilot 工作原理。

    下图描绘了 Fabric 中 Copilot 的一般体系结构。 但是,根据特定的工作负荷和体验,可能存在添加或差异。

    该图包含以下部分和过程:

    用户向 Fabric、Power BI Desktop 或 Power BI 移动应用中的 Copilot 提供输入。 输入可以是写入的提示或其他生成提示的交互。 与 Copilot 的所有交互都是特定于用户的。 输入包含的信息包括提示、用户令牌和上下文(如用户的 Copilot 会话聊天历史记录和包含系统元数据的元提示),涵盖了用户所在的位置和他们在 Fabric 或 Power BI Desktop 中执行的操作。 Copilot 分别处理用户输入和大型语言模型 (LLM) 响应的预处理和后处理。 预处理和后处理过程中执行的某些特定步骤取决于个人正在使用哪些 Copilot 体验。 租户设置中的 Fabric 管理员必须启用 Copilot 才能使用它。 在预处理过程中,Copilot 执行接地操作,以检索更多的上下文信息,从而提高最终 LLM 响应的特定性和实用性。 基础数据可能包括元数据(例如湖屋或语义模型中的架构)、工作区中项的数据点或当前 Copilot 会话中的聊天历史记录。 Copilot 仅检索用户有权访问的地面数据。 预处理生成的最终输入为:最终提示和基础数据。 发送哪些数据取决于特定的 Copilot 体验以及用户请求的内容。 Copilot 将输入发送到 Azure OpenAI 服务。 此服务由Microsoft管理,用户不可配置。 Azure OpenAI 不会使用数据训练模型。 如果您的地理区域中 Azure OpenAI 不可用,并且您已启用租户设置 — 发送到 Azure OpenAI 的数据可以在您的容量的地理区域、合规边界或国家云实例之外进行处理 ,那么 Copilot 可能会将您的数据发送到上述地理区域之外。 Azure OpenAI 托管类似于 GPT 系列模型的 LLM。 Azure OpenAI 不使用 OpenAI 的公共服务或 API,OpenAI 无权访问数据。 这些 LLM 将输入令牌化,并使用训练数据中的嵌入来将输入处理成响应。 LLM 在训练数据的范围和规模方面受到限制。

    Azure OpenAI 包含用于确定 LLM 如何处理输入及其返回的响应的配置。 客户无法查看或更改此配置。 对 OpenAI 服务的调用是通过 Azure 完成的,而不是通过公共 Internet 进行的。 LLM 响应从 Azure OpenAI 发送到 Fabric 中的 Copilot。 此响应包含文本,可能是自然语言、代码或元数据。 响应可能包括不准确或低质量的信息。 这也是不确定的,这意味着可能会为同一输入返回不同的响应。 Copilot 对 LLM 响应进行后处理。 后处理包括对负责任 AI 进行筛选,但也涉及处理 LLM 响应并生成最终的 Copilot 输出。 后处理过程中所采取的具体步骤取决于个人使用的 Copilot 体验。 Copilot 向用户返回最终输出。 用户在使用前检查输出,因为输出不包含可靠性、准确性或可信度的指示。

    后续部分介绍上图中描述的 Copilot 过程的五个步骤。 这些步骤详细说明了 Copilot 如何从用户输入到用户输出。

    步骤 1:用户向 Copilot 提供输入

    若要使用 Copilot,用户必须先提交 输入 。 此输入可以是用户自己提交的书面提示,也可以是 Copilot 在 UI 中选择交互式元素时生成的提示。 根据用户使用的特定 Fabric 工作负载、条目及 Copilot 使用体验等,他们有不同的方法向 Copilot 提供输入。

    以下部分介绍了用户如何向 Copilot 提供输入的几个示例。

    通过 Copilot 聊天面板进行输入

    借助 Fabric 中的许多 Copilot 体验,可以扩展 Copilot 聊天面板,以使用自然语言与 Copilot 交互,就像使用聊天机器人或消息传递服务一样。 在 Copilot 聊天面板中,可以编写一个自然语言提示,描述你希望 Copilot 执行的作。 或者,Copilot 聊天面板可能包含带有建议提示的按钮,你可以选择这些提示。 与这些按钮交互会导致 Copilot 生成相应的提示。

    下图显示了使用 Copilot 聊天面板提出有关 Power BI 报表的数据问题的示例。

    如果使用 Microsoft Edge 浏览器,您也可能可以访问 Copilot。 Edge 中的 Copilot 还可以在浏览器中打开 Copilot 聊天面板(或边栏)。 Edge 中的 Copilot 无法与 Fabric 中的任何 Copilot 体验进行交互或使用这些体验。 虽然两个 Copilot 都有类似的用户体验,但 Edge 中的 Copilot 与 Fabric 中的 Copilot 完全分离。

    通过上下文相关的弹出窗口进行输入

    在某些体验中,可以选择 Copilot 图标以触发弹出窗口以与 Copilot 交互。 例如,在 DAX 查询视图或 Power BI Desktop 的 TMDL 脚本视图中使用 Copilot 时。 此弹出窗口包含一个区域,用于输入自然语言提示(类似于 Copilot 聊天面板),以及可为你生成提示的特定于上下文的按钮。 此窗口还可能包含输出信息,例如在 DAX 查询视图中使用 Copilot 时有关 DAX 查询或概念的说明。

    下图显示了在 DAX 查询视图中使用 Copilot 体验来解释他们在 Power BI 中使用 Copilot 生成的查询的示例。

    用户输入的类型

    Copilot 输入可以来自书面提示或 UI 中的按钮:

  • 书面提示: 用户可以在 Copilot 聊天面板或其他 Copilot 体验(如 Power BI Desktop 中的 DAX 查询视图)中编写提示。 书面提示要求用户充分阐述对 Copilot 的指令或问题。 例如,用户在 Power BI 中使用 Copilot 时可以询问有关语义模型或报表的问题。

  • 按钮: 用户可以在 Copilot 聊天面板中选择一个按钮或其他 Copilot 体验来提供输入。 然后,Copilot 根据用户选择生成提示。 这些按钮可以是 Copilot 的初始输入,例如 Copilot 聊天面板中的建议。 但是,当 Copilot 提出建议或请求澄清时,这些按钮也可能出现在会话期间。 Copilot生成的提示依赖于上下文,例如当前会话的聊天记录。 按钮输入的示例是在要求 Copilot 为模型字段建议同义词或模型度量值的说明时。

    此外,还可以在不同的服务或应用程序中提供输入:

  • Fabric: 您可以通过网页浏览器在 Fabric 中使用 Copilot。 这是将 Copilot 用于你在 Fabric 中专门创建、管理和使用的任何项的唯一方式。

  • Power BI Desktop: 可以在 Power BI Desktop 中使用 Copilot 和语义模型和报表。 其中包括针对 Fabric 中 Power BI 工作负载的 Copilot 开发和使用体验。

  • Power BI 移动应用: 如果报表位于受支持的工作区(或连接到该工作区的应用),且已启用 Copilot,则可以在 Power BI 移动应用中使用 Copilot。

    若要将 Copilot 与 Power BI Desktop 配合使用,必须将 Power BI Desktop 配置为使用由 Fabric 容量支持的受支持工作区中的 Copilot 消耗。 然后,可以将 Copilot 与发布到任何工作区(包括 Pro 和 PPU 工作区)的语义模型配合使用。

    虽然在选择带有书面提示的按钮时无法更改 Copilot 生成的提示,但可以使用自然语言提问并提供说明。 改进使用 Copilot 获得的结果的最重要方法之一是编写清晰且描述性强的提示,这些提示能够准确传达你想要做什么。

    改进 Copilot 编写的提示

    用户提交到 Copilot 的提示的清晰度和质量可能会影响用户收到的输出的有用性。 构成良好书面提示的内容取决于你正在使用的特定 Copilot 体验:但是,有一些技术可以应用于所有体验,以改进一般提示。

    下面是几种改进提交到 Copilot 的提示的方法:

  • 使用英语提示: 今天,Copilot 功能在英语中效果最佳。 这是因为这些 LLM 的训练数据的语料库大多是英语的。 其他语言可能无法正常运行。 你可以尝试以其他语言编写提示,但为了获得最佳结果,我们建议你编写并提交英语提示。

  • 具体来说: 避免问题和说明中含糊不清或模糊。 包括足够的详细信息来描述希望 Copilot 执行的任务,以及所需的输出。

  • 提供上下文: 如有必要,请为提示提供相关上下文,包括要执行的作或想要通过输出回答的问题。 例如,良好提示的关键组件可能包括:

  • 目标: 希望 Copilot 实现的输出。
  • 上下文:打算使用该特定输出执行的操作以及原因
  • 期望值: 你期望的输出将如下所示。
  • 源: Copilot 应使用哪些数据或字段。
  • 使用动词: 明确指出希望 Copilot 执行的特定操作,例如“ 创建 一个报表页面”或“ 筛选 到客户关键账户”。

  • 使用正确的和相关术语: 显式引用提示中的相应术语,例如函数、字段或表名、视觉对象类型或技术术语。 避免拼写错误、首字母缩略词或缩写,以及多余的语法或非典型字符,如 Unicode 字符或表情符号。

  • 循环访问和故障排除: 如果未获得预期结果,请尝试调整提示并重新提交,以查看这是否改善了输出。 某些 Copilot 体验还提供“ 重试 ”按钮来重新提交相同的提示并检查是否有其他结果。

    在为用户启用 Copilot 之前,请考虑培训用户编写良好的提示。 确保用户了解可以产生有用结果的清晰提示和不明确的提示之间的差异。

    此外,Copilot 和其他许多 LLM 工具都是 不确定的 。 这意味着,提交使用相同地面数据的相同提示的两个用户可以获得不同的结果。 这种非确定性固有于生成 AI 的基础技术,当你期望或需要确定性结果时,这是一个重要考虑因素,例如对数据问题的回答,例如 “2021 年 8 月的销售情况是什么?”

    Copilot 在预处理中使用的其他输入信息

    除了用户提供的输入外,Copilot 还会检索它在下一步的预处理中使用的其他信息。 此信息包括:

  • 用户的令牌。 Copilot 不是在系统帐户或权限下运行的。 Copilot 发送给和使用的所有信息特定于用户;Copilot 不能允许用户查看或访问他们尚未有权查看的项目或数据。

  • 当前会话的 Copilot 会话聊天历史记录。 对于聊天体验或 Copilot 聊天面板,Copilot 始终提供聊天历史记录,用于预处理作为基础数据上下文的一部分。 Copilot 不记得或使用以前会话中的聊天历史记录。

  • 包含系统元数据的元提示。 元提示(meta-prompt)提供了有关用户所在位置以及他们在 Fabric 或 Power BI Desktop 中执行的任务的额外上下文。 在预处理过程中使用此元提示信息来确定应该使用哪种技能或工具 Copilot 来回答用户的问题。

    用户提交其输入后,Copilot 将继续执行下一步。

    步骤 2:Copilot 预处理输入

    在向 Azure OpenAI 服务提交提示之前,Copilot 会对其进行预处理 。 在 Copilot 收到输入并在 Azure OpenAI 服务中处理该输入之间,预处理包括所有由 Copilot 处理的操作。 预处理是必需的,以确保 Copilot 的输出符合您的指令或问题的具体要求。

    你不会影响 Copilot 完成的预处理。 但是,了解预处理非常重要,以便了解 Copilot 使用的数据及其获取方式。 这与了解 Fabric 中的 Copilot 的成本,以及排查它产生错误或意外结果的原因的情况相关。

    在某些体验中,您还可以对条目进行更改,以便其基础数据更适合 Copilot 使用。 例如,在语义模型中执行语言建模,或向语义模型度量值和列添加同义词和说明。

    下图描绘了 Copilot 在 Fabric 中预处理过程中发生的情况。

    接收用户输入后,Copilot 将执行预处理,其中包括以下步骤:

  • 基础设置:Copilot 执行检索增强生成 (RAG) 以收集 基础数据 。 基础数据包括当前环境(你在其中使用 Fabric 中的 Copilot)的相关信息。 支撑数据可能包括上下文,例如:

  • 与 Copilot 的当前会话中的聊天历史记录。
  • 与 Copilot 一起使用的 Fabric 项的相关元数据(如语义模型或湖屋的架构,或报表视觉对象的元数据)。
  • 特定数据点,例如报表视觉对象中显示的数据点。 视觉对象配置中的 报表元数据 还包含数据点。
  • 为确保输出更加具体和一致,为每个体验提供的补充指令被称为元提示。
  • 提示扩充: 根据方案,Copilot 会根据输入和地面数据重写(或 扩充 )提示。 增强的提示应该比原始输入提示更好,更能感知上下文。

  • 缓存: 在某些情况下,Copilot 将提示和地面数据缓存 48 小时。 缓存提示可以确保当重复提示时,它们在被缓存后返回相同的结果,并且更快地返回这些结果,同时避免在相同上下文中重复提示时不必要地消耗 Fabric 容量。 缓存发生在两个不同的位置:

  • 用户的浏览器缓存。
  • 租户主区域中的第一个后端缓存,该缓存用于审核目的。 Azure OpenAI 服务或 GPU 的位置中不缓存任何数据。 有关 Fabric 中的缓存的详细信息,请参阅 Microsoft Fabric 安全白皮书
  • 将输入发送到 Azure OpenAI: Copilot 将扩充的提示和相关基础数据发送到 Azure OpenAI 服务。

    当 Copilot 执行基础设置时,它仅从用户可以正常访问的数据或项中收集信息。 Copilot 尊重工作区角色、项权限和数据安全性。 Copilot 也无法访问其他用户的数据;与 Copilot 的交互特定于每个用户。

    Copilot 在初始化过程中收集的数据以及 Azure OpenAI 处理流程,取决于您所使用的特定 Copilot 体验。 有关详细信息,请参阅 Copilot 使用哪些数据以及如何处理?

    预处理完成后,Copilot 已将输入发送到 Azure OpenAI 后,Azure OpenAI 服务可以处理该输入,以生成发送回 Copilot 的响应和输出。

    步骤 3:Azure OpenAI 处理提示并生成输出

    所有 Copilot 体验都由 Azure OpenAI 服务提供支持。

    了解 Azure OpenAI 服务

    Copilot 使用 Azure OpenAI(而不是 OpenAI 的公开可用服务)来处理所有数据并返回响应。 如前所述,此响应由 LLM 生成。 LLM 是一种“缩小”AI 的特定方法,侧重于使用深度学习在非结构化数据中查找和重现模式;具体而言,文本。 此上下文中的文本包括自然语言、元数据、代码和任何其他语义上有意义的字符排列。

    Copilot 目前使用 GPT 模型的组合,包括 OpenAI 中的生成预训练转换器 (GPT) 系列模型。

    不能选择或更改 Copilot 使用的模型,包括使用其他基础模型或你自己的模型。 Fabric 中的 Copilot 使用各种模型。 你也无法更改或配置 Azure OpenAI 服务,使其在与 Copilot 在 Fabric 中的互动行为上有所不同。这项服务由 Microsoft 管理。

    Copilot 在 Fabric 中使用的模型目前不使用任何微调。 相反,模型依赖于基于数据和元提示来创建更具体和有用的输出。

    Copilot 在 Fabric 中使用的模型目前不使用任何微调。 相反,模型依赖于基于数据和元提示来创建更具体和有用的输出。

    Microsoft在 Microsoft 的 Azure 环境中托管 OpenAI 模型,该服务不会与 OpenAI 的任何公共服务交互(例如 ChatGPT 或公共 OpenAI API)。 我们不会使用你的数据来训练模型,也不会将其提供给其他客户。 有关详细信息,请参阅 Azure OpenAI 服务

    了解标记化

    必须了解令牌化,因为 Fabric 中 Copilot 的成本(即 Copilot 消耗的 Fabric 容量)取决于 Copilot 输入和输出生成的令牌数

    若要处理 Copilot 的文本输入,Azure OpenAI 必须首先将该输入转换为数字表示形式。 此过程的关键步骤是 标记化 ,即将输入文本分区为不同的较小部分,称为 标记 。 令牌是一组同时出现的字符,它是 LLM 用来生成输出的最小信息单位。 每个令牌都有相应的数字 ID,这将成为 LLM 的词汇,用于编码并使用文本作为数字。 可通过不同的方式标记文本,不同的 LLM 以不同的方式标记输入文本。 Azure OpenAI 使用 Byte-Pair Encoding (BPE), 这是子词标记化的方法。

    若要更好地了解令牌是什么以及提示如何成为令牌,请考虑以下示例。 此示例显示了使用 OpenAI Platform tokenizer (对于 GPT4)估算的输入提示及其令牌。 提示文本中突出显示的标记下方是数字标记 ID 的数组(或列表)。

    在此示例中,每个颜色不同的突出显示都表示单个标记。 如前所述,Azure OpenAI 使用 子字 标记化,因此令牌不是单词,但它也不是字符,也不是固定数量的字符。 例如 ,“report” 是单个标记,但 “.” 也是。

    再次重申,你应该了解令牌的定义,因为 Copilot(或其 Fabric 容量消耗率)的成本由令牌决定 。 因此,了解令牌的定义以及创建输入和输出令牌的方式有助于了解和预测 Copilot 的使用如何导致 Fabric CU 的消耗。 有关 Fabric 中的 Copilot 的成本 的详细信息,请参阅本文后面的相应部分。

    Fabric 中的 Copilot 同时使用输入和输出令牌,如下图所示。

    Copilot 创建两种不同类型的令牌:

  • 输入令牌是对最终提示和任何基础数据进行令牌化的结果
  • 输出令牌是对 LLM 响应进行令牌化的结果
  • 某些 Copilot 体验会导致多个 LLM 调用。 例如,在询问有关模型和报表的数据问题时,第一个 LLM 响应可能是针对语义模型评估的查询。 然后,Copilot 将评估的查询结果再次发送到 Azure OpenAI 并请求摘要,Azure OpenAI 会返回另一个响应。 可以在后处理步骤中处理这些额外的 LLM 调用,并组合 LLM 响应。

    借助 Fabric 中的 Copilot,除了对写入的输入提示的更改外,你只能通过调整相关项目的配置来优化输入和输出标记,例如隐藏语义模型中的列或减少报表中的视觉对象或页数。 在通过 Copilot 发送到 Azure OpenAI 之前,无法截获或修改地面数据。

    请务必了解 Azure OpenAI 中的 LLM 如何处理数据并生成输出,以便更好地了解为何从 Copilot 获取某些输出,以及为何在进一步使用或决策之前应对其进行关键评估。

    本文简要概述了 Copilot 使用的 LLM(如 GPT)的工作原理。 有关技术详细信息和对 GPT 模型如何处理输入以生成响应的更深入理解,或关于其体系结构的信息,请阅读以下研究论文:Ashish Vaswani 等人的“ 注意力就是你所需要的一切 ”(2017 年)和 Tom Brown 等人的“ 语言模型是少样本学习器 ”(2020 年)

    Copilot(以及一般的 LLM)的目的是根据用户提供的输入和其他相关的基础数据,提供适合上下文的有用输出。 LLM 通过在类似的上下文中解释令牌的含义来实现这一点(如训练数据中所示)。 为了获得对令牌的有意义的语义理解,LLM 已针对被视为 包含受版权保护的信息和公共领域信息 的大规模数据集进行了训练。 但是,此训练数据在内容新鲜度、质量和范围方面受到限制,这为 LLM 和使用它们的工具(如 Copilot)造成了限制。 有关这些限制的详细信息,请参阅本文后面的“ 了解 Copilot 和 LLM 的限制 ”。

    令牌的语义含义在称为 嵌入 的数学构造中捕获,它将标记转换为实数的密集向量。 更简单地说,嵌入根据给定令牌周围的其他令牌,为 LLM 提供该给定令牌的语义含义。 这种含义取决于 LLM 训练数据。 可以将标记视为独特的构建模块,而嵌入有助于 LLM 知道在何时使用哪一个模块。

    使用令牌和嵌入,Azure OpenAI 中的 LLM 将处理输入并生成响应。 此处理是一项计算密集型任务,需要大量资源,这是成本的来源。 LLM 一次生成一个令牌的响应,它使用基于输入上下文的计算概率选择每个令牌。 每个生成的令牌也会添加到该现有上下文,然后再生成下一个令牌。 因此,LLM 的最终响应必须始终为文本,Copilot 稍后可能会进行后处理,以便为用户提供更有用的输出。

    了解此生成的响应的几个关键方面非常重要:

  • 这是不确定的;相同的输入可以生成不同的响应。
  • 它可以被用户在上下文中解释为低质量或不正确。
  • 它基于 LLM 训练数据,这些数据是有限的,且范围存在限制。
  • 了解 Copilot 和 LLM 的限制

    了解和承认 Copilot 的限制及其使用的基础技术非常重要。 了解这些限制有助于从 Copilot 中获取价值,同时缓解使用它固有的风险。 若要有效地在 Fabric 中使用 Copilot,应了解最适合此技术的用例和方案。

    在 Fabric 中使用 Copilot 时,请务必记住以下注意事项:

  • Fabric 中的 Copilot 具有非确定性。 除了被缓存的时候,相同的指令及其输出可以生成不同的结果。 当你接受一系列可能的输出(如报表页、代码模式或摘要)时,这不太存在问题,因为你可以容忍,甚至可能期望响应中的多样性。 但是,对于预期只有一个正确答案的方案,你可能希望考虑使用 Copilot 的替代方法。

  • Fabric 中的 Copilot 可以生成低质量或不准确的输出: 与所有 LLM 工具一样,Copilot 可以生成可能不正确、预期或适合方案的输出。 这意味着应避免在 Fabric 中将 Copilot 与敏感数据一起使用,或在高风险区域中使用。 例如,不应使用 Copilot 输出回答有关业务关键流程的数据问题,或者创建可能影响个人个人或集体福祉的数据解决方案。 用户应在使用 Copilot 输出之前对其进行检查和验证。

  • Copilot 对“准确性”或“真实性”没有理解: Copilot 提供的输出不提供可信度、可靠性或类似情绪的指示。 基础技术涉及模式识别,无法评估其输出的质量或有用性。 用户应在在其他工作或决策中使用这些输出之前对输出进行评估。

  • Copilot 无法推理、理解你的意图或了解其输入之外的上下文: 虽然 Copilot 的信息基础过程确保输出更具体,但单靠这些信息无法为 Copilot 提供回答问题所需的所有信息。 例如,如果你使用 Copilot 生成代码,Copilot 仍然不知道你将如何使用这些代码。 这意味着代码可能在一个上下文中工作,但不能在另一个上下文中工作,用户必须修改输出或其提示来解决此问题。

  • Copilot 输出受其使用的 LLM 的定型数据的限制: 在某些 Copilot 体验(例如生成代码的体验)中,你可能希望 Copilot 使用新发布的函数或模式生成代码。 但是,如果 GPT 模型使用的训练数据中没有相关示例,Copilot 将无法高效地完成这项工作,而这些 GPT 模型的训练数据截止到过去的某个时间点。 当你尝试将 Copilot 应用于其训练数据中稀疏的上下文时,也会发生这种情况,例如,在 Power BI Desktop 中将 Copilot 与 TMDL 编辑器一起使用时。 在这些情况下,应特别警惕和批评低质量或不准确的输出。

    为了缓解这些限制和注意事项带来的风险,以及考虑到Copilot、LLM和生成式AI是新兴技术, 不应 在Fabric中使用Copilot进行自治、高风险或业务关键的流程和决策。

    有关详细信息,请参阅 LLM 的安全指南

    Azure OpenAI 服务处理输入并生成响应后,它会将此响应作为输出返回到 Copilot。

    步骤 4:Copilot 对输出执行后处理

    从 Azure OpenAI 收到响应后,Copilot 会执行其他后处理,以确保响应合适。 后处理的目的是筛选出不适当的内容。

    若要执行后处理,Copilot 可能执行以下任务:

  • 负责任的 AI 检查: 确保 Copilot 符合Microsoft负责任的 AI 标准。 有关详细信息,请参阅 我应该知道什么才能负责任地使用 Copilot?

  • 使用 Azure 内容审查进行筛选: 筛选响应以确保 Copilot 仅返回适合方案和体验的响应。 下面是 Copilot 如何使用 Azure 内容审查执行筛选的一些示例:

  • 意外或不当使用: 内容审查可确保 Copilot 不会被意外或不当使用,例如询问超出工作负荷、项目或体验范围的其他主题问题。
  • 不当或冒犯性输出: Copilot 阻止可能包含不可接受的语言、术语或短语的输出。
  • 提示注入的尝试:Copilot 防止提示注入,这种情况下,用户试图在基础数据中(比如语义模型中的对象名称、描述或代码注释中)隐藏破坏性指令
  • 特定场景约束: 根据您使用的 Copilot 体验类型,在收到输出之前,可能会对 LLM 的响应进行额外检查和处理。 下面是 Copilot 如何在特定场景中实施约束的几个示例:

  • 代码分析器: 生成的代码可能通过分析器来筛选出低质量响应和错误,以确保代码运行。 在 Power BI Desktop 的 DAX 查询视图中使用 Copilot 生成 DAX 查询时,将发生这种情况。
  • 视觉对象和报表的验证:Copilot 在输出中返回视觉对象和报表之前,检查它们是否可以呈现 。 Copilot 不会验证结果是否准确或有用,或者生成的查询是否会超时(并产生错误)。
  • 处理和使用响应: 获取响应并添加其他信息,或在其他进程中使用它向用户提供输出。 下面是 Copilot 如何在后期处理期间处理和使用响应的一些示例:

  • 创建 Power BI 报表页: Copilot 将 LLM 响应(报表视觉元数据)与其他报表元数据相结合,从而创建新的报表页。 如果尚未在报表中创建任何视觉对象, Copilot 也可能应用 Copilot 主题 。 主题不是 LLM 响应的一部分,它包括背景图像以及颜色和视觉样式。 如果你已经创建了视觉元素,Copilot 不会应用 Copilot 主题,而是使用你已使用的主题。 更改报表页时,Copilot 还将删除现有页面,并将其替换为应用了调整的新页面。
  • Power BI 数据相关问题: Copilot 将查询与语义模型进行评估。
  • 数据工厂数据流 Gen2 转换步骤建议: Copilot 会修改项目的元数据以插入新步骤,并调整查询。
  • 其他 LLM 调用: 在某些情况下,Copilot 可能会执行其他 LLM 调用来扩充输出。 例如,Copilot 可以将评估的查询的结果作为新输入提交到 LLM,并请求解释。 然后,此自然语言说明与用户在 Copilot 聊天面板中看到的输出中的查询结果打包在一起。

    如果内容在输出中筛选掉,则 Copilot 将重新提交新的修改提示或返回标准响应。

  • 重新提交新提示: 当响应不符合特定于方案的约束时,Copilot 将生成另一个修改后的提示以重试。 在某些情况下,Copilot 可能会建议用户在提交提示以生成新输出之前选择多个新提示。

  • 标准响应: 在这种情况下,标准响应将指示一般错误。 根据方案,Copilot 可能会提供其他信息来指导用户生成另一个输入。

    无法查看来自 Azure OpenAI 的原始筛选响应,也无法更改 Copilot 的标准响应或行为。 这是由Microsoft管理的。

    完成后处理后,Copilot 将向用户返回输出。

    步骤 5:Copilot 向用户返回输出

    用户的输出可以采用自然语言、代码或元数据的形式。 此元数据通常呈现在 Fabric 或 Power BI Desktop 的 UI 中,例如 Copilot 返回 Power BI 视觉对象或建议报表页时。 对于 Power BI 体验中的某些 Copilot,用户可以通过 Power BI 移动应用向 Copilot 提供输入和输出。

    通常,输出可以允许用户干预或完全自治,不允许用户更改结果。

  • 用户干预: 这些输出允许用户在计算或显示结果之前对其进行修改。 允许用户干预的输出的一些示例包括:

  • 生成 DAX 或 SQL 查询等代码,用户可以选择保留或运行这些代码。
  • 在语义模型中生成度量值说明,用户可以选择保留、修改或删除这些说明。
  • 自治: 用户无法更改这些输出。 代码可能会直接针对 Fabric 项进行评估,或者窗格中的文本不可编辑。 自动化输出的一些示例包括:

  • Copilot 聊天面板中关于语义模型或报告的数据问题的答案,该面板自动评估针对模型的查询并显示结果。
  • 代码、项或数据的摘要或说明,这些代码、项或数据会自动选择要汇总和解释的内容,并显示结果。
  • 创建报表页,该页会自动创建报表中的页面和视觉对象。
  • 有时,作为输出的一部分,Copilot 可能还会建议其他后续提示,例如请求澄清或其他建议。 当用户希望改进结果或继续处理特定输出时,这通常很有用,例如解释一个概念来理解生成的代码。

    Copilot 的输出可能包含低质量或不准确的内容

    Copilot 无法评估或指示其输出的有用性或准确性。 因此,每当用户使用 Copilot 时,进行自我评估是非常重要的。

    若要缓解 Copilot 中 LLM 幻觉的风险或挑战,请考虑以下建议:

  • 培训用户使用 Copilot 和利用 LLM 的其他类似工具。 请考虑针对以下主题进行培训:

  • 科皮洛特可以和不能做什么。
  • 何时使用 Copilot 和何时不使用。
  • 如何编写更好的提示。
  • 如何排查意外结果的问题。
  • 如何使用受信任的联机源、技术或资源来验证输出。
  • 先使用 Copilot 测试项,然后允许将这些项与 Copilot 一起使用。 某些项目需要某些准备任务,以确保它们与科皮洛特合作良好。

  • 避免在 自治、高风险或业务关键决策过程中 使用 Copilot。

    此外,请查看 Fabric 的补充预览条款 ,其中包括Microsoft生成式 AI 服务预览版的使用条款。 虽然可以尝试试用这些预览功能,但建议不要在生产解决方案中使用 Copilot 功能预览版。

    隐私、安全和负责任的 AI

    Microsoft致力于确保 AI 系统遵循 AI 原则 负责任的 AI 标准 。 请参阅 Fabric 中 Copilot 的隐私、安全性和负责任的使用 ,以获得详细概述。 有关特定于 Azure OpenAI 的详细信息,另请参阅 Azure OpenAI 服务的数据、隐私和安全性

    有关每个 Fabric 工作负荷的概述,请参阅以下文章:

  • 数据工厂中负责任的使用
  • 在数据科学和数据工程中负责任地使用
  • 在数据仓库中负责任地使用
  • 在 Power BI 中负责任地使用
  • 负责任地使用 Real-Time 智能技术
  • Fabric 中的 Copilot 的成本

    与其他 Microsoft Copilots 不同,Fabric 的 Copilot 不需要额外的用户或容量许可证。 而 Fabric 中的 Copilot 使用可用的 Fabric 容量单位 (CU)。 Copilot 的消耗率取决于在 Fabric 的各类应用中使用时输入中的令牌数和输出中的令牌数。

    如果你有 Fabric 容量,则你使用 即用即付或预留实例 。 在这两种情况下,Copilot 消耗的工作原理是一样的。 在即用即付场景中,在你暂停容量之前,你的容量处于活动状态,将按秒计费。 计费标准与您的 Fabric CUs 的使用情况无关;即使容量已充分利用或完全未使用,您支付的金额也是相同的。 因此,Copilot 不会对 Azure 计费产生直接成本或影响。 而 Copilot 会使用其他 Fabric 工作负载和项也在使用的可用 CU,如果你使用过多,用户将体验到性能降低和 限制 。 也有可能进入一种称为“结转”的 CU 债务状态 。 有关限制和结转的详细信息,请参阅 限制触发器和限制阶段

    以下部分详细介绍了应如何了解和管理 Fabric 中的 Copilot 消耗。

    有关详细信息,请参阅 Fabric 中的 Copilot 消耗

    Fabric 中的 Copilot 消耗由令牌确定

    Copilot 会消耗你可用的 Fabric 计算单元(CUs),也常被称为 容量 计算 资源 。 使用时,消耗由输入和输出令牌确定。 若要审查,可以通过对以下内容进行令牌化来了解输入和输出令牌:

  • 输入令牌: 将您输入的提示和基础数据进行标记化。
  • 输出令牌: 基于输入的 Azure OpenAI 响应的标记化。 输出令牌 比输入令牌贵三倍
  • 可以使用较短的提示来限制输入令牌的数量,但无法控制 Copilot 用于预处理的地面数据,也不能控制 Azure OpenAI 中 LLM 返回的输出令牌数。 例如,可以预期 Power BI 中 Copilot 的 报表创建体验 将具有一个高消耗率,因为它可能使用基础数据(如模型架构),并可能生成详细的输出(报表元数据)。

    输入、输出和基础数据转换为符号

    若要从本文前面的部分重申,请务必了解 标记化过程 ,以便知道哪种类型的输入和输出会产生最高的消耗量。

    优化提示令牌不太可能对 Copilot 成本产生重大影响。 例如,用户提示中的令牌数通常比基础数据和输出中的令牌小得多。 Copilot 会自动处理基础数据和输出,你无法优化或影响这些标识符。 例如,在 Power BI 中使用 Copilot 时,Copilot 可能会在预处理过程中将你的语义模型的架构或报表的元数据用作基础数据。 此元数据可能包含比初始提示更多的令牌。

    Copilot 执行各种系统优化以减少输入和输出令牌。 这些优化取决于你正在使用的 Copilot 体验。 系统优化的示例包括:

  • 架构缩减:Copilot 不发送语义模型或湖屋表的完整架构 。 而它使用嵌入来确定要发送的列。

  • 提示扩充: 在预处理期间重写提示时,Copilot 会尝试生成最终提示,该提示将返回更具体的结果。

    此外,你可以实施各种用户优化来限制 Copilot 可以查看和使用的基础数据。 这些优化取决于您所使用的项目和体验。 用户优化的一些示例包括:

  • 在语义模型中隐藏字段或将表标记为 私有 Copilot 不会考虑任何隐藏或私有对象。

  • 隐藏报表页或视觉对象: 同样,Copilot 也不会考虑隐藏在报表书签后面的任何隐藏报表页或视觉对象。

    用户优化主要用于提高 Copilot 输出的有用性,而不是优化 Copilot 成本。 有关更多信息,请参阅针对各种工作负载和 Copilot 体验的具体文章。

    无法查看令牌化过程,并且只能对输入和输出令牌造成最小影响。 因此,管理 Copilot 消耗和避免 限制 的最有效方法是管理 Copilot 使用情况。

    Copilot 是一种经平滑处理的后台操作

    Fabric 中的 Copilot 的并发使用(当许多个人同时使用同时使用它时)通过一个称为 平滑处理 的过程进行处理。 在 Fabric 中,归类为 后台操作 的任何操作,都将在 24 小时内进行 CU 消耗量的划分,从操作开始的时间算起,直至 24 小时后。 这与未经平滑处理的 交互式操作 (来自使用 Power BI 报告的个人的语义模型查询)形成了对比

    为了简化理解,后台和交互式操作将 Fabric 中发生的不同事务进行分类,以便进行计费。 这些术语不一定与某个项目或功能是 用户可交互的 ,还是 在后台发生的 有关,正如其名称可能暗示的那样。

    例如,如果现在使用 48 个 CU 来进行背景操作,那么现在会消耗 2 个 CU。从现在起到 24 小时内每小时都会消耗 2 个 CU。 如果将 48 个 CU 用于交互式操作,会导致当前使用 48 个 CU 且对将来的消耗没有影响。 但是,平滑处理也意味着,如果你对 Copilot 或其他 Fabric 工作负载的使用量足够高,你可能会在该窗口中累积 CU 消耗量

    若要更好地了解平滑处理及其对 Fabric CU 消耗的影响,请考虑下图:

    该关系图描述了一个交互式操作(未经平滑处理)的高并发使用场景的示例。 交互式操作超出限制(可用的 Fabric 容量)并进入结转。 这是没有平滑处理的场景。 相比之下,像 Copilot 这样的后台操作将消耗分散在 24 小时内。 该 24 小时窗口内的后续操作将“堆叠”并构成该时间段内的总累计消耗量。 在本例的经平滑处理的场景中,像 Copilot 这样的后台操作会增加未来的 CU 消耗,但不会触发限制或超出任何限制。

    在 Fabric 中监视 Copilot 消耗

    Fabric 管理员可以使用 Microsoft Fabric 容量指标应用 来监视 Fabric 容量中发生的 Copilot 消耗量。 在应用中,Fabric 管理员可以按活动和用户查看细分,帮助他们确定在高消耗期间可能需要关注的个人和区域。

    建议不要对 CU 考虑令牌等抽象计算,而是专注于已利用的 Fabric 容量的百分比 。 此指标是最容易理解和操作的,因为一旦达到 100% 使用率,你就可能会遇到 限制

    可以在 应用的时间点页面上 找到此信息。

    暂停容量时,经平滑处理的使用量会压缩到容量暂停的时间点。 这种对平滑消费数据的压缩会导致观察到的消费高峰,这并不能准确反映您的实际使用情况。 此峰值通常会产生通知和警告,提示你已耗尽可用的 Fabric 容量,但这些都是误报。

    缓解高利用率和限制

    Copilot 使用 Fabric CU,即使进行了平滑处理,你也可能会遇到高利用率的情况,这会导致高消耗,并限制其他 Fabric 工作负载。 以下部分讨论了一些可以用来在这种情况下缓解对您的 Fabric 容量影响的策略。

    用户培训和允许列表

    确保有效采用任何工具的一个重要方法是为用户提供足够的指导和培训,并在人们完成此类培训时逐步推出访问权限。 有效的培训是一种预防性措施,通过让用户了解如何有效使用 Copilot 以及不要执行的操作,预先避免高利用率和限制。

    通过创建有权从 Fabric 租户设置访问该功能的用户 允许列表 ,可以最好地控制谁可以在 Fabric 中使用 Copilot。 这意味着您仅为属于特定安全组的用户在 Fabric 中启用 Copilot。 如有必要,可以为每个 Fabric 工作负载创建单独的安全组,在这些组中,你可以启用 Copilot 以更精细地控制谁可以使用哪些 Copilot 体验。 有关创建安全组的详细信息,请参阅 创建、编辑或删除安全组

    一旦将特定安全组添加到 Copilot 租户设置后,你可以为用户组织入职培训。 Copilot 培训课程应涵盖基本主题,如以下内容。

    请考虑为 LLM 和生成 AI 的基本概念创建概述培训,然后为用户创建特定于工作负荷的培训。 并非每个人都需要了解每个 Fabric 工作负载(如果它不一定与每个人相关)。

  • LLM: 介绍 LLM 的基础知识及其工作原理。 不应了解技术详细信息,但应该解释提示、基础和令牌等概念。 你还可以解释 LLM 如何从输入中获取含义,并根据训练数据产生与上下文相适应的响应。 向用户传授有助于他们了解技术如何工作,以及技术可以和不能执行的功能。

  • Copilot 和其他生成式 AI 工具用于: 你应该解释,科皮洛特不是一个自治代理,不是为了取代人类的任务,而是为了增加个人,以更好地更快地执行他们目前的任务。 还应该强调哪些情况下 Copilot 不适合,举例说明,并解释个人在这些情况下可能使用哪些其他工具和信息来解决问题。

  • 如何对 Copilot 输出进行关键评估: 请务必指导用户如何验证 Copilot 输出。 此类验证取决于用户正在使用的 Copilot 体验,但一般情况下,应强调以下几点:

  • 使用前检查每个输出。
  • 请评估并自问结果是否正确。
  • 将注释添加到生成的代码,以了解其工作原理。 或者,根据需要向 Copilot 索取该代码的解释说明,并与可靠来源进行核对。
  • 如果输出产生意外的结果,请使用不同的提示进行故障排除,或者通过执行手动验证进行故障排除。
  • LLM 和生成 AI 的风险和限制: 应介绍 Copilot、LLM 和生成 AI 的关键风险和限制,如本文中所述的风险和限制:

  • 它们是非确定性的。
  • 它们不提供准确性、可靠性或真实性的指示或保证。
  • 它们可以幻觉并产生不准确的或低质量的输出。
  • 它们无法生成超出训练数据范围的信息。
  • 查找 Fabric 中的 Copilot 的位置:提供对某人可能使用的不同工作负载、项和 Copilot 体验的简要概述

    扩展您的容量

    在 Fabric 中由于 Copilot 消耗或其他操作遇到限制时,可以 将容量暂时扩展(或重设大小) 为更高的 SKU。 这是一项反应性措施,可以暂时提高您的成本,以缓解由于限流或结转而产生的短期问题。 当你遇到主要由后台操作引起的限制时,这尤其有用,因为消耗(以及由此产生的影响)可能会分散在 24 小时的窗口中。

    分割容量策略

    在预期 Fabric 中的 Copilot 使用率较高的场景中(例如在大型组织中),可以考虑将 Copilot 消耗与其他 Fabric 工作负载隔离开来。 在此分割容量场景中,通过仅在单独的 F64 或更高的 SKU 上启用 Copilot 来防止 Copilot 消耗对其他 Fabric 工作负载产生负面影响,这仅用于专用的 Copilot 体验。 这种拆分容量策略会产生更高的成本,但它可能会使管理和管理 Copilot 使用情况更加容易。

    可以将一些 Copilot 体验用于不支持或启用 Copilot 的其他容量中的项。 例如,在 Power BI Desktop 中,可以链接到一个具有 F64 SKU Fabric 容量的工作区,但随后连接到 F2 或 PPU 工作区中的语义模型。 然后,可以在 Power BI Desktop 中使用 Copilot 体验,且 Copilot 消耗只会影响 F64 SKU。

    以下关系图描述了一个分割容量策略的示例,该策略通过 Power BI Desktop 中的体验(如 Copilot 中的体验)来隔离 Copilot 消耗。

    您还可以通过将 Copilot 消耗分配到单独的容量 ,来实现容量拆分解决方案。 将 Copilot 消耗分配到单独的容量可确保 Copilot 的高利用率不会影响其他 Fabric 工作负载和依赖于这些工作负荷的业务关键流程。 当然,使用任何拆分容量策略要求你已有两个或更多个 F64 或更高版本的 SKU。 因此,对于预算有限的小型组织或组织而言,此策略可能无法管理,这些组织在数据平台上花费的预算有限。

    无论选择如何管理 Copilot,最重要的是监视 Fabric 容量中的 Copilot 消耗。

  • Fabric 中的 Copilot 概述
  • 适用于 Microsoft Fabric 和 Power BI 的 Copilot:常见问题解答
  • Copilot 租户设置
  •