コパイロットでエンティティとスロット フィリングを使用する

Copilot Studio におけるコパイロットの会話の需要な部分は、自然言語理解です。これは、AI がユーザーの意図を理解するための機能です。 たとえば、ユーザーが 「ギフト カードを使用しようとしましたが、うまくいきません」 と言った場合、全く同じフレーズがトリガー フレーズとして含まれていなくても、コパイロットはギフト カードが使えないことに関連したトピックにユーザーをルーティングすることがわかります。

自然言語の理解の基本的な側面の 1 つに、ユーザーの対話の中でのエンティティの特定があります。 エンティティの使用については、ビデオをご覧ください。

エンティティは、電話番号、郵便番号、市町村、個人名など、特定のタイプの現実世界の項目を表す情報の単位と考えることができます。 エンティティによって付与された知識で、コパイロットはユーザー入力からの関連情報をスマートに認識し、後で使用するために保存できます。

事前構築済みエンティティ

コパイロットのエンティティを使用すると、同様のグループに情報を保存できます。

初期状態の Copilot Studio には、年齢、色、数、名前など、実際のダイアログで最も一般的に使用され情報を表す、事前に作成されたエンティティのセットが付属しています。

エンティティによって付与された知識で、コパイロットはユーザー入力からの関連情報をスマートに認識し、後で使用するために保存できます。

その概念の理解を助けるために、お金エンティティを例として使用できます。

  1. Copilot Studio でコパイロットを開き、ページ上部の 設定 を選択してから、メニューの エンティティ を選択します。

    エンティティタブに移動します。

    使用可能な事前構築済みエンティティのリストが表示されます。

    エンティティ ウィンドウ。

  2. お金 エンティティを選択します。エンティティの詳細ペインが開きます。

    お金エンティティの説明。

ここでは、このエンティティの説明と、ユーザー入力からお金や通貨に関連する情報を検索するために使用できる方法を確認できます。

たとえば、ユーザーが「1000 ドルかかる」と入力すると、コパイロットは「1000 ドル」と分かるマネー エンティティを使用して、お金の種類についての情報を表示します。 コパイロットがこのエンティティを抽出して変数に保存すると、周囲の情報がテキストであったとしても、「1000」が数値として保存されます。

ユーザー定義エンティティ

事前構築済みのエンティティでは、一般的に使用される情報タイプがカバーされます。 一部の場合では、特定の目的に役立つコパイロットを構築するときなど、場合によっては、コパイロットの言語理解モデルにドメイン固有の知識を教える必要があります。

たとえば、アウトドア ストア用のコパイロットを構築するとします。 この場合、ダイアログで「アウトドア用品」カテゴリを認識するようにコパイロットに教える必要があります。

まず、ユーザー定義エンティティを作成します。 この場合、コパイロットにすべてのアウトドア製品カテゴリの情報を提供するエンティティを作成できます。

  1. Copilot Studio でコパイロットを開き、ページ上部の 設定 を選択してから、メニューの エンティティ を選択します。

  2. エンティティの追加>新しいエンティティ を選択します。

    新しいエンティティを選択します。

  3. エンティティ (閉じているリスト エンティティ または正規表現 (regex) エンティティ) のタイプを選択できる新しいペインが開きます。

クローズド リスト エンティティ

クローズド リスト エンティティを使用すると、アイテムのリストを定義できます。 これらのエンティティは、管理が容易で、シンプルなアイテム ラベルを持つ小規模なリストに最適です。

クローズド リスト オプションが強調表示された、エンティティ作成ウィンドウのスクリーンショット。

エンティティの作成時にこのオプションを選択すると、エンティティの名前、オプションの説明を指定し、エンティティに含めるアイテムを入力できるペインが表示されます。

エンティティ リスト ペインのスクリーンショット。

アイテムを入力すると、次のことが可能となります:

  • 各アイテムを選択して名前を変更する。
  • ごみ箱アイコンを選択して、リストからアイテムを削除する。
  • + 同義語 を選択 (または、リストされている同義語がすでに追加されている場合はその同義語を選択) し、同義語の編集 ペインを開きます。

