Microsoft 365 Copilot チャット API を試してみる
はじめに
Microsoft 365 Copilot API の取得 API と検索 API については以前の記事でも紹介しました。
今回は以前の記事では触れられなかったチャット API を試してみます。
チャット API について
取得 API、検索 API、およびチャット API について整理すると以下の図のようになります。
| 名前 | 説明 |
|---|---|
| 取得 API | Microsoft 365 のセマンティック インデックスからデータを取得します。 |
| 検索 API | Microsoft 365 Copilot 検索と同様のエクスペリエンスを提供します。 |
| チャット API | Microsoft 365 Copilot チャットと同様のエクスペリエンスを提供します。 |
チャット API を使用して Microsoft 365 Copilot チャットをカスタム アプリケーションに統合できます。このとき、追加のコンテキストを指示できるため、統合されたカスタム エージェントとして動作させることもできます。Copilot Studio を使っても似たようなことはできますが、チャット API ではカスタム アプリケーションとのシームレスな連携を可能にします。具体例としては Microsoft 365 Developer Blog にある Miro のデモが参考になります。Miro のデモでは Microsoft 365 のデータを使ってキャンバスに付箋やフローを自動的に作成しています。
注意点として、現時点ではチャット API は非常に多くのアクセス許可を要求します。
- Sites.Read.All
- Mail.Read
- People.Read.All
- OnlineMeetingTranscript.Read.All
- Chat.Read
- ChannelMessage.Read.All
- ExternalItem.Read.All
取得 API と検索 API が要求するアクセス許可は Files.Read.All および Sites.Read.All なので比べるとその多さが一目瞭然です。この点については、今後 Agent 365 によりエージェントに対するアクセス許可が付与されるようになれば、改善する可能性があります。
チャット API の実行
Microsoft 365 Copilot Chat とチャットするためには最初に会話を作成します。
POST https://graph.microsoft.com/beta/copilot/conversations
Content-Type: application/json
{}
応答として会話 ID が返ってきます。
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#copilot/conversations/$entity",
"id": "90e9484c-...",
"createdDateTime": "2025-12-22T05:38:51.0939192Z",
"displayName": "",
"state": "active",
"turnCount": 0
}
会話 ID に対してチャット メッセージを送信します。ユーザーの位置情報を指定するための locationHint は必須です。locationHint はタイムゾーンのほか国名や座標を指定できます。
POST https://graph.microsoft.com/beta/copilot/conversations/90e9484c-...
{
"message": {
"text": "今年のふるさと納税の注意するべきポイントを教えてください。"
},
"locationHint": {
"timeZone": "Asia/Tokyo"
}
}
結果として Microsoft 365 Copilot の回答を得られます。メッセージだけではなく参照にしたドキュメントや URL も取得できます。続けてメッセージを送ることで会話を続けることができますが、OpenAI の API とは異なり、最新の会話のみのやり取りとなることに注意してください。現状、過去の会話履歴を取得する方法は提供されていないようです。また、ここでの会話が Microsoft 365 Copilot の会話履歴に表示されることはありません。
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.copilotConversation",
"id": "90e9484c-a497-4b69-83bd-fd30eccce683",
"createdDateTime": "2025-12-22T05:45:08.8612949Z",
"displayName": "今年のふるさと納税の注意するべきポイントを教えてください。",
"state": "active",
"turnCount": 1,
"messages": [
{
"@odata.type": "#microsoft.graph.copilotConversationResponseMessage",
"id": "b3ce4c4a-2caf-f682-2741-b651e3ccc62a",
"text": "今年のふるさと納税の注意するべきポイントを教えてください。",
"createdDateTime": "2025-12-22T05:45:08.8612949Z",
"adaptiveCards": [],
"attributions": [],
"sensitivityLabel": {
"sensitivityLabelId": null,
"displayName": null,
"tooltip": null,
"priority": null,
"color": null
}
},
{
"@odata.type": "#microsoft.graph.copilotConversationResponseMessage",
"id": "41f01506-c3c4-4703-9d68-906397fe28ff",
"text": "ご質問は「今年(2025年)のふるさと納税で注意すべきポイント」ですね。...",
"createdDateTime": "2025-12-22T05:45:14.6729778Z",
"adaptiveCards": [],
"attributions": [
{
"attributionType": "citation",
"providerDisplayName": "ふるさと納税サイト",
"attributionSource": "model",
"seeMoreWebUrl": "https://{{tenant-name}}.sharepoint.com/sites/furusato?web=1",
"imageWebUrl": "",
"imageFavIcon": "",
"imageWidth": 0,
"imageHeight": 0
},
...
],
"sensitivityLabel": {
"sensitivityLabelId": null,
"displayName": null,
"tooltip": null,
"priority": null,
"color": null
}
}
]
}
おわりに
Microsoft 365 Copilot チャット API は、現時点ではパブリック プレビューです。要求されるアクセス許可が多いことや、会話履歴の取得ができないことなど、実運用では障害となるポイントがいくつかあります。一方で、Microsoft 365 Copilot と同等のチャット エクスペリエンスを任意のアプリケーションに直接組み込めるという意味では、取得 API や検索 API とも異なる選択肢になります。今後の機能強化や改善に期待したいところです。
Discussion