ユーザーの質問に対して予測される回答を取得するには、GenerateAnswer API を使用します。 ナレッジ ベースを公開するときに、 [公開] ページにこの API を使用する方法に関する情報が表示されます。 また、メタデータ タグに基づいて回答をフィルター処理するように API を構成し、テスト クエリ文字列パラメーターを使用してエンドポイントからナレッジ ベースをテストすることも可能です。
注
QnA Maker サービスは、2025 年 3 月 31 日に廃止される予定です。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。 言語サービス内の質問応答機能については、質問応答に関する記事を参照してください。 QnA Maker の新しいリソースは、2022 年 10 月 1 日以降作成できません。 既存の QnA Maker のナレッジ ベースを質問応答に移行する方法については、移行ガイドを参照してください。
GenerateAnswer API を使用して回答の予測を取得する
ボットやアプリケーションで GenerateAnswer API を使用して、ユーザーの質問についてナレッジ ベースのクエリを実行し、質問と回答のペアから最も一致するものを取得します。
注
このドキュメントは、最新のリリースには適用されません。 最新の質問応答 API の使用については、質問応答クイックスタート ガイドに関する記事を参照してください。
公開して GenerateAnswer エンドポイントを取得する
ナレッジ ベースを公開したら、QnA Maker ポータルから、または API を使用して、GenerateAnswer エンドポイントの詳細を取得することができます。
エンドポイントの詳細を取得するには、次のようにします。
https://www.qnamaker.ai にサインインします。
[My knowledge bases] (マイ ナレッジ ベース) で、ご利用のナレッジ ベースの [コードの表示] をクリックします。
GenerateAnswer エンドポイントの詳細を取得します。
エンドポイントの詳細は、ナレッジ ベースの [設定] タブから取得することもできます。
GenerateAnswer 要求の構成
HTTP POST 要求で GenerateAnswer を呼び出します。 GenerateAnswer を呼び出す方法を示すサンプル コードについては、クイック スタートを参照してください。
POST 要求では以下を使用します。
- 必須の URI パラメーター
- セキュリティを確保するために必須のヘッダー プロパティ (
Authorization
) - 必須の本文プロパティ
GenerateAnswer の URL は次の形式になります。
https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer
文字列 Authorization
の値と末尾のスペースを含めて、HTTP ヘッダー プロパティ EndpointKey
を必ず設定してください。エンドポイント キーは、 [設定] ページで確認できます。
JSON 本文の例は、次のようになります。
{
"question": "qna maker and luis",
"top": 6,
"isTest": true,
"scoreThreshold": 30,
"rankerType": "" // values: QuestionOnly
"strictFilters": [
{
"name": "category",
"value": "api"
}],
"userId": "sd53lsY="
}
rankerType の詳細について確認してください。
以前の JSON では、30% のスコアまたはしきい値のスコア以上の回答のみが要求されました。
GenerateAnswer の応答プロパティ
応答は、回答と会話の次のターン (使用可能な場合) を表示するために必要なすべての情報を含む JSON オブジェクトです。
{
"answers": [
{
"score": 38.54820341616869,
"Id": 20,
"answer": "There is no direct integration of LUIS with QnA Maker. But, in your bot code, you can use LUIS and QnA Maker together. [View a sample bot](https://github.com/Microsoft/BotBuilder-CognitiveServices/tree/master/Node/samples/QnAMaker/QnAWithLUIS)",
"source": "Custom Editorial",
"questions": [
"How can I integrate LUIS with QnA Maker?"
],
"metadata": [
{
"name": "category",
"value": "api"
}
]
}
]
}
以前の JSON では、スコアが 38.5% の回答で応答しました。
テキストによる質問のみの一致
既定では、QnA Maker は質問と回答を検索します。 質問のみを検索して、回答を生成する場合、GenerateAnswer 要求の POST 本文で RankerType=QuestionOnly
を使用します。
isTest=false
を使用して公開済みの KB を検索することも、isTest=true
を使用してテスト KB を検索することもできます。
{
"question": "Hi",
"top": 30,
"isTest": true,
"RankerType":"QuestionOnly"
}
C# のボットで QnA Maker を使用する
Bot Framework では、getAnswer API を使用して QnA Maker のプロパティへのアクセスを提供します。
using Microsoft.Bot.Builder.AI.QnA;
var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata();
var qnaOptions = new QnAMakerOptions();
metadata.Name = Constants.MetadataName.Intent;
metadata.Value = topIntent;
qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata };
qnaOptions.Top = Constants.DefaultTop;
qnaOptions.ScoreThreshold = 0.3F;
var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions);
以前の JSON では、30% のスコアまたはしきい値のスコア以上の回答のみが要求されました。
Node.js のボットで QnA Maker を使用する
Bot Framework では、getAnswer API を使用して QnA Maker のプロパティへのアクセスを提供します。
const { QnAMaker } = require('botbuilder-ai');
this.qnaMaker = new QnAMaker(endpoint);
// Default QnAMakerOptions
var qnaMakerOptions = {
ScoreThreshold: 0.30,
Top: 3
};
var qnaResults = await this.qnaMaker.getAnswers(stepContext.context, qnaMakerOptions);
以前の JSON では、30% のスコアまたはしきい値のスコア以上の回答のみが要求されました。
GenerateAnswer API を使用して正確な回答を得る
正確な回答機能は、QnA Maker マネージド バージョンでのみ提供しています。
一般的な HTTP エラー
コード | 説明 |
---|---|
2xx | 成功 |
400 | "要求のパラメーターが正しくない" とは、必須パラメーターが見つからない、形式が正しくない、または大きすぎることを意味します |
400 | "要求の本文が正しくない" とは、JSON が見つからない、形式が正しくない、または大きすぎることを意味します |
401 | 無効なキー |
403 | 禁止されています - アカウントに適切なアクセス許可がありません |
404 | KB が存在しません |
410 | この API は非推奨であり、現在は利用できません |
次のステップ
[発行] ページには、Visual Studio Code REST Client 拡張機能、または cURL を使用して回答を生成する情報も表示されます。