次の方法で共有


SharePoint Embedded エージェントの詳細なTopicsの概要

この高度なガイドでは、セマンティック インデックス Retrieval-Augmented 生成 (RAG) が、正確でコンテキスト対応の AI 応答を提供する方法について説明します。 これらの概念が連携して、エージェントがデータから関連情報を取得し、根拠のある回答を返す方法について説明します。

警告

構成

必要なコンテナーの種類の構成

DiscoverabilityDisabled

discoverabilityDisabled プロパティは、Microsoft 365 が特定のコンテナーの種類内のドライブ項目を検出できるかどうかを制御します。

このプロパティを false に設定するように既存のコンテナーの種類を更新する場合は、構成の変更が完全に反映されるまでに最大 24 時間 かかります。

  • 新しいコンテナーの作成
  • コンテナーへのファイルのアップロード、または
  • SPE エージェントを使用したフォルダーまたはファイルの操作。

これにより、エージェントがコンテンツに正しくアクセスして表示できるようになります。

Set-SPOContainerTypeConfigurationdiscoverabilityDisabledfalseに設定する方法の例を次に示します。

Set-SPOContainerTypeConfiguration -ContainerTypeId 4f0af585-8dcc-0000-223d-661eb2c604e4 -DiscoverabilityDisabled $false

Visual Studio Code SharePoint Embedded 拡張機能を使用して検出可能性を無効にすることもできます

SPE の VS Code 拡張機能を使用して DiscoverabilityDisabled を false に設定する

CSP ポリシー

埋め込みチャット ホストの Content-Security-Policy (CSP) により、指定されたホストのみがチャット コンポーネントを読み込むことができます。 具体的には、 CopilotEmbeddedChatHosts 設定は 、Content-Security-Policy ヘッダーで frame-ancestors 値として使用されます。 これにより、チャット コンポーネントを埋め込むことができるドメインを制限することで、アプリケーションのセキュリティ保護に役立ちます。

所有テナントの SPE 管理者は、 Set-SPOContainerTypeConfiguration コマンドレットを使用してこの設定を設定できます。

# Note this MUST be run in Windows PowerShell. It will not work in PowerShell.
Import-Module -Name "Microsoft.Online.SharePoint.PowerShell"
Connect-SPOService "https://<domain>-admin.sharepoint.com"
# Login with your admin account.
# ...

Set-SPOContainerTypeConfiguration -ContainerTypeId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -CopilotEmbeddedChatHosts @("http://localhost:3000", "https://contoso.sharepoint.com", "https://fabrikam.com")

# This will set the container type configuration “CopilotEmbeddedChatHosts” accordingly. 
# Replication of this configuration on consuming tenants can take up to 24 hours
# ...

# Confirm setting value
Get-SPOContainerTypeConfiguration -ContainerTypeId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

# On a consuming tenant, you may confirm the setting value as follows
Get-SPOApplication -OwningApplicationId <OwningApplicationId> | Select-Object CopilotEmbeddedChatHosts

