Copilo Studioについて勉強を始めたので、その内容をメモ。
今回はトピックからナレッジ「SharePoint」を使用して、RAGで回答を生成する。
前回はトピック「Conversational boosting」を使用
前回の記事ではSharePointのナレッジを「Conversational boosting」や「オーケストレーション」を使用して呼び出していた。


簡単なエージェントならこの方法でもいいんだけど、ナレッジソースが増えたりしたときに、「こういう質問をされたときはこのナレッジを使いたい(他のナレッジは使いたくない)」みたいなことが出てくる。
そんなときは「トピック」と「生成型の回答」を使用して実現する。
今回作るエージェント
[会話で生成AIを利用する]をオフにしたエージェントに、


こんなSharePointサイトを用意して、「休暇について質問されたとき」はこのナレッジのみを使用するサンプルを作る。


構築
まずは[トピック]から[トピックの追加]を選んで、


「休暇」に関するフレーズを設定する(今回はサンプルなので適当)。


※適切なフレーズを設定するベストプラクティスはこちら。
![]()

フレーズをトリガーする際のベスト プラクティス - Microsoft Copilot Studio
Microsoft Copilot Studio におけるトピックのトリガー フレーズのガイダンスとベストプラクティス。
続いて[詳細]から[生成型の回答]を追加し、


入力にシステム変数の「Activity.Text(ユーザが最後に送信したメッセージ)」を設定する。


[プロパティ]から[選択したソースのみを検索する]にチェックを付けて、[AIが備える一般ナレッジの使用]をOFFにする。
※これでAIが「検索してほしいナレッジ以外から情報を取得」したり、「自分の知識で答える」ことを抑制する(ONのときとの動作の違いはおまけに記載)。

※これでAIが「検索してほしいナレッジ以外から情報を取得」したり、「自分の知識で答える」ことを抑制する(ONのときとの動作の違いはおまけに記載)。

下にスクロールして[メッセージの送信]をON(この「生成型の回答を作成する」ノードでユーザーへの返信も実施)にして、[応答を保存]から変数の[新規作成]を選び、


生成型の回答の出力を変数(今回はresponse)に保存。


そして「条件」を追加して、


生成型の回答から出力されるテキスト(Text.ContentまたはText.MarkdownContent)に対して、


空白チェックを行い、空白の場合は「情報が見つからない」旨メッセージを送る。


最後に[現在のトピックを終了する]を入れて完成。


動作確認
[トピック間の追跡]をONにして、


トリガーフレーズに設定した質問を送ると、トリガーが起動して、


[生成型の回答]が対象のデータソースを検索し、RAGで回答を作ってくれる。


こんな感じで「このトピックのときはこのデータソース」というのをきちんと管理すれば、回答精度の高いエージェントがつくれるかもしれない。
おまけ1:データソースに情報が見つからない場合
例えば、(やらないと思うけど)こんな感じでデータソースに情報がない質問をフレーズに追加し、


質問を送ると、生成型の回答のテキストは空白となり、条件で設定したメッセージが送られる。


おまけ2:[AIが備える一般ナレッジの使用をAIに許可]した場合
構築手順でオフにした[AIが備える一般ナレッジの使用をAIに許可]をオンにして、データソースに情報がない質問(特別休暇について)をすると、


こんな感じでAIが自分の知識から答えを作って回答してくれる。これが「よいこと」か「悪いこと」かはトピック次第。


コメント