次の方法で共有


ボットに自然言語の理解を追加する

この記事の対象: SDK v4

Language Understanding (LUIS) は、2025 年 10 月 1 日に廃止されます。 2023 年 4 月 1 日以降は、新しい LUIS リソースを作成することはできません。 より新しいバージョンの言語理解が、現在、Azure AI Language の一部として提供されています。

Azure AI Language の機能である会話言語理解 (CLU) は、LUIS の更新バージョンです。 Bot Framework SDK での言語理解のサポートの詳細については、「自然言語の理解」を参照してください。

ユーザーの真意を会話と文脈から理解する能力は難しいタスクかもしれませんが、より自然な会話の印象をボットに与えることができます。 Language Understanding (LUIS) はクラウドベースの API サービスです。これを使用することで、ボットでユーザーのメッセージの意図が認識され、ユーザーのより自然な言葉が許容され、会話フローがより適切に指示されるようになります。

このトピックでは、LUIS を航空券予約アプリケーションに追加して、ユーザー入力に含まれるさまざまな意図やエンティティを認識する手順について説明します。

AI サービス、オーケストレーション、知識を選択してエージェントを構築するには、Microsoft 365 Agents SDK の使用を検討してください。 Agents SDK では、C#、JavaScript、または Python がサポートされています。 Agents SDK の詳細については、 aka.ms/agents を参照してください。 SaaS ベースのエージェント プラットフォームをお探しの場合は、 Microsoft Copilot Studio を検討してください。 Bot Framework SDK を使用して構築された既存のボットがある場合は、ボットを Agents SDK に更新できます。 Bot Framework SDK から Agents SDK への移行ガイダンスで、主要な変更と更新プログラムを確認できます。 Bot Framework SDK のサポート チケットは、2025 年 12 月 31 日の時点で提供されなくなります。

前提条件

このサンプルについて

このコア ボット サンプルでは、空港のフライト予約アプリケーションの例を示しています。 これは LUIS サービスを使用してユーザー入力を認識し、認識した最上位の LUIS の意図を返します。

この言語モデルには、Book FlightCancelNone という 3 つの意図が含まれています。 LUIS では、これらの意図を使用して、ユーザーがどのようなつもりでボットにメッセージを送信したかが理解されます。 また、この言語モデルでは、出発地や目的地の空港など、ユーザーの入力から LUIS で抽出できるエンティティも定義します。

ユーザー入力の処理が完了するたびに、DialogBot では UserStateConversationState の両方の現在の状態が保存されます。 必要な情報がすべて収集されると、コード サンプルによりデモの航空券予約が作成されます。 この記事では、このサンプルの LUIS 部分について説明します。 ただし、サンプルの一般的なフローは次のようになります。

  • 新しいユーザーが接続され、ようこそカードを表示すると、OnMembersAddedAsync が呼び出されます。
  • ユーザー入力を受け取るたびに、OnMessageActivityAsync が呼び出されます。

C# サンプルの構造のアウトラインを示すクラス図。

OnMessageActivityAsync モジュールは、Run ダイアログ拡張メソッドによって適切なダイアログを実行します。 そして、メイン ダイアログは、LUIS ヘルパー を呼び出して、最もスコアが高いユーザーの意図を見つけます。 ユーザー入力の最上位の意図によって "BookFlight" が返されると、ヘルパーは LUIS によって返されたユーザー情報を入力します。 その後、メイン ダイアログは BookingDialog を開始し、これにより、必要に応じて次のような追加情報をユーザーから取得します。

  • Origin 出発地
  • TravelDate 航空券の予約日
  • Destination 到着地

この記事では、ボットに LUIS を追加する方法について説明します。 ダイアログまたは状態の使用については、ダイアログ プロンプトを使用してユーザー入力を収集する方法に関するページまたは「ユーザーおよび会話データを保存する」をそれぞれ参照してください。

LUIS ポータルでの LUIS アプリの作成

  1. LUIS ポータルにサインインし、必要に応じてアカウントオーサリング リソースを作成します。
  2. LUIS[会話アプリ] ページで、[インポート] を選択し、[JSON としてインポート] を選択します。
  3. [新しいアプリのインポート] ダイアログで次のようにします。
    1. サンプルの CognitiveModels フォルダーにある FlightBooking.json ファイルを選択します。
    2. アプリの代替名として「FlightBooking」と入力し、[完了] をクリックします。
  4. サイトに、効果的な LUIS アプリの作成方法複合エンティティのアップグレードのダイアログが表示される場合があります。 これらのダイアログを閉じて、続行できます。
  5. アプリをトレーニングしてから、運用環境にアプリを発行します。 詳しくは、LUIS ドキュメントでアプリをトレーニング公開する方法をご覧ください。

