适用于: 开发人员版
借助 SharePoint Embedded 智能体体验,应用能够回答有关存储在 SharePoint Embedded 容器中的文件的问题。 两个独立的产品在容器内容中提供了这些体验:
- 具有 SharePoint 知识源的 Microsoft Foundry 代理服务 - 适用于在 Foundry 上构建的代理。 Foundry 会作为代理的一部分为你运行检索。 有关设置步骤,请参阅将 SharePoint Embedded 设置为 Foundry 知识源。
- 智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®检索 API - 适用于运行自己的基础步骤的自定义代理和应用。 可从任何应用(包括不使用 SharePoint 知识源的 Foundry 代理)调用它。
选择希望 Foundry 管理检索和代理编排时的知识源。 若要自行控制基础步骤、提示和模型,请选择检索 API。
警告
早期的 SharePoint Embedded 代理 SDK (React ChatEmbedded 控制) 已于 2026 年 3 月弃用,并替换为 Microsoft Foundry 代理服务 (为 SharePoint Embedded 配置 SharePoint 知识源预览版) 。 对新工作使用本文中的两个选项之一。
使用检索 API
智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®检索 API 返回相关文本提取,应用将其作为基础数据传递给其自己的模型。 设置为 dataSourcesharePointEmbedded 可从 SharePoint Embedded 内容检索。
注意
对数据源的 sharePointEmbedded 检索 API 支持处于预览阶段。
检索 API 先决条件
- 至少一个容器加上容器类型 ID 的 SharePoint Embedded 应用。
- 为容器类型配置的即用即付计费。
- 租户中至少有一个用户拥有智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 许可证,因此语义索引将初始化。 有关详细信息,请参阅 智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶®的语义索引。
sharePointEmbedded数据源采用即用即付计费,因此查询检索 API 的每个用户都不需要单独的智能 智能 Microsoft 365 Copilot 副驾驶® 副驾驶® 许可证。
从容器类型检索内容
使用委派令牌调用 POST /copilot/retrieval 。 设置 dataSource 并 sharePointEmbedded 传递容器类型 ID dataSourceConfiguration。 请求需要委派的 FileStorageContainer.Selected 权限,服务将结果剪裁为登录用户可以访问的内容。
POST https://graph.microsoft.com/v1.0/copilot/retrieval
Content-Type: application/json
{
"queryString": "What are the terms of the Contoso agreement?",
"dataSource": "sharePointEmbedded",
"dataSourceConfiguration": {
"sharePointEmbedded": {
"containerTypeId": "{containerTypeId}"
}
}
}
替换 {containerTypeId} 为容器类型 ID。
响应将返回一个 retrievalHits 集合。 每次命中都会标识 webUrl 一个源文件,并携带一个或多个 extracts,按 relevanceScore排序。
{
"retrievalHits": [
{
"webUrl": "https://contoso.com/spe/file",
"extracts": [
{
"text": "The agreement renews annually unless either party gives 30 days' notice.",
"relevanceScore": 0.8421
}
]
}
]
}
的 webUrl 形状取决于容器类型的 urlTemplate 设置,因此请将其视为不透明链接,而不是解析它。 要解析文件详细信息,请调用 Get a driveItem。 有关详细信息 urlTemplate,请参阅 创建和配置容器类型。
要在每次命中时返回额外的字段(例如 title OR), author 请向请求添加一个 resourceMetadata 集合。 仅请求应用使用的字段,因为每个字段都会添加到响应有效负载。
将提取作为基础数据传递到您自己的模型或答案生成步骤。 此代码片段将发送查询,并从每个命中读取最上方的摘录:
const response = await fetch("https://graph.microsoft.com/v1.0/copilot/retrieval", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`
},
body: JSON.stringify({
queryString: query,
dataSource: "sharePointEmbedded",
dataSourceConfiguration: {
sharePointEmbedded: { containerTypeId: containerTypeId }
}
})
});
const data = await response.json();
const grounding = (data.retrievalHits ?? []).map(hit => ({
url: hit.webUrl,
text: hit.extracts?.[0]?.text?.trim(),
score: hit.extracts?.[0]?.relevanceScore
}));
检索涵盖登录用户可以访问的容器类型的每个容器。 如果请求未返回任何命中,请确认语义索引已初始化,索引已完成,且用户有权访问内容。
检索 API 计费
检索使用 Copilot Studio 消息计量上的数据源帐单的 sharePointEmbedded API 请求。 费用遵循为容器类型配置的计费模型。 Standard 计费将对拥有租户的 Azure 订阅收费,而传递计费则对消耗租户的订阅收费。
有关计量详细信息,请参阅 计费计量。 要比较模型,请参阅 选择计费模型。
测试用户体验
使用可以访问容器内容的用户登录。 将支持的文件上传到容器,等待索引,打开聊天,然后询问文件内容可以回答的问题。 如果答案省略了预期的文件,请检查:
- 可发现性。
- 支持的文件格式。
- 应用访问权限。
- 用户访问权限。
- 范围选择。
- 索引延迟。