适用于 Microsoft 365 的 Copilot如何决定使用哪个插件

适用于 Microsoft 365 的 Microsoft Copilot是你的个人工作助手。 它有助于完成各种常规 任务,例如写作、总结、研究等。 Copilot 具有与这些不同类型的任务相对应的不同 技能 。 例如,Copilot 可以汇总会议中的操作项、建议对文件的编辑,或跟踪组织中给定主题的资源和专家。 每个技能都有自己的参数和输出,这些参数和输出是针对特定任务定制的。

与任何副驾驶一样,适用于 Microsoft 365 的 Copilot在某个时间点使用数据进行训练。 若要检索和处理新的实时信息,尤其是特定于组织和工作流的数据,Copilot 需要 插件插件为最终用户扩展了适用于 Microsoft 365 的 Copilot的技能和实用工具,使其能够从数千个用户中选择正确的技能。

但是,当你寻求帮助时,Copilot 如何知道要使用哪种技能呢? 它如何解释你的请求并将其与可用的最佳技能相匹配? 这是适用于 Microsoft 365 的 Copilot业务流程协调程序的工作。

本文将介绍 Copilot 技能选择过程背后的逻辑,以及如何确保 Copilot 在每一个可能使用户受益的机会中使用你的插件。

重要

  • 用于适用于 Microsoft 365 的 Microsoft Copilot的插件以公共预览版提供,仅适用于 Microsoft Teams 中的 Microsoft 365 Chat。
  • 默认情况下,在所有 Microsoft 365 Copilot 许可租户中启用此功能。 管理员可以基于用户和组禁用此功能,并控制各个插件的批准使用方式以及启用哪些插件。 有关详细信息,请参阅: 在集成应用中管理 Copilot 的插件

Copilot 业务流程协调程序

在最终用户的自然语言输入到 Copilot 的自然语言输出之间,Microsoft Copilot 业务流程协调程序在后台工作,从正确的插件选择和执行正确的技能 () , (最终用户给定任务的) 。

业务流程层表示基础 LLM 之间的接口,以及可为客户工作方式扩展、扩充和自定义 Copilot 的多种方式。

Microsoft Copilot 技术堆栈的示意图。从下到上:Microsoft 云、AI 基础结构、你的数据、基础模型、AI 业务流程、Microsoft Copilots |副驾驶、Teams AI 库、图形连接器、插件扩展性

下图演示了适用于 Microsoft 365 的 Copilot业务流程协调程序如何在正确的时间选择正确的插件,即使有数千个选项可供选择也是如此。

此图像后面的文本中顺序步骤的直观插图。

  1. 自然语言输入

    用户通过 Microsoft 365 聊天键入 Copilot 提示。

  2. 搜索相关工具

    Copilot 业务流程协调程序在其已安装和已启用插件的工具目录中搜索相关技能的初始列表。

  3. 原因

    Copilot 利用其 LLM 和 Microsoft Graph 中的组织数据的组合知识来分析请求并确定用户的上下文。 然后,它将用户的提示分解为意向或目标。 然后,每个目标将分解为任务。

  4. 将用户的意向映射到槽

    业务流程协调程序将用户的任务映射到插件技能和/或内置的 Copilot 技能函数,将隐式约束从用户的提示映射到槽 (参数值,) 执行每个已标识的技能所需的参数值。

  5. 执行工具

    将调用 Copilot 及其插件来执行其所选技能。

  6. 生成摘要

    Copilot 合并、筛选或排名来自不同助手的响应,并为用户生成单个响应。

  7. 自然语言输出

    最后,Copilot 向用户提供响应并更新聊天状态。 Copilot 已准备好迎接下一个提示。

如果你想象用户向 Copilot 发出提示,就像建筑项目一样,那么 Copilot 业务流程协调程序就是 总承包商,负责协调和组织专业 分包商(即插件)的工作。 与总承包商类似,业务流程协调程序负责确保根据用户输入 (隐含的规范“完成”项目,换句话说,即 Copilot 的响应满足用户在请求) 中的意图。

但是,每个插件的责任是向 Copilot 提供对其技能的准确描述,并有效地执行其技能。 这将为你的用户灌输信任感,并确保 Copilot 每次需要其技能时都会调用你的插件。 下一部分提供了有关如何优化插件以供业务流程协调程序查找和使用的详细信息。

插件搜索优化

适用于 Microsoft 365 的 Copilot可以从数千个中唯一选择正确的技能。 但是,如何确保 Copilot 会选择 你的插件 来提供正确的技能呢?

答案在于如何描述插件、其技能和技能执行参数。 在插件清单中指定简洁准确的说明对于确保 Copilot 知道何时以及如何调用插件至关重要。

以下部分提供有关插件、技能和参数说明的指导和示例。

插件说明

插件说明应包括用户操作、输入类型和输出类型,插件应针对这些操作。

应用清单中的长篇和短应用说明必须明确定义应用的范围。 若要在 Copilot 中将应用呈现为插件,必须修改应用说明以满足以下插件要求:

  • 应用长说明必须清楚地说明用户如何在 Copilot 中使用消息扩展插件,以及他们可以期望的功能。 例如,在 Copilot 中使用 Contoso 云搜索和汇总任务。
  • 简短说明必须以自然语言简要描述应用的功能,并且可以包含应用的名称。

下表列出了各种插件方案的简短说明示例:

