Microsoft 365 Copilot とエージェントのエクスペリエンスを追加する

適用対象: 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 を呼び出します。 dataSourcesharePointEmbedded に設定し、コンテナーの種類 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の詳細については、「コンテナー タイプの作成と構成」を参照してください。

ヒットするたびに titleauthor などの追加のフィールドを返すには、要求に 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 サブスクリプションが課金され、パススルー課金では使用テナントのサブスクリプションが課金されます。

メーターの詳細については、「 課金メーター」を参照してください。 モデルを比較するには、「 課金モデルの選択」を参照してください。

ユーザー エクスペリエンスをテストする

コンテナー コンテンツにアクセスできるユーザーでサインインします。 サポートされているファイルをコンテナーにアップロードし、インデックス作成を待機し、チャットを開いて、ファイル コンテンツが回答できる質問をします。 回答で想定されるファイルが省略された場合は、次をチェックします。

  • 検出可能性。
  • サポートされているファイル形式。
  • アプリ アクセス。
  • ユーザー アクセス。
  • スコープの選択。
  • インデックス作成の遅延。

次の手順