GenerateAnswer API を使って回答を取得する

ユーザーの質問に対して予測される回答を取得するには、GenerateAnswer API を使用します。 ナレッジ ベースを公開するときに、 [公開] ページにこの API を使用する方法に関する情報が表示されます。 また、メタデータ タグに基づいて回答をフィルター処理するように API を構成し、テスト クエリ文字列パラメーターを使用してエンドポイントからナレッジ ベースをテストすることも可能です。

Note

QnA Maker サービスは、2025 年 3 月 31 日に廃止される予定です。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。 言語サービス内の質問応答機能については、質問応答に関する記事を参照してください。 QnA Maker の新しいリソースは、2022 年 10 月 1 日以降作成できません。 既存の QnA Maker のナレッジ ベースを質問応答に移行する方法については、移行ガイドを参照してください。

GenerateAnswer API を使用して回答の予測を取得する

ボットやアプリケーションで GenerateAnswer API を使用して、ユーザーの質問についてナレッジ ベースのクエリを実行し、質問と回答のペアから最も一致するものを取得します。

Note

このドキュメントは、最新のリリースには適用されません。 最新の質問応答 API の使用については、質問応答クイックスタート ガイドに関する記事を参照してください。

公開して GenerateAnswer エンドポイントを取得する

ナレッジ ベースを公開したら、QnA Maker ポータルから、または API を使用して、GenerateAnswer エンドポイントの詳細を取得することができます。

エンドポイントの詳細を取得するには、次のようにします。

  1. https://www.qnamaker.ai にサインインします。

  2. [My knowledge bases] (マイ ナレッジ ベース) で、ご利用のナレッジ ベースの [コードの表示] をクリックします。 ナレッジ ベースのスクリーンショット

  3. GenerateAnswer エンドポイントの詳細を取得します。

    エンドポイントの詳細のスクリーンショット

エンドポイントの詳細は、ナレッジ ベースの [設定] タブから取得することもできます。

GenerateAnswer 要求の構成

HTTP POST 要求で GenerateAnswer を呼び出します。 GenerateAnswer を呼び出す方法を示すサンプル コードについては、クイック スタートを参照してください。

POST 要求では以下を使用します。

GenerateAnswer の URL は次の形式になります。

https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer

文字列 EndpointKey の値と末尾のスペースを含めて、HTTP ヘッダー プロパティ Authorization を必ず設定してください。エンドポイント キーは、 [設定] ページで確認できます。

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 Success
400 "要求のパラメーターが正しくない" とは、必須パラメーターが見つからない、形式が正しくない、または大きすぎることを意味します
400 "要求の本文が正しくない" とは、JSON が見つからない、形式が正しくない、または大きすぎることを意味します
401 無効なキー
403 禁止されています - アカウントに適切なアクセス許可がありません
404 KB が存在しません
410 この API は非推奨であり、現在は利用できません

次のステップ

[発行] ページでは、Postman または cURL を使用して回答を生成するための情報も提供されます。