はじめに
私は普段デザイナーとして働いていて、最近Copilot StudioでのAIエージェント作りに挑戦しています。この記事はシリーズの2本目です。
この記事は、デザイナー畑の方でこれからAIに触ってみようとしている方に向けて書いています。
やったこと
今回は、Knowledgeの機能について理解を深めるために、「繰り返し聞かれる質問に答えてくれるFAQエージェント」を作ってみました。
ナレッジソースとして何かデータを用意する必要がありますが、新しく質問データを作るのは大変そうだったので、10年前に作ったUIガイドラインの資料(Word)を流用することにしました。ちょうど手元にあったので、準備の手間はかかりませんでした。
調べてみると、ナレッジソースには以下のようなものが利用可能ということがわかりました。
- アップロードファイル: PDF、Word、Excel、PowerPointなどのファイルを直接ドラッグ&ドロップでアップロードする方式。 (今回はこちらを利用)
- Public websites: 公開されているウェブサイトのURLを登録する方式。
- SharePoint: SharePointのサイトやドキュメントライブラリに接続する方式。
- ServiceNow: ServiceNowに接続し、サービス管理系のナレッジベースを参照する方式。
- Confluence: Confluenceのワークスペースに接続し、チームのドキュメントを参照する方式。
- Jira / Azure DevOps Work Items:Copilotコネクタ経由で、課題管理・タスク管理のデータを参照する方式。
- Dataverse:Dataverseのテーブルに接続し、構造化された業務データを参照する方式。
- Azure AI Search:大規模なドキュメント群に対する高度な検索が必要な場合に使う方式。
- Copilot connectors:Microsoft 365 Copilotでインデックス化された、Microsoft製以外のサービスのデータを取り込む方式。
ナレッジソースを取り込むことで、AIが持っている一般的な知識での回答(いわゆるハルシネーション)ではなく、根拠のある情報源をもって回答してくれる状態になります。
今回はエージェントの指示(instructions)を自分で書いてみました。
「あなたはUIガイドラインの質問窓口です。ユーザーから質問を受けたら(例:ボタンのサイズは?本文の文字色は?)UIガイドラインから適切な回答を返してください。回答内容は日本語で返すようにしてください。」
これだとUIガイドラインに載っていない質問が来たときの振る舞いを指定していないので、情報が足りていないとのレビューをもらい、以下一文を追記しました。
「UIガイドラインに記載がない内容については、憶測で答えずに『ガイドラインに記載がありません』と伝えてください。」
Copilot Studio側でこのinstructionsを設定し、KnowledgeにUIガイドラインのWordファイルを追加しました。このとき、Knowledgeの設定画面に「Search all websites」というチップがデフォルトで付いていることに気づきました。今回は必要なさそうだったのでオフにしました。
設定を終えて、Previewタブで実際に質問を投げてみました。「ボタンの余白はどのぐらいが適切か教えて」と聞くと、ガイドラインに書かれているマージンとボタンサイズ、Citations付きで答えてくれました。
続けて、当時のガイドラインには載っていなさそうな「ボタンのアニメーションの速度はどのぐらいが適切?」という質問もしてみました。すると、ガイドライン全体を検索した上で「記載がありません」と答えつつ、UIガイドラインの関連する情報を添えてくれました。
つまずいたポイント・気をつけるポイント
今回は特になかったです。
学んだこと・わかったこと
Knowledge(ナレッジソース)は、エージェントが回答するときに参照できるデータのことだとわかりました。これを設定しないままだと、instructionsと一般的な知識だけで答えることになり、載っていないはずの内容までそれらしく答えてしまう可能性が残ります。根拠となる資料をKnowledgeとして渡しておくと、その資料に書かれている範囲でだけ答えるよう寄せていけることが、今回の一番の収穫でした。
アップロードするファイル以外にも、SharePointやDataverse、社内のサービス管理システムなど、いろいろな種類のデータをナレッジソースにできるようです。今回は手元にあるWordファイル1つで済ませましたが、対象を広げるときはこのあたりの選択肢を検討することになりそうです。
今回はすぐに取り出せた資料をナレッジソースとしましたが、普段のやりとりなどをあらかじめ蓄積しておくなどすればもっと実践的なAIツールができるだろうということがわかりました。
そして、「Search all websites」について。
これは、Bingでインデックスされた公開サイト全体を検索し、その結果を自分が追加したナレッジソースの検索結果と混ぜ合わせる設定だとわかりました。オンのままにしていたら、ガイドラインに載っていない質問に対して、Web上の情報が回答に混ざってしまい、「記載がありません」と答えてほしい場面でも余計な情報が出てきていたかもしれません。
まとめ・次にやりたいこと
10年前に作った資料を持ってきただけで、想定していた振る舞いがほぼそのまま動いたのは、正直拍子抜けするくらいでした。
次回は、自分が聞かなくてもトリガーを用いて自動でAIがチェックするツールを作成してみようと思います。