質問応答を使用して質問に回答する
この記事の対象: SDK v4
Azure Cognitive Service for Language による質問応答は、データをもとに自然な会話レイヤーを作成できる、クラウドベースの自然言語処理 (NLP) を提供します。 これは、任意の入力に対して、カスタム ナレッジ ベースの情報から最も適切な回答を見つける目的で使用されます。
この記事では、ボットで質問応答の機能を使用する方法について説明します。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- カスタム質問応答機能が有効になっている、Language Studio の言語リソース。
- C# または JavaScript で作成されたカスタム質問応答サンプルのコピー。
このサンプルについて
ボットで質問応答を使用するには、既存のサポート技術情報が必要です。 これで、ボットからナレッジ ベースを使用してユーザーの質問に回答できるようになります。
Bot Framework SDK ボットの新しいサポート技術情報を作成する必要がある場合は、カスタムの質問応答するサンプルの README を参照してください。
ユーザー入力を受け取るたびに、OnMessageActivityAsync
が呼び出されます。 呼び出されると、サンプル コードの appsetting.json ファイルから構成設定にアクセスし、サポート情報に接続します。
ユーザーの入力はナレッジ ベースに送信され、返された最適な回答が、該当するユーザーに表示されます。
サポート技術情報の接続設定を取得する
[Language Studio] で、言語リソースを開きます。
ボットの構成ファイルに以下の情報をコピーします。
- 言語エンドポイントのホスト名。
- エンドポイント キーの
Ocp-Apim-Subscription-Key
。 - サポート技術情報 ID として機能するプロジェクト名。
ホスト名は、https://
と /language
の間のエンドポイント URL の一部です (例: https://<hostname>/language
)。 ボットがサポート技術情報に接続するには、プロジェクト名、ホスト URL、エンドポイント キーが必要です。
ヒント
これを運用環境にデプロイしない場合、ボットのアプリ ID とパスワードのフィールドは空白にできます。
サポート情報 クライアントを設定して呼び出す
サポート情報 クライアントを作成し、クライアントを使用してサポート情報から回答を取得します。
NuGet パッケージ Microsoft.Bot.Builder.AI.QnA がプロジェクトにインストールされていることを確認します。
QnABot.cs の OnMessageActivityAsync
メソッドで、サポート技術情報クライアントを作成します。 ターン コンテキストを使用して、サポート情報のクエリを実行します。
Bots/CustomQABot.cs
using var httpClient = _httpClientFactory.CreateClient();
var customQuestionAnswering = CreateCustomQuestionAnsweringClient(httpClient);
// Call Custom Question Answering service to get a response.
_logger.LogInformation("Calling Custom Question Answering");
var options = new QnAMakerOptions { Top = 1, EnablePreciseAnswer = _enablePreciseAnswer };
var response = await customQuestionAnswering.GetAnswersAsync(turnContext, options);
ボットのテスト
ご自身のマシンを使ってローカルでサンプルを実行します。 Bot Framework Emulator をインストールします (まだインストールしていない場合)。 詳しい手順については、サンプルの README
(C# または JavaScript) を参照してください。
エミュレーターを起動し、ボットに接続して、ボットにメッセージを送信します。 質問に対する回答は、サポート技術情報の情報に基づいて異なります。
追加情報
カスタム質問応答、すべての機能のサンプル (C# または JavaScript) では、QnA Maker ダイアログを使用して、サポート情報のフォローアップ プロンプトとアクティブ ラーニング機能をサポートする方法を示します。
- 質問応答は、マルチターン プロンプトとも呼ばれるフォローアップ プロンプトをサポートしています。 サポート技術情報がユーザーからの追加情報を必要とする場合、サービスはユーザーにプロンプトを表示するために使用できるコンテキスト情報を送信します。 この情報は、サービスへのフォローアップの呼び出しを行うためにも使用されます。
- 質問応答はアクティブな学習提案もサポートしているため、ナレッジ ベースを徐々に改善できます。 QnA Maker ダイアログは、アクティブな学習機能に対する明示的なフィードバックをサポートしています。