2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot Studioで社内問い合わせAIを試作してみた

2
Posted at

はじめに

今回はMicrosoft Copilot Studioを利用して、社内問い合わせ向けのAIエージェントを試作しました。

実際に構築していく中で、SharePointとの連携、Teamsへの公開、アプリ更新、権限設定、Teamsチャネル利用時の制約など、いくつか確認すべきポイントがありました。

また今回の実装をするうえでTeamsへの配信をしようと思った際に失敗した経験も含んでおりますので同じような形式で実装している方の助けになればと思います。

今回は、実際に行った内容を流れに沿ってまとめます。

今回の構成

今回の構成は以下です。

  • Microsoft Copilot Studio
  • SharePoint Online
  • Microsoft Teams

SharePoint Onlineに社内FAQを配置し、それをCopilot StudioのKnowledge Sourceとして登録します。

Copilot Studio側で質問を受け取り、SharePoint内の情報を検索して回答を生成するRAG構成です。

Teamsは、作成したエージェントを社員が利用するためのインターフェースとして使用しました。

最初に受けた要件

要件としては

  • よくあるFAQへ回答できる
  • 社内規定にアクセスできる
  • 社員全員がTeamsで利用できる形式

といった要件でした。
まずはこの要件を満たすようにCopilot Studioを使用した開発を開始することにしました。

エージェントを作成する

まずは new Agent を選択し作成を開始しました。
ここの画面について簡単にですが解説したいと思います。
image.png
このようになっています。
Untitled Agent となっている箇所は編集でき、そのエージェントの名前を指定します。
ここで指定した名前をTeamsで実際に使用する際に目にするものになりますのでわかりやすい名前を付けるといいでしょう。
Instructions はこのAIの特性を意味します。
例えばこの欄に「日本語で返して」と書くと日本語を出力するようになります。
今回は社内資料を参照してほしいので「社内規則、福利厚生、勤怠、休暇、各種申請など、社内情報に関する質問については、登録された社内ナレッジを最優先して回答してください。」という指示をしています。
次に大事な欄がKnowledgeです。
Knowledgeでは、AIが回答の根拠として参照する情報源を設定します。SharePoint上のファイルやフォルダを登録すると、その内容が検索・インデックス化され、回答時の情報源として利用されます。
今回のような事例ではここに社内規則ファイルを収束したフォルダを作成し、それを参照できるようにします。
次項ではその社内ファイルの扱いについて触れていきます。

SharePointに社内FAQを用意する

Knowledge ではAIが資料として使うものを設定されています。
今回はSharePoint Online上に社内FAQ用のファイル/フォルダを用意し、それをKnowledge Sourceとして接続します。
image.png
ここにあるのが SharePoint です。
この先のBrowse items から設定していきます。

まず、社内問い合わせで利用するFAQをSharePoint Onlineに配置しました。

FAQについては、

  • 質問
  • 回答
  • 表記ゆれ
  • 関連するキーワード

などを意識して整理しました。

SharePoint上のファイルをKnowledge Sourceとして接続することで、Copilot Studioから社内情報を参照できるようになります。

Copilot Studio上で動作確認する

Knowledge Sourceを登録した後、Copilot Studio上でFAQに関する質問を行いました。

SharePoint内に登録した内容が正常に取得され、回答に利用されることを確認しました。

また、元となるSharePointファイルを更新した場合も、定期的な同期処理によって再インデックスされるため、毎回エージェントをPublishし直す必要はありません。

ただし、同期処理はバックグラウンドで行われるため、更新内容が必ず即時反映されるわけではありません。

Teamsへエージェントを公開する

次に、作成したエージェントをMicrosoft Teamsから利用できるようにしました。

Copilot StudioのMicrosoft 365 / Microsoft Teams向け設定から公開し、組織カタログへの登録を行いました。

公開する上ではMicrosoft 365 and Microsoft Teams を有効化するのを忘れないようにしましょう。

管理者による承認後、Teams上の組織向けアプリとして「社内問い合わせAI」が表示されるようになりました。

Teamsの個人チャットでは、エージェントに直接質問し、SharePointの内容を利用して回答できることを確認しました。
image.png
個人チャットでの動作確認はこのように行えます。

Teamsチャネルへの追加を試す

次に、Teamsのチームやチャネル上からエージェントを利用できるか確認しました。

Copilot Studio側で、

Users can add this agent to a team

を有効化し、Teams用のmanifestを確認しました。

manifestには以下のようにteam scopeが含まれていました。

"scopes": [
  "personal",
  "team",
  "copilot"
]

このため、Teamsアプリとしてはチームへの追加に対応した状態になっていることが確認できました。

