Share via


Een antwoord ophalen 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 voor het filteren van antwoorden op basis van metagegevenstags en het testen van de knowledge base vanaf het eindpunt met de parameter voor de testquerytekenreeks.

Notitie

De QnA Maker-service wordt op 31 maart 2025 buiten gebruik gesteld. Een nieuwere versie van de vraag- en antwoordmogelijkheid is nu beschikbaar als onderdeel van Azure AI Language. Zie vraagantwoording voor vragen in de Language Service voor het beantwoorden van vragen. Vanaf 1 oktober 2022 kunt u geen nieuwe QnA Maker-resources maken. Raadpleeg de migratiehandleiding voor informatie over het migreren van bestaande QnA Maker-knowledge bases om vragen te beantwoorden.

Antwoordvoorspellingen ophalen 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 van de vraag- en antwoordparen.

Notitie

Deze documentatie is niet van toepassing op de nieuwste versie. Raadpleeg de snelstartgids voor het beantwoorden van vragen voor meer informatie over het gebruik van de meest recente vraag die API's beantwoordt.

Publiceren om GenerateAnswer-eindpunt op te halen

Nadat u uw Knowledge Base hebt gepubliceerd vanuit de QnA Maker-portal of met behulp van de API, kunt u de details van uw GenerateAnswer-eindpunt ophalen.

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

  1. Aanmelden bij https://www.qnamaker.ai.

  2. Selecteer Code voor uw knowledge base weergeven in Mijn knowledge bases. Schermopname van Mijn knowledge bases

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

    Schermopname van eindpuntdetails

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

GenerateAnswer-aanvraagconfiguratie

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:

  • Vereiste URI-parameters
  • Vereiste headereigenschap, Authorizationvoor beveiliging
  • Vereiste hoofdteksteigenschappen.

De GenerateAnswer-URL heeft de volgende indeling:

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

Vergeet niet om de eigenschap HTTP-header in te stellen van Authorization een waarde van de tekenreeks EndpointKey met een volgruimte en vervolgens de eindpuntsleutel op de pagina Instellingen .

Een voorbeeld van een JSON-hoofdtekst ziet er als volgt 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.

De vorige JSON heeft alleen antwoorden aangevraagd die 30% of hoger zijn dan de drempelwaardescore.

Eigenschappen van GenerateAnswer-antwoord

Het antwoord is een JSON-object met alle informatie die u nodig hebt om het antwoord weer te geven en de volgende keer het gesprek in te schakelen, 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 reageerde met een antwoord met een score van 38,5%.

Alleen vragen vergelijken, per tekst

QnA Maker doorzoekt standaard vragen en antwoorden. Als u alleen vragen wilt doorzoeken om een antwoord te genereren, gebruikt u de RankerType=QuestionOnly post-hoofdtekst van de GenerateAnswer-aanvraag.

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

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

QnA Maker gebruiken met een bot in C#

Het botframework biedt toegang tot de eigenschappen van QnA Maker 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);

De vorige JSON heeft alleen antwoorden aangevraagd die 30% of hoger zijn dan de drempelwaardescore.

QnA Maker gebruiken met een bot in Node.js

Het botframework biedt toegang tot de eigenschappen van QnA Maker 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);

De vorige JSON heeft alleen antwoorden aangevraagd die 30% of hoger zijn dan de drempelwaardescore.

Nauwkeurige antwoorden krijgen met GenerateAnswer-API

We bieden alleen een nauwkeurige antwoordfunctie met de beheerde QnA Maker-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 ingedeeld of te groot zijn
400 De hoofdtekst van de aanvraag is onjuist, wat betekent dat de JSON ontbreekt, onjuist is gevormd of te groot is
401 Ongeldige sleutel
403 Verboden - u beschikt niet over de juiste machtigingen
404 KB bestaat niet
410 Deze API is afgeschaft en is niet meer beschikbaar

Volgende stappen

De pagina Publiceren biedt ook informatie om een antwoord te genereren met de Visual Studio Code REST Client-extensie of cURL.