Copilot Studio エンティティとスロット充填(スロット埋込み)|会話内の情報の「型定義」と「抽出」

Copilot Studioの「エンティティ」と「スロット充填(スロット埋込み)」について調べたのでメモ。

スポンサーリンク

エンティティ

エンティティは「型定義」に似ていて、「電話番号」とか「郵便番号」とかの「情報の単位を定義」する機能。

※ややこしいけどDataverseのテーブルの旧名称「エンティティ」とは別物。

エンティティにはCopilot Studio側で用意してくれている、事前構築済みエンティティ(郵便番号、日時、メール、など)と、
※郵便番号とかはアメリカの形式だから日本で使うエージェントでは使えないけど。。
自分で型を定義する、カスタムエンティティがある。

カスタムエンティティ

自分で定義するカスタムエンティティには2種類のつくり方がある。

1つ目の「閉じているリスト(クローズドリスト)」は選択肢のようなもので、例えば「休暇」エンティティを定義するとこんな感じになる。
ちなみに「シノニム」は同義語のことで、有給休暇のシノニムはこんな感じ。
そしてもう1個が「正規表現」で作るエンティティ。日本の郵便番号(ハイフンありなしどちらも対応)を作ると、このような正規表現のエンティティになる。

スロット充填

スロット充填は、ユーザーからのメッセージの中から「定義したエンティティ」の情報を抽出し、変数に代入する機能。
※基本的にスロット充填は「質問する」アクションで行う。
言葉で説明するよりやってみた方が早いので、生成AIをオフにしたエージェントに「休暇申請を受け付けるトピック」を作ってみる。

サンプル「休暇申請受付エージェント」構築

構築

まずエンティティは先ほど作成した「休暇」エンティティと、
事前構築済みの「日付」と「期間」エンティティを使用する。
トピックを追加して、適当なフレーズを設定。
そしたらまずは「休暇種別」のスロット充填。
「どの休暇を取りますか?」という質問をして、その回答をオプション(有給休暇、育児休暇など)から選ばせ、選んだ値を変数(今回はtype)に代入する。
続いて日付のスロット充填。
「いつから取りますか?」という質問で、回答から「日付」を取り出し、変数(今回はstart)に代入する。
そして期間のスロット充填。
「何日間取りますか?」という質問で、回答から「期間」を抽出して、変数(今回はdays)に入れる。
最後に抽出した情報を使用してメッセージを送信して完成。
※本当はこのあと「yes or no」を聞いて、Power Automateで「休暇残数確認」とか「休暇申請フロー(承認アクションの実行)」とかやるんだけど、今回はサンプルなので省略。

動作確認

「休暇を取得したい」みたいなメッセージでトピックを起動すると、休暇種類の質問が来るので、
「有給休暇」と答えると、続いて日付と期間のエンティティの質問が来る、
全部の質問にこたえると、無事各質問の回答から抽出した値が変数に代入される。
ちなみにこんな感じでくだけた表現をしてもスロット充填は成功する。

ということで、ユーザーとのやり取りで必要な情報を定義するのが「エンティティ」で、実際の会話の中でそれらの値を抽出していくのがスロット充填。

おまけ:カスタムエンティティはエージェントごとの管理で、ソリューションに含めることも可能。

カスタムエンティティは「エージェント毎」につくられて、ソリューションの中に含めることができるので、ALMにのせることも(たぶん)可能。

関連記事

コメント

タイトルとURLをコピーしました