OwningApplicationId             : <OwningApplicationId>
OwningApplicationName           : SharePoint Embedded App
Applications                    : {<OwningApplicationId>}
CopilotEmbeddedChatHosts        : {http://localhost:3000, https://contoso.sharepoint.com, https://fabrikam.com}

注:

この構成が設定されていない場合、 Content-Security-Policy は既定で frame-ancestors に設定されます:"none"。つまり、エージェントを埋め込む人はいません。

使用しているテナントの SharePoint Embedded Administrator は、使用しているテナント コマンドレットを使用して、所有するアプリケーションで指定された値をオーバーライドできます。

注:

使用するテナントのオーバーライドは、所有テナントが CopilotEmbeddedChatHosts用に構成したもののサブセットである必要があります。 使用しているテナントの管理者は、アプリケーション所有者がコンテナーの種類に指定していない値を設定できません。 オーバーライド機能は、テナント管理者を使用して、所有するアプリケーションが定義したホストのサブセットでのみエージェントを有効にすることを目的としています。

使用しているテナントが設定をオーバーライドする方法の例を次に示します。

# Note this MUST be run in Windows PowerShell. It will not work in PowerShell.
Import-Module -Name "Microsoft.Online.SharePoint.PowerShell"
Connect-SPOService "https://<domain>-admin.sharepoint.com"
# Login with your admin account.
# ...

Set-SPOApplication -OwningApplicationId  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -CopilotEmbeddedChatHosts @("https://contoso.sharepoint.com", "https://fabrikam.com") 

# This will set the container type configuration “CopilotEmbeddedChatHosts” accordingly
# Note that @("https://contoso.sharepoint.com", "https://fabrikam.com") is a subset of what we defined in the owning tenant
# Those values were @("http://localhost:3000", "https://contoso.sharepoint.com", "https://fabrikam.com")

# Confirm the configuration

Get-SPOApplication -OwningApplicationId <OwningApplicationId> | Select-Object CopilotEmbeddedChatHosts

OwningApplicationId             : <OwningApplicationId>
OwningApplicationName           : SharePoint Embedded App
Applications                    : {<OwningApplicationId>}
CopilotEmbeddedChatHosts        : {https://contoso.sharepoint.com, https://fabrikam.com}

省略可能な構成

認証と Cookie

SharePoint Embedded エージェントによって使用される iframe は、サード パーティの Cookie を使用してユーザーを認証します。 ユーザーのブラウザーでサードパーティの Cookie が無効になっている場合、iframe は自動的に認証できません。 この場合、認証を完了できるように、ユーザーに手動でサインインするように求めるポップアップが表示されます。

高度なトピック

アプリケーション スコーピング

SharePoint Embedded エージェント (SPE エージェント) のアプリケーション スコープには、ツールが動作する境界とコンテキストを定義し、その機能がさまざまなアプリケーションの特定のニーズに合わせて調整されていることを確認する必要があります。 このプロセスは、エージェントの機能をカスタマイズするのに役立ち、さまざまなユース ケースに対してより効果的で関連性が高くなります。

SPE エージェント ユーザーが LLM に対してクエリを実行すると、 ユーザー+アプリケーション がアクセスできるファイルにのみアクセスできます。 エージェント セッションの有効なアクセス許可は、SharePoint Embedded アプリケーションのアクセス許可とユーザーのアクセス許可の積集合になります。

左側に SPE アプリケーション アクセスを含むベン図、中央に SPE エージェント、右側の重複した領域でテナント ユーザーを使用している SPE エージェントは、エージェントがアクセスできる内容です

情報アーキテクチャ

SharePoint Embedded 内のファイルには、自然に セマンティック インデックスが付けられます。 このセマンティック インデックスは、クエリ時に格納されたコンテンツから関連するコンテキストを提供することで、取得拡張生成 (RAG) ワークフローを支えます。 本質的には、AI 応答を 根拠 にして、一般的な知識だけに依存するのではなく、コンテナー内の正確な情報を直接参照するようにします。

SPE での RAG のしくみ

SharePoint Embedded エージェントを使用すると、 特定のファイルまたはドライブ項目に対する大きな言語モデル (LLM) 応答をさらに強化できます。

セマンティック インデックス

Microsoft 365 Copilotのセマンティック インデックスの詳細については、こちらを参照してください

セマンティック インデックスを使用すると、データの類似性に基づいて迅速かつ正確に検索できます。 つまり、正確な一致だけでなく、コンテキストと意味を理解することで、最も関連性の高い情報を見つけることができます。

Retrieval-Augmented 生成 (RAG)

RAG を使用すると、実行時にリポジトリに格納されている関連するソース資料を参照できます。 データはインデックスから取得され、大きな言語モデル (LLM) に送信されるプロンプトを拡張するために使用されます。 RAG の利点:

  • モデルをトレーニングすることなく、データ ソースをナレッジとして扱う
  • プロンプトで追加のコンテキストとして検索 (取得) 結果を使用します
  • プロンプトと指定されたコンテキストを使用して出力を生成します

LLM は、データを使用して応答を通知し、構築します。

RAG クエリのフロー

基礎

SPE エージェントのコンテキストでの接地とは、ユーザーのプロンプトに関連する大きな言語モデル (LLM) に入力ソースを提供するプロセスを指します。 これにより、プロンプトの特異性が向上し、応答がユーザーの特定のタスクに関連し、アクション可能であることを確認できます。 エージェントが基づいているデータは、エージェント アプリケーションのコンテナーの種類の内容になります。 バックグラウンドでは、SPE エージェントはMicrosoft 365 Copilotを使用します。 Microsoft 365 Copilot アーキテクチャの詳細については、こちらをご覧ください

エージェントを特定のコンテンツにスコーピングする

SharePoint Embedded (SPE) エージェントには、アクセスできるデータ ソースを制限する機能があります。 次のサンプル コードは、使用可能なデータ ソースの種類を示しています。 この例では 、SDK を構成する方法を示します。

export type IDataSourcesProps =
  | IFileDataSource
  | IFolderDataSource
  | IDocumentLibraryDataSource
  | ISiteDataSource
  | IWorkingSetDataSource
  | IMeetingDataSource;

export enum DataSourceType {
  File = 'File',
  Folder = 'Folder',
  DocumentLibrary = 'DocumentLibrary',
  Site = 'Site',
  WorkingSet = 'WorkingSet',
  Meeting = 'Meeting'
}

スコーピングでサポートされているドキュメントの種類

リファレンス - copilot によるファイル形式のサポート

ドキュメント: PDF、DOCX、XLSX、PPTX

テキスト ベースのファイル: RTF、TXT、CSV、LOG、INI、CONFIG

オーディオ: WAV

プログラミング言語: PY、JS、JSX、JAVA、PHP、CS、C、CPP、CXX、H、HPP、M、COFFEE、DART、LUA、PL、PM、RB、RS、SWIFT、GO、KT、KTS、R、SCALA、T、TS、TSX

シェル スクリプト: BASH、SH、ZSH

マークアップとドキュメント: HTML、CSS、MD、RMD、TEX、LATEX

データベース言語: SQL

データシリアル化形式: IPYNB、JSON、TOML、YAML、YML

言語/ロケール

エージェント iframe ローカライズ設定を動的に読み込み、チャット インターフェイスが適切な言語で表示されるようにします。 これらの設定は SharePoint から派生しており、ローカライズ オプションの包括的なセットが提供されます。

エージェント iframe が初期化されると、SharePoint から現在のローカライズ設定が取得されます。 これらの設定により、チャット インターフェイスの言語と地域の設定が決まります。これにより、すべての UI 要素、メッセージ、相互作用がユーザーの優先言語で表示されます。

これをローカライズするには、SharePoint アカウントの設定で言語オプションを設定します。個人用の言語と地域の設定を変更する - Microsoft サポート

注:

M365 言語設定が SharePoint アカウントの言語設定と異なる場合は、M365 言語設定が優先されます。 M365 言語の設定は、 Microsoft 365 で表示言語を変更します

ChatLaunchConfigを介して追加のロケール オプションを渡して、エージェントが応答する言語をさらに設定できます。

 const [chatConfig] = React.useState<ChatLaunchConfig>({
        header: ChatController.instance.header,
        theme: ChatController.instance.theme,
        zeroQueryPrompts: ChatController.instance.zeroQueryPrompts,
        suggestedPrompts: ChatController.instance.suggestedPrompts,
        instruction: ChatController.instance.pirateMetaPrompt,
        locale: "en",
    });
ロケール オプション

使用できるロケール オプションの例を次に示します。

ロケール コード 俗称
af アフリカーンス語
en-gb 英語 (英国)
he ヘブライ語
kok コンカニ語
nn-no ノルウェー語 (ニーノシュク)
sr-latn-rs セルビア語 (ラテン、セルビア)
am-et アムハラ語
es スペイン語
hi ヒンディー語
lb-lu ルクセンブルク語
or-in Odia (インド)
sv スウェーデン語
ar アラビア語
es-mx スペイン語 (メキシコ)
hr クロアチア語
lo ラオス語
pa パンジャブ語
ta タミール語
as-in アッサム語
et エストニア語
hu ハンガリー語
lt リトアニア語
pl ポーランド語
te テルグ語
az-latn-az アゼルバイジャン語 (ラテン語、アゼルバイジャン語)
eu Basque
hy アルメニア語
lv ラトビア語
pt-br ポルトガル語 (ブラジル)
th タイ語
bg ブルガリア語
fa ペルシャ語
id インドネシア語
mi-nz マオリ語 (ニュージーランド)
pt-pt ポルトガル語 (ポルトガル)
tr トルコ語
bs-latn-ba ボスニア語 (ラテン、ボスニア、ヘルツェゴビナ)
fi フィンランド語
is アイスランド語
mk マケドニア語
quz-pe ケチュア語 (ペルー)
tt タタール語
ca-es-valencia カタロニア語 (バレンシア語)
fil-ph フィリピン語 (フィリピン)
it イタリア語
ml マラヤーラム語
ro ルーマニア語
ug ウイグル語
ca カタルニア語
fr-ca フランス語 (カナダ)
ja 日本語
mr マラーティー語
ru ロシア語
uk ウクライナ語
cs チェコ語
fr フランス語
ka ジョージア語
ms Malay
sk スロバキア語
ur ウルドゥ語
cy-gb ウェールズ語 (英国)
ga-ie アイルランド語 (アイルランド)
kk カザフ語
mt-mt マルタ語 (マルタ)
sl スロベニア語
uz-latn-uz ウズベク語 (ラテン語、ウズベキスタン語)
da デンマーク語
gd スコットランド ゲール語
km-kh クメール語 (カンボジア)
nb-no ノルウェー語 (ブークモール)
sq アルバニア語
vi ベトナム語
de ドイツ語
gl ガリシア語
kn カンナダ語
ne-np ネパール語 (ネパール)
sr-cyrl-ba セルビア語 (キリル語、ボスニア・ヘルツェゴビナ)
zh-cn 簡体字中国語
el ギリシャ語
gu グジャラート語
ko 韓国語
nl オランダ語
sr-cyrl-rs セルビア語 (キリル、セルビア)
zh-tw 繁体字中国語