Copilot Studioの「エンティティ」と「スロット充填(スロット埋込み)」について調べたのでメモ。
※この記事のサンプルで紹介するベースのエージェントのつくり方はこちら
Copilot Studio 生成AIを使用したエージェント(Copilot)を作成し、Teamsで他のユーザと共有する
Copilo Studioについて勉強を始めたので、その内容をメモ。今回は基礎の基礎、生成AIと会話できるエージェントの構築エージェントの作成まずはCopilo Studioに移動し、からを選択。現時点ではまだ「言語が英語」のエージェントの...
エンティティ
エンティティは「型定義」に似ていて、「電話番号」とか「郵便番号」とかの「情報の単位を定義」する機能。
※ややこしいけどDataverseのテーブルの旧名称「エンティティ」とは別物。
エンティティにはCopilot Studio側で用意してくれている、事前構築済みエンティティ(郵便番号、日時、メール、など)と、
※郵便番号とかはアメリカの形式だから日本で使うエージェントでは使えないけど。。
※郵便番号とかはアメリカの形式だから日本で使うエージェントでは使えないけど。。
自分で型を定義する、カスタムエンティティがある。
カスタムエンティティ
自分で定義するカスタムエンティティには2種類のつくり方がある。
1つ目の「閉じているリスト(クローズドリスト)」は選択肢のようなもので、例えば「休暇」エンティティを定義するとこんな感じになる。
ちなみに「シノニム」は同義語のことで、有給休暇のシノニムはこんな感じ。
そしてもう1個が「正規表現」で作るエンティティ。日本の郵便番号(ハイフンありなしどちらも対応)を作ると、このような正規表現のエンティティになる。
スロット充填
スロット充填は、ユーザーからのメッセージの中から「定義したエンティティ」の情報を抽出し、変数に代入する機能。
※基本的にスロット充填は「質問する」アクションで行う。
※基本的にスロット充填は「質問する」アクションで行う。
言葉で説明するよりやってみた方が早いので、生成AIをオフにしたエージェントに「休暇申請を受け付けるトピック」を作ってみる。
※スロット充填の公式はこちら
エンティティの作成と使用 (ビデオを含む) - Microsoft Copilot Studio
エンティティを使用して、カスタム リスト、情報タイプのマッピング、プロアクティブなスロット入力を許可することにより、ボットの会話を合理化できます。
サンプル「休暇申請受付エージェント」構築
構築
まずエンティティは先ほど作成した「休暇」エンティティと、
事前構築済みの「日付」と「期間」エンティティを使用する。
トピックを追加して、適当なフレーズを設定。
そしたらまずは「休暇種別」のスロット充填。
「どの休暇を取りますか?」という質問をして、その回答をオプション(有給休暇、育児休暇など)から選ばせ、選んだ値を変数(今回はtype)に代入する。
「どの休暇を取りますか?」という質問をして、その回答をオプション(有給休暇、育児休暇など)から選ばせ、選んだ値を変数(今回はtype)に代入する。
続いて日付のスロット充填。
「いつから取りますか?」という質問で、回答から「日付」を取り出し、変数(今回はstart)に代入する。
「いつから取りますか?」という質問で、回答から「日付」を取り出し、変数(今回はstart)に代入する。
そして期間のスロット充填。
「何日間取りますか?」という質問で、回答から「期間」を抽出して、変数(今回はdays)に入れる。
「何日間取りますか?」という質問で、回答から「期間」を抽出して、変数(今回はdays)に入れる。
最後に抽出した情報を使用してメッセージを送信して完成。
※本当はこのあと「yes or no」を聞いて、Power Automateで「休暇残数確認」とか「休暇申請フロー(承認アクションの実行)」とかやるんだけど、今回はサンプルなので省略。
※本当はこのあと「yes or no」を聞いて、Power Automateで「休暇残数確認」とか「休暇申請フロー(承認アクションの実行)」とかやるんだけど、今回はサンプルなので省略。
動作確認
「休暇を取得したい」みたいなメッセージでトピックを起動すると、休暇種類の質問が来るので、
「有給休暇」と答えると、続いて日付と期間のエンティティの質問が来る、
全部の質問にこたえると、無事各質問の回答から抽出した値が変数に代入される。
ちなみにこんな感じでくだけた表現をしてもスロット充填は成功する。
ということで、ユーザーとのやり取りで必要な情報を定義するのが「エンティティ」で、実際の会話の中でそれらの値を抽出していくのがスロット充填。
おまけ:カスタムエンティティはエージェントごとの管理で、ソリューションに含めることも可能。
カスタムエンティティは「エージェント毎」につくられて、ソリューションの中に含めることができるので、ALMにのせることも(たぶん)可能。
2024/12/30追記:スロット充填で情報の抽出がうまくいかない場合は、AI Builderのプロンプトを使うのもあり。
Copilot Studio プロンプトアクションで日本語特有の情報を抽出する|AI Builder
スロット充填で情報の抽出がうまくいかないときや、応用的な情報の抽出がしたい場合はAI Builderのプロンプトが便利。スロット充填がうまくいかないケース前回の記事で「スロット充填」を紹介したが、このスロット充填での情報の抽出があまりうまく...
コメント