说明:创建、搜索、查看票证、bug 和项目。

应用说明示例:

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
  "version": "1.0.0",
  "manifestVersion": "1.16",
  "id": "2bxxxxc5-5xxx-4xxx-aXXX-94xxxx8919e5",
  "name": {
    "short": "Tasks",
    "full": "Contoso Tasks"
  },
  "description": {
    "short": "Create, search, view tickets, bugs, and projects",
    "full": "Contoso Tasks makes it easy to stay organized. Create, assign, and track tasks individually or collaboratively with your team, and see everything come together in one place."
  },

技能说明

技能说明用于将用户的提示解释为意向,然后将其映射到 Copilot 可用的最相关的技能。 包括技能处理的操作,以及输出的预期输入和说明格式。

目前 Teams 消息扩展插件支持仅限于搜索命令,即将推出对操作命令的支持。

搜索技能说明应:

  • 重点介绍命令以自然语言 (详细列表) 搜索的内容和方式。
  • 包括谓词和同义词(如果适用)。
  • 关注本机应用的搜索功能中可能使用的关键字。

下表列出了各种插件方案的搜索命令示例:

说明:搜索明天到期的与 Northwind 相关的高优先级任务。

命令说明示例:

"commands": [
        {
          "id": "Search",
          "type": "query",
          "title": "Tasks",
          "description": "Search for high priority tasks related to Northwind that are due tomorrow.",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose",
            "message"
          ],

参数说明

良好的参数说明说明了参数是什么,而不是参数的作用以及预期的格式。

在 Microsoft Teams 聊天和 Outlook 邮件撰写中直接使用时,可以使用邮件扩展一次查询一个参数。 当用作插件时,消息扩展搜索命令最多支持五个参数, (一个参数必须在消息扩展搜索栏中可见) 。 参数必须具有良好的说明,该说明应描述预期的输入,包括格式或类型。

下面是针对各种插件方案的基本搜索请求和高级搜索请求的一些示例:

基本搜索:搜索与 Northwind 相关的任务。
高级搜索:搜索明天到期的与 Northwind 相关的高优先级任务。

参数说明示例:

"parameters": [
    {
        "name": "Name",
        "title": "Project or Task Name",
        "description": "Project name or task name as keyword",
        "inputType": "text"
    },
    {
        "name": "Time",
        "title": "Time",
        "description": "Date or number of days for which to find tasks. Output: Number",
        "inputType": "text"
    },
    {
        "name": "Priority",
        "title": "Priority",
        "description": "Priority of tasks. Acceptable values: high, medium, low, NA ",
        "inputType": "text"
    }]

调试插件选择

可以在测试插件时使用 开发人员模式 来验证业务流程协调程序是否以及如何选择插件以响应给定提示。 在 M365 聊天中,可以通过键入 -developer on (或 off 禁用) 来启用开发人员模式。

“M365 聊天”会话的屏幕截图,其中用户键入“-developer on”以成功启用开发人员模式

启用开发人员模式时,每当业务流程协调程序专门搜索企业知识 (数据) 和/或技能 (插件) 响应提示时,将返回包含调试信息卡。 调试信息卡包含以下字段:

  • 已启用的插件:用户从聊天输入框下方的“ 插件 ”控件 (启用的插件列表)
  • 匹配的函数:运行时应用索引查找中匹配的插件和函数的列表
  • 要执行的所选函数:根据业务流程协调程序推理选择用于调用的插件函数的列表
  • 函数执行详细信息:请求和响应函数执行状态

“M365 聊天”会话的屏幕截图,其中 Copilot 返回了卡,其中调试信息显示已启用插件的成功匹配、选择和函数执行

排查执行失败问题

下面是调试插件执行时可能会遇到的一些常见故障以及可能的原因。

无调试卡

如果业务流程协调程序不需要 Microsoft 365 数据或技能来响应提示,则不会返回调试信息卡。

在容量限制的情况下,调试卡也不会返回,在这种情况下,通常会看到错误消息,以供稍后重试。

空调试卡

如果未启用任何插件,则调试信息卡将返回空。

具有空匹配函数的卡片

如果启用了相关插件,但给定提示未返回匹配的函数,则可能表示提示未显式提及插件名称。

具有空 的“选定”函数的卡片执行

如果没有启用的插件与提示的搜索意向匹配,则调试信息卡将报告“未选择执行任何函数”。 这可能是因为清单中的命令说明在语义上与给定提示的搜索意向无关。

如果 Copilot 以前成功匹配并执行了插件函数,这可能是限制的指示。

包含空或失败函数执行详细信息的卡片

对于非消息扩展插件,如果函数执行详细信息或请求状态为空或失败,则表示 Copilot 尝试将参数分配给插件的所选函数期间失败。 如果失败是一致的,很可能是由于插件或参数说明不明确、主机 URL 无效或 Open API 定义存在其他问题。

对于消息扩展插件,最佳做法是针对 9 秒以下的响应进行优化。 有关详细信息,请查看消息扩展插件 的技术要求

函数执行响应状态为 的卡片 0

如果函数执行详细信息报告的响应状态0为 ,但请求状态Success,则可能指示超时。 目前,Copilot 执行插件 API 的超时限制设置为 10 秒。

后续步骤

了解在 适用于 Microsoft 365 的 Copilot 中优化插件可发现性和实用性的最佳做法。