余談ですがあとからUsers can add this agent to a teamを有効化すると再度エージェントを最新化する必要があります。
そのため事前にTeamに追加することがわかっているなら最初の配信をする前に有効化しておくとよいでしょう。
そうしなかった場合は管理者側で最新版更新の操作をしてもらう必要があります。

Teamsアプリの更新で詰まった点

最初に組織カタログへ登録したバージョンは1.0.0でした。

その後、team scopeを有効化したことでCopilot Studioから生成されたmanifestは1.0.10になっていましたが、Copilot Studio上の申請状態は1.0.0 Approvedのままでした。

また、Microsoft 365管理センター側にもPending updateが表示されず、Copilot Studioから更新申請を行う導線も確認できませんでした。

そのため、Copilot Studioから生成したTeamsアプリパッケージのZIPを利用し、Teams管理センター側から既存アプリを更新してもらいました。

最終的には1.0.10が公開された状態まで確認できました。

Teamsチャネルで@メンションしても応答しない

アプリ更新後、対象Teamへ社内問い合わせAIを追加し、

@社内問い合わせAI こんにちは

のようにチャネル上でメンションしました。

しかし、エージェントから応答はありませんでした。

この問題を切り分けるために、以下を確認しました。

  • Copilot Studio上では正常に回答する
  • Teamsの1対1チャットでは正常に回答する
  • Teamへのアプリ追加は可能
  • manifestにteam scopeが存在する
  • Teamから削除して再追加しても改善しない
  • Teams管理センターでアプリが利用可能になっている
  • Custom Appの利用が許可されている
  • プレビュー版Custom Appの利用も有効
  • 対象ユーザーにアプリ利用権限が付与されている
  • Microsoft Entra ID上のAgent IDがActive
  • サインインログも成功している

ここまで確認しても、Teamsチャネル上の@メンションには応答しませんでした。

SharePoint Knowledge SourceにはTeamsチャネル利用時の制限がある

調査を進める中で、Microsoft公式ドキュメントに重要な制限が記載されていることを確認しました。

SharePointのようにエンドユーザー認証を必要とするKnowledge Sourceは、Teamsの1対1チャットでは利用できますが、グループチャットやチャネルメッセージでは現時点で利用できません。

つまり今回の構成では、

Teams 1対1チャット
→ SharePointを参照した回答が可能

Teamsグループチャット / チャネル
→ SharePoint Knowledge Sourceを利用した回答は不可

という制約があります。

なお、これはTeamsチャネル上でエージェント自体を利用できないという意味ではありません。
Teamsチャネル上でエージェントを利用すること自体は可能ですが、SharePointのようにエンドユーザー認証を必要とするKnowledge Sourceを利用した回答には制限があります。

そのため、Teamsチャネル上で社内FAQを参照した回答を行うことを目的とする場合、SharePointをKnowledge Sourceとして利用する今回の構成では、現時点では実現が難しいことが分かりました。

今回分かったこと

今回の検証を通して、Copilot StudioとSharePointを利用すれば、比較的少ない実装で社内向けRAGエージェントを構築できることが分かりました。

特にTeamsの1対1チャットとの組み合わせであれば、SharePoint上のFAQをKnowledge Sourceとして利用できるため、社内問い合わせ用途として扱いやすい構成だと感じました。

一方で、Teamsのグループチャットやチャネルで利用する場合は、SharePointなどエンドユーザー認証を必要とするKnowledge Sourceに制限があります。

そのため、

  • どこでエージェントを利用するのか
  • Knowledge Sourceに何を使用するのか
  • 認証が必要なKnowledge Sourceなのか
  • 個人チャットなのか、グループチャットやチャネルなのか

という点が大事です。
構築をするうえで今回やりたいことが何なのか、それを整理したうえで構築しましょう。

まとめ

今回は、Copilot Studio、SharePoint Online、Microsoft Teamsを利用して、社内問い合わせAIの試作・検証を行いました。

実際に試した内容は、

  • SharePointへのFAQ配置
  • Copilot StudioでのRAG構築
  • Knowledge Sourceの動作確認
  • Teamsへの組織内公開
  • Teamsアプリmanifestの確認
  • アプリバージョン更新
  • 権限・認証・Custom App設定の確認
  • Teams個人チャットとチャネルでの動作比較
  • Microsoft公式仕様をもとにした制約調査

などです。

構築自体は比較的簡単ですが、Teamsへの展開方法やKnowledge Sourceの種類によって、利用できる機能や範囲が変わります。

特にSharePointをKnowledge Sourceとして利用する場合は、現時点ではTeamsの1対1チャットを前提とした運用が最も現実的だと考えています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?