スロット充填で情報の抽出がうまくいかないときや、応用的な情報の抽出がしたい場合はAI Builderのプロンプトが便利。
スロット充填がうまくいかないケース
前回の記事で「スロット充填」を紹介したが、このスロット充填での情報の抽出があまりうまくいかないことがある。
例えば「日本人の名前」が意外と難しくて、「個人名」エンティティは用意されているけど、見ての通り海外の方の名前が定義されているので、
このエンティティを使って日本人の名前の抽出を試みると、
残念ながらアルファベットで抽出されてしまう。
また複数名を抽出することもできなくて、2人以上を入力すると、どちらか選択を迫られる。
「日本人名のエンティティの作成」も「複数の情報の抽出」もできるのかもしれないけど、ぱっと情報が見つからなかったので、AI Builderのプロンプトを使って簡単に構築してみた。
AI Builderの「プロンプト」を使用した情報抽出
まず、先ほどの質問の「特定」を「ユーザーの応答全体」にして、エンティティの抽出を行わず変数にメッセージをそのまま代入する。
続いて質問ノードの次に[アクションを呼び出す]から[プロンプトの作成]を選択し、
編集ポップアップが開いたら、こんな感じで適当なプロンプトを入力し、右上の[追加]を押して、
引数として[テキスト]を選択。
適当な引数名を付けて[入力を追加する]を押す。
入力が追加されたことを確認したら、続いて右側の出力アイコンを押して、[JSON]を選択し[編集]を押す。
すると構造化出力の設定が開くので、配列で日本人名を出力するよう指定して、[適用]からの[保存]を押す。
※AI Builderの構造化出力についてはこちら
AI Builder 「GPTでプロンプトを使用してテキストを作成する」に、構造化出力(JSON出力)が追加された
AIBuilderに構造化出力のような機能が追加されたので試してみた。JSON出力とはJSON出力(構造化出力)は、ざっくりいうと「LLMの回答を、指定したJSON形式のデータに指定する」こと。今までは以下のようなプロンプトで出力を指定して...
そしたらCopilot Studioに戻って、「プロンプト」ノードへの入力に先ほど質問で保存した「ユーザーのメッセージ」を入れて、変数(今回はresult)に出力を格納する。
最後に変数resultの中のtextプロパティを表示するよう設定して、構築は完了。
動作確認
先ほどの会話の流れで日本人を3人指定してみると、こんな感じでオブジェクト配列で情報を取得することができる。
あとはこの文字列をPower Automateとかに送って、「JSONの解析」にかければ他のアクション(今回は会議設定)につなげることができる。
あとはこの文字列をPower Automateとかに送って、「JSONの解析」にかければ他のアクション(今回は会議設定)につなげることができる。
ということで、スロット充填で抽出するのが難しい情報があるときはAI Builderを使うと簡単に抽出することができる。
おまけ:抽出がうまくいかないときはGPT-4oを使うのもあり
AI Builderのプロンプトは、既定でGPT-4o miniを使うようになってるけど、思った通りに情報が抽出できないときはGPT-4oを試してみるのもあり。
コメント