同義語を追加して、エンティティのリストの各項目の一致ロジックを手動で展開することができます。 たとえば、「ハイキング」の項目では、「トレッキング」と「登山」を同義語として追加できます。

シノニムの編集ペインのスクリーンショット。

エンティティごとに スマート マッチング を有効にすることもできます。

スマート マッチングは、コパイロットの言語理解モデルが対応するインテリジェンスの一部です。 このオプションを有効にすると、コパイロットは、エンティティ内のリストされた項目に基づいて、ファジー ロジックを使用してユーザーの入力を解釈します。

特に、コパイロットはスペルミスを自動修正し、マッチングのロジックを意味的に拡張します。 たとえば、コパイロットは「ソフトボール」を「野球」に自動的に一致させることができます。

スマート マッチング オプションのトグルのスクリーンショット。

エンティティの作成または編集が完了したら、保存を選択して保存し、エンティティの一覧に戻ります。 閉じる を選択すると、変更内容が破棄されます (誤って間違ったオプションを選択した場合には、エンティティの編集に戻るオプションが表示されます)。

正規表現 (regex) エンティティ

正規表現 (regex) エンティティを使用すると、入力から情報を照合および抽出するために使用できる論理パターンを定義できます。 regex エンティティは、ユーザーの入力に対して複雑なパターンのマッチングを行う場合や、ユーザーが会話の中でどのようなフォーマットや入力をするかの特定のバリエーションを許可する必要がある場合に最適です。

たとえば、正規表現エンティティを使用して、追跡 ID、ライセンス番号、クレジット カード番号、IP アドレスなどの項目を、ユーザーがコパイロットに入力した文字列から識別できます。

Regex オプションが強調表示された、エンティティ作成ウィンドウのスクリーンショット。

エンティティの作成時にこのオプションを選択すると、エンティティの名前、オプションの説明を指定し、入力のエンティティ アイテムと照合して抽出するために使用する正規表現パターンを入力できるペインが表示されます。

正規表現エンティティ ペインのスクリーンショット。

Copilot Studio regex エンティティは .NET 正規表現構文を使用します。

既定では、パターン マッチは大文字と小文字を区別しますが、大文字と小文字を区別しないようにするには、パターン文字列に (?i) の正規表現オプションを使用します。 いくつかの基本的な例が正規表現エンティティ ペインに含まれています。構文に関する追加情報とその他の例は、正規表現言語 - クイック リファレンス トピックを参照してください。

正規表現に複数のパターンを対応させる必要がある場合は、正規表現の連結に交互演算子 | を使用できます。 たとえば、2 つの正規表現パターンを組み合わせて、製品 ID コードの新旧両方の形式を検索することができます。

エンティティの作成または編集が完了したら、保存を選択して保存し、エンティティの一覧に戻ります。 閉じる を選択すると、変更内容が破棄されます (誤って間違ったオプションを選択した場合には、エンティティの編集に戻るオプションが表示されます)。

会話でのエンティティの使用

これで、その製品カテゴリ エンティティと他のいくつかのカスタム エンティティを作成することで、コパイロットにアウトドア用品に関する知識を与える作業が完了したので、コパイロットの会話を構築するときにそれらの使用開始が可能です。

  1. 編集するコパイロット用の トピック ページに移動します。

  2. 収集するエンティティの トピック を開きます。

  3. ノードの追加 アイコン を選択し、質問をする を選択します。

  4. 識別するの下で、カスタム エンティティ に作成したエンティティを選択します。

    エンティティの選択で質問ノード。

  5. オプションとして、アイテムを選択し、ボタンとして表示することもできます。 たとえば、ユーザーが入力として便利に選択できるボタンのようにいくつかのカテゴリを表示したい場合は、簡単に ユーザーにオプションを選択 を選び、カスタム エンティティの作成時に追加した項目を含むリストからそれらを選択できます。

    実行時にボタンとして表示されるエンティティ値の選択を示すスクリーンショット。

  6. 必要に応じて、ユーザーの応答を出力する変数に名前を付けます。

