Een antwoord krijgen met de GenerateAnswer-API

Gebruik de GenerateAnswer-API om het voorspelde antwoord op de vraag van een gebruiker op te halen. Wanneer u een knowledge base publiceert, ziet u informatie over het gebruik van deze API op de pagina Publiceren. U kunt de API ook configureren om antwoorden te filteren op basis van metagegevenstags en de Knowledge Base testen vanaf het eindpunt met de parameter voor de testqueryreeks.

Notitie

Er is nu een nieuwere versie van de vraag- en antwoordfunctie beschikbaar als onderdeel van Azure Cognitive Service for Language. Zie documentatie voor Azure Cognitive Service for Language voor meer informatie. Zie Vraag beantwoorden voor mogelijkheden voor het beantwoorden van vragenin Language Service. Raadpleeg de migratiehandleiding voor informatie over het migreren van bestaande Knowledge Bases.

Antwoordvoorspellingen krijgen met de GenerateAnswer-API

U gebruikt de GenerateAnswer-API in uw bot of toepassing om een query uit te voeren op uw Knowledge Base met een gebruikersvraag om de beste overeenkomst te krijgen uit de vraag- en antwoordparen.

Notitie

Deze documentatie is niet van toepassing op de nieuwste versie. Raadpleeg de quickstart over het beantwoorden van vragen voor meer informatie over het gebruik van de meest recente API'svoor het beantwoorden van vragen.

Publiceren om het GenerateAnswer-eindpunt op te halen

Nadat u uw knowledge base hebt gepubliceerd, via de QnA Maker-portalof met behulp van de API, kunt u de details van uw GenerateAnswer-eindpunt op halen.

Ga als volgende te werk om uw eindpuntdetails op te halen:

  1. Meld u aan bij https://www.qnamaker.ai.

  2. Selecteer in Mijn knowledge bases code weergeven voor uw Knowledge Base. Schermopname van Mijn knowledge bases

  3. Haal de details van uw GenerateAnswer-eindpunt op.

    Schermopname van eindpuntdetails

U kunt uw eindpuntgegevens ook op het tabblad Instellingen van uw Knowledge Base.

Configuratie van GenerateAnswer-aanvraag

U roept GenerateAnswer aan met een HTTP POST-aanvraag. Zie de quickstarts voor voorbeeldcode die laat zien hoe u GenerateAnswer aanroept.

De POST-aanvraag maakt gebruik van:

De GenerateAnswer-URL heeft de volgende indeling:

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

Vergeet niet om de HTTP-header-eigenschap van in te stellen op een waarde van de tekenreeks met een spatie aan het einde en vervolgens de eindpuntsleutel op de Authorization EndpointKey Instellingen vinden.

Een voorbeeld van een JSON-body ziet er als voorbeeld uit:

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

Meer informatie over rankerType.

In de vorige JSON zijn alleen antwoorden opgevraagd die 30% of hoger zijn dan de drempelwaarde.

GenerateAnswer-antwoordeigenschappen

Het antwoord is een JSON-object met alle informatie die u nodig hebt om het antwoord weer te geven en de volgende beurt in het gesprek, indien beschikbaar.

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

De vorige JSON heeft gereageerd met een antwoord met een score van 38,5%.

Alleen overeenkomende vragen, op tekst

Standaard worden QnA Maker door de vragen en antwoorden gezocht. Als u alleen vragen wilt doorzoeken om een antwoord te genereren, gebruikt u de in de RankerType=QuestionOnly POST-body van de GenerateAnswer-aanvraag.

U kunt zoeken in de gepubliceerde kb, met isTest=false behulp van , of in de testkb met behulp van isTest=true .

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

Een QnA Maker met een bot in C

Het bot-framework biedt toegang tot QnA Maker eigenschappen van de bot met de getAnswer-API:

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);

In de vorige JSON zijn alleen antwoorden opgevraagd die 30% of hoger zijn dan de drempelwaarde.

Gebruik QnA Maker met een bot in Node.js

Het bot-framework biedt toegang tot QnA Maker eigenschappen van de bot met de getAnswer-API:

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);

In de vorige JSON zijn alleen antwoorden opgevraagd die 30% of hoger zijn dan de drempelwaarde.

Nauwkeurige antwoorden krijgen met de GenerateAnswer-API

We bieden alleen nauwkeurige antwoordfunctie met de QnA Maker beheerde versie.

Veelvoorkomende HTTP-fouten

Code Uitleg
2xx Geslaagd
400 De parameters van de aanvraag zijn onjuist, wat betekent dat de vereiste parameters ontbreken, onjuist zijn of te groot zijn
400 De aanvraag is onjuist, wat betekent dat de JSON ontbreekt, onjuist is of te groot is
401 Ongeldige sleutel
403 Verboden: u hebt niet de juiste machtigingen
404 KB bestaat niet
410 Deze API is afgeschaft en is niet meer beschikbaar

Volgende stappen

De pagina Publiceren bevat ook informatie voor het genereren van een antwoord met Postman of cURL.