智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 插件

插件使 智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 中的声明性代理能够与具有 OpenAPI 说明MCP) 服务器或 REST API (模型上下文协议进行交互。 通过使用插件,用户可以要求声明性代理不仅可以查询 MCP 服务器或 REST API 以获取信息,还可以创建、更新和删除数据和对象。 MCP 服务器或 REST API 可执行的任何操作都可通过自然语言提示词访问。

重要

插件仅支持作为 声明性代理中的操作。 它们未在智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 中启用。

插件提供插件清单,Copilot 使用该清单来了解插件的 MCP 服务器或 API 的功能。 然后,Copilot 可以决定何时已安装和启用的插件适合回答任何给定提示。 若要了解有关插件所需的清单文件的详细信息,请参阅 智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®的插件清单架构

Copilot 如何发现 MCP 服务器工具

对于基于 MCP 服务器的插件,默认情况下,Copilot 会在运行时直接从 MCP 服务器动态解析服务器的工具。 动态工具发现意味着用户无需等待代理重新打包和重新发布即可获得 MCP 服务器公开的最新工具。 生成代理时,开发人员可以选择在插件清单中固定一组固定工具。 REST API 插件始终使用插件清单中定义的工具。 有关详细信息,请参阅从 MCP 服务器构建插件以进行智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®和在 智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 中为 MCP 插件动态工具发现

插件示例

请考虑预算 MCP 服务器,它允许查询和创建预算、收取费用或向现有预算添加资金。 提示“Contoso 出差预算中还剩多少”可以触发预算插件,从而调用该 get-budgets 工具。

POST /mcp
Content-Type: application/json

{
  "method": "tools/call",
  "params": {
    "name": "get-budgets",
    "arguments": {
      "budgetName": "contoso travel"
    }
  }
}

Copilot 使用工具结果的响应来生成其响应:“Contoso 出差预算当前有 5,000 美元的可用资金。 如果您需要将资金分配给特定类别或跟踪费用,我也可以为您提供帮助。 请告诉我我能提供什么帮助!

提示“为 Megan 的机票向 Contoso 旅行预算收取 500 美元”可以转换为以下 MCP 工具调用。

POST /mcp
Content-Type: application/json

{
  "method": "tools/call",
  "params": {
    "name": "charge-budget",
    "arguments": {
      "budgetName": "contoso travel",
      "amount": 500,
      "description": "Megan's airline ticket"
    }
  }
}

Copilot 使用返回的信息回复用户:“已成功处理 Megan 机票的 500 美元费用。 Contoso 差旅预算现在的可用资金中剩余 4,500 美元。 如果您需要进行更多交易或需要进一步的预算帮助,请告诉我!

插件的工作原理

显示插件数据流的序列图

  1. 用户询问代理:“Fourth Coffee 大堂装修预算还剩多少?”

  2. 对于使用 动态工具发现的 MCP 插件,代理在运行时从插件的 MCP 服务器获取当前工具定义,并在使用任何新的或更改的工具之前对其进行验证。 对于具有固定工具集的插件或 REST API 插件,代理将改用插件清单中定义的工具。

  3. 代理从具有 MCP 服务器工具或 API GetBudget 的可用插件中标识预算相关的插件,以获取预算详细信息。 它将用户问题的部分映射到函数的参数: budgetName=""

  4. 代理 要求用户 允许将其发送 Fourth Coffee lobby renovation 到插件。

  5. 用户选择允许与插件共享数据一次,或者选择始终允许为此函数共享数据。

  6. 如果插件的 MCP 服务器或 API 需要 身份验证,则插件会从令牌存储请求令牌或 API 密钥。

  7. 令牌存储返回令牌或密钥。 如果需要,令牌存储会使代理提示用户登录。

  8. 代理将请求发送到插件的 MCP 服务器或 API(托管在 Microsoft 365 外部)。

  9. MCP 服务器或 API 返回响应。

    {
      "name": "Fourth Coffee lobby renovation",
      "availableFunds": 5000.00
    }
    
  10. 代理基于 MCP 服务器或 API 响应生成响应。

  11. 代理发送的回复是:“Fourth Coffee 大堂装修预算中剩余的可用资金为 5,000 美元。

确认操作

Copilot 在首次向插件发送任何数据之前会询问用户。

插件确认对话框的屏幕截图。

用户确认连接后,仅检索数据的 MCP 服务器工具和 API 不需要确认,而修改数据的工具和 API 则需要确认。 插件开发人员可以替代这些默认值。 有关详细信息,请参阅适用于智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®的 MCP 和 API 插件的确认提示

自定义响应演示文稿

Copilot 使用 MCP 服务器中的数据或 API 响应生成对话响应。 插件可以自定义此数据的显示方式,机制取决于插件类型。

  • MCP 插件 可以使用 MCP 应用(MCP 服务器 在运行时随工具结果一起返回的 UI 小组件)来提供丰富的交互式响应。 由于小组件是随工具响应一起交付的,而不是在清单中定义的,因此无论插件使用一组固定工具还是 动态工具发现,MCP 应用都可以正常工作。

  • API 插件 可以在插件清单中提供 自适应卡片 模板,以结构化方式显示数据。 由于模板是根据清单中声明的操作定义的,因此此方法适用于使用一组固定工具的 API 插件和 MCP 插件。

对于任何插件类型的源链接引文,Copilot 使用响应语义,并可以根据工具或 API 响应自动推断出引文元数据。 自动推理对于使用动态工具发现的 MCP 插件特别有用,在这些插件中,工具在运行时解析,并且无需配置清单工具定义。 有关详细信息,请参阅 显示具有响应语义的引文

API 插件的自适应卡响应的屏幕截图

操作响应中的 URL 处理

智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 聊天体验可能会将作为操作响应的一部分返回的 URL(无论是从 MCP 插件、API 插件、连接器还是流)呈现为可单击链接。 Copilot 运行时控制此行为,并且不会针对插件声明 (的任何域(例如 servers API 插件的 OpenAPI 说明) 部分)对其进行评估。

平台安全性、信任和策略规则控制操作响应的 URL 呈现行为,并且可能会随着时间的推移而更改。 对于生产关键场景,不要在操作响应中依赖可点击的 URL。

帮助 Copilot 业务流程协调程序选择插件

智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 可以从其技能库中的众多技能中独特地选择正确的技能。 但是,如何确保 Copilot 选择 插件 来提供正确的技能呢?

答案在于你如何描述你的插件、它的技能以及技能启动的参数。 在插件清单中指定简洁准确的说明,以最好地确保 Copilot 业务流程协调程序知道何时以及如何调用插件。

向业务流程协调程序描述插件的方式取决于生成的插件类型,如下表中所述。

插件类型 描述者 了解详细信息
API 插件 OpenAPI 说明 如何使 OpenAPI 文档有效地扩展 Copilot
Copilot Studio 操作 Copilot Studio 对话地图中的名称和说明 使用生成式 AI 协调 Copilot 主题和操作
消息扩展插件 应用部件清单 消息扩展插件指南

构建声明性代理插件

开发人员可以使用两种工具生成 API 插件包:

  • Visual StudioVisual Studio Code 中的 Microsoft 365 Agents Toolkit 基于现有 MCP 服务器或 OpenAPI 说明创建插件包。 Agents Toolkit 也有带有示例 API 和相应插件包的初学者项目。
  • Kiota 是一个命令行工具和一个 Visual Studio Code 扩展,可基于现有的 OpenAPI 描述生成插件包。

提示

Work IQ Dev Tools (预览) - 还可以从命令行附加和检查操作。 wiqd agent add action 将操作添加到声明性代理,并 wiqd agent validate --mode deep 确认操作的 OpenAPI 说明可访问且格式正确,并且引用的插件清单声明正确的身份验证方案。 Alpha wiqd plugin 命令树也存在,但其界面可能会更改。 有关详细信息,请参阅 Work IQ 开发工具文档

限制

当声明性代理包含声明 式代理清单中定义的最多五个插件时,代理始终将插件注入提示中。 当代理包含 5 个以上插件时,它使用语义匹配。 语义匹配基于插件的描述,而不是插件本身中的任何单个功能或工具。

插件可以包含无限数量的函数或 MCP 工具。 返回所有匹配的插件的功能或工具,即使只有一个匹配。 对于使用 动态工具发现的 MCP 插件,在运行时从 MCP 服务器解析的工具将计入此总计。 由于令牌窗口限制,如果包含超过 10 个函数或工具,响应的质量可能会降低。

插件输入和输出的令牌窗口会截断较大的内容。 功能限制可能会随着模型的改进而变化,并取决于任何系统开销。 针对较小的令牌长度进行优化,或根据需要选择允许流式传输大型内容的可扩展性选项。