エンティティを使用する理由

LUIS エンティティによって、ボットは標準の意図以外のイベントを理解できます。 これにより、ユーザーから追加情報を収集できるため、ボットは質問をしたり、よりインテリジェントに応答したりできます。 FlightBooking.json ファイルには、3 つの LUIS の意図である "Book Flight"、"Cancel"、および "None" の定義と共に、"From.Airport" や "To.Airport" などのエンティティのセットも含まれています。 これらのエンティティにより、ユーザーが新しい旅行の予約を要求したときに、LUIS は、そのユーザーの元の入力に含まれる追加情報を検出し、返すことができます。

LUIS アプリに接続するための値を取得する

LUIS アプリには、その発行後、ボットからアクセスできるようになります。 ボット内から LUIS アプリにアクセスするためには、いくつかの値を記録する必要があります。 その情報は、LUIS ポータルを使用して取得できます。

LUIS.ai ポータルからのアプリケーション情報の取得

設定ファイル (appsettings.json.env、または config.py) は、すべてのサービス参照を 1 か所にまとめる場所として機能します。 取得した情報は、次のセクションでこのファイルに追加されます。

  1. 発行済みの LUIS アプリを luis.ai から選択します。

  2. 発行済み LUIS アプリを開いた状態で [管理] タブを選択します。

  3. 左側の [設定] タブを選択し、[アプリケーション ID] に表示される値を <YOUR_APP_ID> として記録します。

    アプリケーション ID が表示されている [管理] ページのスクリーンショット。

  4. [Azure リソース][予測リソース] の順に選択します。 [場所 に表示される値を <YOUR_REGION> として、[主キー] に表示される値を <YOUR_AUTHORING_KEY> として記録します。

    場所と主キーが表示されている [管理] ページのスクリーンショット。

    または、オーサリング リソースにリージョンと主キーを使用することもできます。

設定ファイルを更新する

LUIS アプリにアクセスするために必要な情報 (アプリケーション ID、オーサリング キー、リージョンなど) を appsettings.json ファイルに追加します。 前の手順では、発行済みの LUIS アプリからこれらの値を取得しました。 API ホスト名は <your region>.api.cognitive.microsoft.com 形式にする必要があります。

appsetting.json

Warnung

探しているサンプルが移動したようです。 私たちはこれを解決することに取り組んでいますのでご安心ください。

LUIS アプリを使用するためのボットの構成

NuGet パッケージ Microsoft.Bot.Builder.AI.Luis がプロジェクトにインストールされていることを確認します。

LUIS サービスに接続するために、ボットは appsetting.json ファイルに追加された情報をプルします。 FlightBookingRecognizer クラスには、appsetting.json ファイルからのユーザーの設定に関するコードが含まれています。このクラスは、RecognizeAsync メソッドを呼び出すことで LUIS サービスにクエリを実行します。

FlightBookingRecognizer.cs

Warnung

探しているサンプルが移動したようです。 私たちはこれを解決することに取り組んでいますのでご安心ください。

FlightBookingEx.cs には、FromTo、および TravelDate を抽出するロジックが含まれています。これは、FlightBooking.cs から FlightBookingRecognizer.RecognizeAsync<FlightBooking> を呼び出したときに LUIS の結果を格納するために使用される部分クラス MainDialog.cs を拡張します。

CognitiveModels\FlightBookingEx.cs

Warnung

探しているサンプルが移動したようです。 私たちはこれを解決することに取り組んでいますのでご安心ください。

お客様のボットで使用するための LUIS の構成と接続が完了しました。

ボットのテスト

最新の Bot Framework Emulator をダウンロードしてインストールします

  1. ご自身のマシンを使ってローカルでサンプルを実行します。 手順については、README ファイル内の C# サンプルJS サンプル、または Python サンプルを参照してください。

  2. エミュレーターで、"パリを旅行する"、"パリからベルリンに移動する" などのメッセージを入力します。 FlightBooking.json ファイルの任意の発話を、意図 "Book flight" のトレーニングに使用します。

LUIS から返された最上位の意図が "Book flight" に解決されると、ボットは、旅行の予約を作成するための情報が十分に保存されるまでさらに質問を続けます。 予約を作成できたら、その予約情報をユーザーに返します。

この時点で、コードのボット ロジックはリセットされ、引き続き追加の予約を作成できます。

追加情報

LUIS の詳細については、LUIS のドキュメントを参照してください。

ヒント

SDK の別の部分では、別のエンティティ クラスまたは要素を定義します。 メッセージ エンティティについては、「エンティティとアクティビティの種類」を参照してください。