スロット埋込み

スロット埋込み とは、自然言語理解の概念であり、抽出されたエンティティをオブジェクトに保存することを意味します。 ただし、Copilot Studio では、スロット埋込みとは、抽出されたエンティティ値を変数に配置することを意味します。

テスト チャットで "何か購入したい" と入力するとトリガーされる例として、キャンピング活動のトピックを引き続き使用します。

トピックが正常にトリガーされ、コパイロットが活動のタイプを要求し、質問するノードのオーサリング時に指定されたボタンの選択肢も表示します。 ダイアログ ツリーでは、トピック間の追跡は、編集したばかりの質問ノードに対して、コパイロットが実行されていることも示します。

トピック間の追跡。

ユーザーは、ボタンの 1 つを選択することにより、事前定義された選択肢を使用できます。 あるいは、これらの単語は同義語として定義されているため、「トレッキング」のような単語を入力して、「ハイキング」にマッピングされることも確認できます。

トピック間の追加の追跡。

トピック間のトレッキングで、ダイアログは製品カテゴリ値が「ハイキング」であるパスに正しくルーティングされていることを示しています。 作成キャンバスの下部の変数ウォッチ ウィンドウから、変数値を調べることができます。 ウォッチ ウィンドウで、変数値が「ハイキング」であることを示します。

基本的に、抽出されたエンティティ「ハイキング」を変数 VarCampType に挿入することにより、スロットが埋められます。

変数ウォッチ ウィンドウ。

また、ユーザーが複数のエンティティにマップする複数の情報を指定できる「プロアクティブ スロット フィル」と呼ばれるものを使用することもできます。 コパイロットは、どの情報がどのエンティティに属しているかを自動的に理解できます。 意図したマッピングが不明な場合は、選択肢を提供することで、ユーザーをより具体的にするよう求められます。

この例では、ユーザーは「退屈だけど登山が好き」と書いています。このメッセージには、ユーザーが屋外活動に関する支援を求めていることを示すトリガー フレーズと、ハイキングのエンティティ定義の同義語である 「登山」 という 2 番目の情報が含まれています。 この場合、コパイロットはアウトドア活動と活動のタイプの両方のエンティティを入力します。

複数の積極的なスロット充填。

トピック間のトラッキングでは、コパイロットがこのユーザー入力を受け取り、活動のタイプを求める質問ノードをインテリジェントにスキップすることがわかります。

コパイロットは常にユーザー入力を積極的にリスニングしており、事前に情報を記憶しているため、必要に応じて不要な手順をスキップできます。

もう一度テストを再開して、別のケースを試してみましょう。 このラウンドでは、その活動のためにどれくらいの時間があるか (期間 エンティティを使用して) と価格範囲 (お金 エンティティを使用して) のようなものをを求める質問ノードをさらにいくつか追加できます。

今回は製品カテゴリの質問が表示されるので、製品カテゴリのみをコパイロットに伝える代わりに、「$100 未満でトレッキング シューズを購入したい」とユーザーは言うことができます。 この例では、コパイロットは正しいハイキング製品カテゴリ パスにルーティングできるだけでなく、ハイキング用品の種類および対象となる価格範囲の情報を尋ねることでスロットに積極的に充填します。

製品と価格カテゴリ用のトピック間の追跡。

プロアクティブなスロット埋込みは、ノード レベルで手動で制御できます。 特定のノード内で質問を常に求めたい場合は、以前のユーザー応答によってスロットが埋められたかどうかに関係なく、質問ノードの質問をスキップオプションを無効にできます。 無効にするには、質問をスキップ オプションの手順を実行してください。

  1. 質問 ノードのその他アイコン () を選択し、プロパティ を選択します。 質問プロパティ パネルが表示されます。

    質問のプロパティ パネルを開きます。

  2. 質問のプロパティ パネルで、質問行動 を選択します。

  3. 質問行動 パネルの 質問をスキップする で、毎回尋ねる を選択し、ページの上部にある 保存を選択します。

    質問をスキップ。