Abrufen einer Antwort mit der GenerateAnswer-API

Um die vorhergesagte Antwort auf die Frage eines Benutzers zu erhalten, verwenden Sie die GenerateAnswer-API. Wenn Sie eine Wissensdatenbank veröffentlichen, werden Informationen zur Verwendung dieser API auf der Seite Veröffentlichen angezeigt. Sie können die API auch so konfigurieren, dass sie Antworten anhand von Metadatentags filtert, und Sie können die Wissensdatenbank vom Endpunkt aus mit dem Testabfrage-Zeichenfolgenparameter testen.

Abrufen von Antwortvorhersagen mit der GenerateAnswer-API

Sie verwenden die GenerateAnswer-API in Ihrem Bot oder Ihrer Anwendung, um Ihre Wissensdatenbank mit einer Benutzerfrage abzufragen und die beste Übereinstimmung aus den Frage-Antwort-Paaren zu erhalten.

Veröffentlichen am GenerateAnswer-Endpunkt

Nachdem Sie Ihre Wissensdatenbank im QnA Maker-Portal oder mithilfe der API veröffentlicht haben, können Sie die Details von Ihrem GenerateAnswer-Endpunkt abrufen.

So rufen Sie Endpunktdetails ab

  1. Melden Sie sich bei https://www.qnamaker.ai an.

  2. Klicken Sie in Meine Wissensdatenbanken für Ihre Wissensdatenbank auf Code anzeigen. Screenshot von „Meine Wissensdatenbanken“

  3. Rufen Sie Ihre GenerateAnswer-Endpunktdetails ab.

Sie können Ihre Endpunktdetails auch auf der Registerkarte Einstellungen Ihrer Knowledge Base abrufen.

GenerateAnswer-Anforderungskonfiguration

Sie rufen GenerateAnswer über eine HTTP POST-Anforderung auf. Beispielcode, der zeigt, wie GenerateAnswer aufgerufen wird, finden Sie unter Schnellstarts.

Die POST-Anforderung verwendet:

Die GenerateAnswer-URL weist das folgende Format auf:

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

Denken Sie daran, die HTTP-Header-Eigenschaft von Authorization auf folgenden Wert festzulegen: die Zeichenfolge EndpointKey mit einem nachgestellten Leerzeichen, gefolgt von dem Endpunktschlüssel, der sich auf der Seite Einstellungen befindet.

Ein JSON-Beispieltext sieht folgendermaßen aus:

{
    "question": "qna maker and luis",
    "top": 6,
    "isTest": true,
    "scoreThreshold": 30,
    "rankerType": "" // values: QuestionOnly
    "strictFilters": [
    {
        "name": "category",
        "value": "api"
    }],
    "userId": "sd53lsY="
}

Weitere Informationen zu „rankerType“ finden Sie hier.

Der vorherige JSON-Code forderte nur Antworten an, die 30 % oder mehr über dem Schwellenwert liegen.

GenerateAnswer-Antworteigenschaften

Die Antwort ist ein JSON-Objekt, das alle Informationen enthält, die Sie benötigen, um die Antwort sowie die nächste Reaktion in der Unterhaltung, falls verfügbar, anzuzeigen.

{
    "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"
                }
            ]
        }
    ]
}

Der vorherige JSON-Code gab eine Antwort mit dem Punktestand 38,5 % zurück.

Nur Fragen nach Textübereinstimmungen durchsuchen

Standardmäßig durchsucht QnA Maker Fragen und Antworten. Wenn Sie nur Fragen durchsuchen möchten, um eine Antwort zu generieren, verwenden Sie RankerType=QuestionOnly im POST-Text der GenerateAnswer-Anforderung.

Sie können mit isTest=false die veröffentlichte Wissensdatenbank oder mit isTest=true die Testwissensdatenbank durchsuchen.

{
  "question": "Hi",
  "top": 30,
  "isTest": true,
  "RankerType":"QuestionOnly"
}

Verwenden von QnA Maker mit einem Bot in C#

Das Bot-Framework bietet mit der getAnswer-API Zugriff auf die Eigenschaften von 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);

Der vorherige JSON-Code forderte nur Antworten an, die 30 % oder mehr über dem Schwellenwert liegen.

Verwenden von QnA Maker mit einem Bot in Node.js

Das Bot-Framework bietet mit der getAnswer-API Zugriff auf die Eigenschaften von 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);

Der vorherige JSON-Code forderte nur Antworten an, die 30 % oder mehr über dem Schwellenwert liegen.

Abrufen präziser Antworten mit der GenerateAnswer-API

Ein Feature für präzise Antworten ist nur in der verwalteten QnA Maker-Version enthalten.

Häufige HTTP-Fehler

Code Erklärung
2xx Erfolg
400 Die Parameter der Anforderung sind fehlerhaft, da die erforderlichen Parameter nicht vorhanden, falsch formatiert oder zu groß sind
400 Der Text der Anforderung ist fehlerhaft, da der JSON-Code nicht vorhanden, falsch formatiert oder zu groß ist
401 Ungültiger Schlüssel
403 Verboten – Sie verfügen nicht über die richtigen Berechtigungen
404 KB nicht vorhanden
410 Diese API ist veraltet und nicht mehr verfügbar.

Nächste Schritte

Die Seite Veröffentlichen enthält auch Informationen zum Generieren einer Antwort mit Postman oder cURL.