適用対象: Developer
SharePoint Embedded エージェント エクスペリエンスを使用すると、アプリは SharePoint Embedded コンテナーに保存されているファイルの質問に回答できます。 2 つの別個の製品が、コンテナー コンテンツにこれらのエクスペリエンスを基盤としています。
- SharePoint ナレッジ ソースを使用した Microsoft Foundry エージェント サービス — Foundry 上に構築するエージェント向け。 Foundry は、エージェントの一部として取得を実行します。 セットアップ手順については、「 SharePoint Embedded を Foundry ナレッジ ソースとして設定する」を参照してください。
- Microsoft 365 Copilot Retrieval API — 独自のグラウンディング ステップを実行するカスタム エージェントとアプリ向け。 SharePoint ナレッジ ソースを使用しない Foundry エージェントを含む、任意のアプリから呼び出します。
Foundry で取得とエージェントのオーケストレーションを管理する場合は、ナレッジ ソースを選択します。 グラウンディング手順、プロンプト、モデルを自分で制御する場合は、取得 API を選択します。
注意
以前の SharePoint 埋め込みエージェント SDK (React ChatEmbedded コントロール) は 2026 年 3 月に非推奨となり、SharePoint 埋め込み用に構成された SharePoint ナレッジ ソース (プレビュー) を備えた Microsoft Foundry エージェント サービスに置き換えられました。 新しい作業には、この記事の 2 つのオプションのいずれかを使用します。
Retrieval API を使用する
Microsoft 365 Copilot Retrieval API は、関連するテキスト抽出を返し、アプリが基盤データとして独自のモデルに渡します。 SharePoint Embedded からコンテンツを取得するには、[ dataSource ] を [ sharePointEmbedded ] に設定します。
注:
sharePointEmbedded データ ソースに対する取得 API のサポートはプレビュー段階です。
取得 API の前提条件
- コンテナーの種類 ID が少なくとも 1 つある SharePoint Embedded アプリ。
- コンテナーの種類に対して構成された従量課金制。
- テナント内に少なくとも 1 人のユーザーが 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を介してソース ファイルを識別し、relevanceScore順に 1 つ以上のextractsを運びます。
{
"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 や 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
}));
取得は、サインインしたユーザーがアクセスできるコンテナー タイプのすべてのコンテナーを対象としています。 要求からヒットが返されない場合は、セマンティック インデックスが初期化されていること、インデックス作成が完了していること、およびユーザーがコンテンツにアクセスできることを確認します。
Retrieval API の課金
Copilot Studio メッセージ メーターで sharePointEmbedded データ ソース請求書を使用する取得 API 要求。 料金は、コンテナーの種類に対して構成された課金モデルに従います。 Standard 課金では所有テナントの Azure サブスクリプションが課金され、パススルー課金では使用テナントのサブスクリプションが課金されます。
メーターの詳細については、「 課金メーター」を参照してください。 モデルを比較するには、「 課金モデルの選択」を参照してください。
ユーザー エクスペリエンスをテストする
コンテナー コンテンツにアクセスできるユーザーでサインインします。 サポートされているファイルをコンテナーにアップロードし、インデックス作成を待機し、チャットを開いて、ファイル コンテンツが回答できる質問をします。 回答で想定されるファイルが省略された場合は、次をチェックします。
- 検出可能性。
- サポートされているファイル形式。
- アプリ アクセス。
- ユーザー アクセス。
- スコープの選択。
- インデックス作成の遅延。