【Copilot Studioの実践的活用】チャットボットを手軽に構築してみた

トライアル版で試してみた
本記事では、トライアル版のCopilot Studioにて、生成AIが動作するチャットボットを作成してみます。
トライアル版の始め方
以下のサイトにアクセスし「無料で試す」からMicrosoftアカウントでサインインすることで、トライアル版を開始することができます。
見るより触るほうが早い!といった方は是非、下記よりお試しください。
今回利用する環境
チャットボットのデータソースとして利用するSharePointサイトを1つ作成しておきます。

SharePoint サイト
- 生成AIのデータソース
- SharePointサイトを指定
- SharePointサイトでは以下の通りにデータを格納
- ドキュメントライブラリ(予めローカルからファイルをアップロード)
- サイトのページ(予め数ページ作成)
- リスト(リストを作成し、予め数件データを登録)
Copilot Studioでチャットボットを作ってみた
まずはチャットボットの作成を行い、上記で指定したサイトを生成AIのデータソースに指定します。
[新しい コパイロット]を選択するとコパイロット(チャットボット)の作成画面が表示されます。

copilot作成画面
コパイロットの名前や言語を指定し、生成AIを設定して~の欄にはデータソースとしたいサイトのURLを入力します。

copilotデータソース設定画面
[詳細オプションの編集]からチャットボットの応答に表示するアイコンや本チャットボットで利用するDataverseの設定が可能です。
#今回か既定値のまま進めますが、作成後でもコパイロットのアイコンは変更できました。

copilot作成
作成を押すと…

copilot作成完了
作成中の画面が表示された後、チャットボットの編集画面へ遷移します。

チャットボット編集画面
この状態でSharePointに予め格納したファイルの内容についてチャットしてみても、「申し訳ございません。お問合せ内容を理解できません。別の言い方をお試しください。」と返されます。

お問合せ内容を理解できません。
ここで必要となるのが生成AIのデータソースとして指定したSharePointサイトとの連携に必要なGraph APIの設定となります。

Graph API
Microsoft365のグローバル管理者アカウントでEntraにアクセスし[アプリの登録] から[新規登録]を選択します。

Entraからアプリの登録
アプリケーションの登録画面にて名前に適当な値を入力します。
リダイレクトURIにはWebを選択し、アドレス欄にはCopilot Studio側のチャットボット→[設定]→[認証]で表示されるペインにてオプションを[手動で認証する]に変更すると表示される[リダイレクトURL]をコピーペーストし、登録を選択します。

アプリケーションの登録画面
登録したアプリの[認証]から[アクセス トークン (暗黙的なフローに使用)]、[ID トークン (暗黙的およびハイブリッド フローに使用)]をオンにして保存をします。

アプリ認証設定
次に[証明書とシークレット]にて[+新しいクライアント シークレット]を選択し、[説明]や[有効期限]を設定し、[追加]を選択し、クライアントシークレットを追加します。
#クライアント シークレットは、アプリケーションが Entra へアクセスするために利用するための資格情報です。

シークレット作成
登録できたら[値]をコピーし、メモ帳などに保存しておきます。
#クライアントシークレットの値は登録直後のみ値をコピーすることができます。
もしコピーする前に画面遷移などをした場合は、再度登録し直してクライアントシークレットの値を取得しなおしてください。

シークレットキー
次に[APIのアクセス許可]にて[アクセス許可の追加]を選択し、[Microsoft Graph]を選択します。

APIアクセス許可
[委任されたアクセス許可]を選択し、以下のアクセス許可にチェックをいれます。

委任されたアクセス許可
- openid
- profile

openid、profile
- Files.Read.All

Files.Read.All
- Sites.Read.All

Sites.Read.All
4つのアクセス許可がチェックできたら[アクセス許可の追加]を選択し、登録したアプリにGraph APIのアクセス許可を追加します。

アクセス許可の追加
アクセス許可を追加したら[〇〇に管理者の同意を与えます]を選択し、追加したアクセス許可を利用できるようにします。

管理者の同意

管理者の同意が付与されました
ここまで来たら、Entra側の作業は終わりです。
次はCopilot Studioのチャットボット→[設定]→[認証]で表示されるペインにてオプションを[手動で認証する]にし、以下の通り値を設定します。
クライアントID
- 登録したアプリのアプリケーションIDに表示されている値を設定

クライアントID
クライアントシークレット
- コピーしたクライアントシークレットの値を設定

クライアントシークレット
スコープ
- アクセス許可した権限を文字列で入力(profile openid Sites.Read.All Files.Read.All)

スコープ
ここまでできたら[保存]を選択し、認証の設定を完了します。
認証の設定が完了後、再度チャットボットを開くと、[ログイン]を表示されているので、ログインします。

ログイン
Microsoftのログイン画面が表示され、Graph APIの利用許可画面が表示されるので[承諾]を押すと・・・

承諾
ブラウザの別タブでワンタイムパスワードが表示されます。

ワンタイムパスワード
このコードをチャットボットに入力することで、サインインは完了となります。

コード入力
ここまでくると、チャットボットがGraph APIを介してSharePointサイトのコンテンツを回答のデータソースとして検索してくれるようになります。

SharePointソースを元に回答
作成したチャットボットを公開して動作させてみると・・・

チャット回答例
チャット欄の左下に進捗マークが表示され・・・

チャット回答例2
SharePointのページに記載した内容と、ライブラリにアップロードしたファイルを元に生成的な回答が得られました。

チャット回答例3
今回試した範囲だと、サイト内のドキュメントライブラリやページの情報をデータソースとして生成的な回答をしてくれましたが、リストの情報は認識しなかったです。
SharePointをデータソースとした場合、FAQなどの文字ベースの情報はリストで掲載するケースも多いと思うので、リストもデータソースとして認識してくれれば・・とは思いつつ、現時点ではPowerAutomateフロー+カスタムデータなどにて回避することになるかなと思われます。
まとめ
今回Copilot Studioを扱ってみるにあたり、実際に動かしてみたり、調べてみたりしたので、以下に結果をまとめてみます。
- 生成型の回答には、Azure OpenAIのGPT-3.5 Turboモデルが利用している。
- ユーザーの質問を最適化し、より適切な検索が行えるよう工夫される。
- すべてのデータソースから上位3件を検索し、検証と要約を行った上で回答が生成される。
- SharePointをデータソースとする場合、1ファイルの最大容量は3MBです。
- Microsoft 365セマンティックインデックスが適用されているユーザーは、そのインデックスを活用した回答が返されます。
- Copilot Studioは顧客データを収集または提供せず、大語モデルの学習に利用することはありません。
今回はSharePointにあるファイルをデータソースとした最低限のチャットボットを作ってみましたが、必要に応じたカスタマイズ(例えばPowerAutomateフローと連携したチャットベースでの処理自動化、解決できなかった質問に対する処理の定義・・・など)をすることで、ニーズにあったチャットボットが作成できると思いました。
またCopilot StudioのチャットボットにおけるSharePointの検索はまだまだ不十分で、検索にヒットしないパターンもしばしばありました。検索精度を高めたい場合などは、Azure Open AIを利用するなどが現時点では1つの手段になるかと思います。
またコスト面でも25,000メッセージ/月単位で課金が必要となるCopilot Studioに対して、トークン数での従量課金となるAzure Open AIのほうが使い勝手が良さそうです。
(フルに25,000件を毎月利用できるなら、Copilot Studioのほうが良いケースもあると思います)
カスタマイズ性もAzure Open AIのほうがある一方、カスタマイズする事で必要な課金が増えたりなどがある為、一概にAzure Open AIのほうが良いなどといったことはなく、どのレベル感でAIを組み込んだ業務アプリを作成したいかなどを検討し、その上で最適なサービスを選択することになってくるかと思います。
以上、ここまでお読みいただきありがとうございました。もしCopilot Studioなどにご興味をお持ちになられた際は、是非お問い合わせください。
以上、最後までご愛読いただき
ありがとうございました。
お問い合わせは、
以下のフォームへご連絡ください。