Ottenere una risposta con l'API GenerateAnswer

Per ottenere la risposta prevista alla domanda di un utente, usare l'API GenerateAnswer. Quando si pubblica una knowledge base, è possibile visualizzare informazioni su come usare questa API nella pagina Pubblica. È anche possibile configurare l'API per filtrare le risposte in base ai tag dei metadati e testare la knowledge base dall'endpoint con il parametro della stringa di query di test.

Nota

Il servizio QnA Maker sarà ritirato il 31 marzo 2025. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte di Lingua di Azure AI. Per le funzionalità di risposta alla domanda all'interno del servizio di linguaggio vedere Risposta alla domanda. A partire dal 1° ottobre 2022 non è più possibile creare nuove risorse di QnA Maker. Per informazioni sulla migrazione delle knowledge base di QnA Maker esistenti alla funzionalità di risposta alla domanda vedere la guida alla migrazione.

Ottenere previsioni delle risposte con l'API GenerateAnswer

Usare l'API GenerateAnswer nel bot o nell'applicazione per eseguire una query sulla knowledge base con la domanda di un utente per ottenere la migliore corrispondenza dalle coppie di domande/risposte.

Nota

Questa documentazione non si applica alla versione più recente. Per informazioni sull'uso delle API di risposta alle domande più recenti, vedere la guida introduttiva alle risposte alle domande.

Pubblicare per ottenere l'endpoint GenerateAnswer

Una volta pubblicata la knowledge base dal portale di QnA Maker o usando l'API, è possibile ottenere i dettagli dell'endpoint GenerateAnswer.

Per ottenere i dettagli dell'endpoint:

  1. Accedere a https://www.qnamaker.ai.

  2. In Knowledge base personali, fare clic su Visualizza codice per la knowledge base. Screenshot di Knowledge base personali

  3. Ottenere i dettagli dell'endpoint GenerateAnswer.

    Screenshot dei dettagli dell'endpoint

È anche possibile ottenere i dettagli dell'endpoint dalla scheda Settings (Impostazioni) della knowledge base.

Configurazione della richiesta GenerateAnswer

È possibile chiamare GenerateAnswer con una richiesta HTTP POST. Per il codice di esempio che illustra come chiamare GenerateAnswer, vedere le guide introduttive.

La richiesta POST usa:

L'URL GenerateAnswer è nel formato seguente:

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

Ricordarsi di impostare la proprietà dell'intestazione HTTP di Authorization con un valore della stringa EndpointKey con uno spazio finale e quindi la chiave endpoint disponibile nella pagina Impostazioni.

Un corpo JSON di esempio è simile al seguente:

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

Altre informazioni su rankerType.

Il codice JSON precedente ha richiesto solo risposte al 30% o superiori al punteggio di soglia.

Proprietà della risposta GenerateAnswer

La risposta è un oggetto JSON che include tutte le informazioni necessarie per visualizzare la risposta e il turno successivo nella conversazione, se disponibile.

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

Il codice JSON precedente ha risposto con una risposta con un punteggio pari al 38,5%.

Solo domande corrispondenti, in base al testo

Per impostazione predefinita, QnA Maker esegue la ricerca nelle domande e nelle risposte. Se si vuole cercare solo tra le domande, per generare una risposta, usare RankerType=QuestionOnly nel corpo POST della richiesta GenerateAnswer.

È possibile eseguire ricerche nella kb pubblicata usando isTest=false o nella kb di test usando isTest=true.

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

Usare QnA Maker con un bot in C#

Il framework bot fornisce l'accesso alle proprietà di QnA Maker con l'API getAnswer:

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

Il codice JSON precedente ha richiesto solo risposte al 30% o superiori al punteggio di soglia.

Usare QnA Maker con un bot in Node.js

Il framework bot fornisce l'accesso alle proprietà di QnA Maker con l'API getAnswer:

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

Il codice JSON precedente ha richiesto solo risposte al 30% o superiori al punteggio di soglia.

Ottenere risposte precise con l'API GenerateAnswer

Offriamo una funzionalità di risposta precisa solo con la versione gestita di QnA Maker.

Errori HTTP comuni

Codice Spiegazione
2xx Riuscita
400 I parametri della richiesta non sono corretti, vale a dire che i parametri obbligatori mancano, non solo validi o sono troppo grandi
400 Il corpo della richiesta non è corretto, vale a dire che la stringa JSON manca, non è valida o è troppo grande
401 Chiave non valida
403 Operazione non consentita: non si dispone delle autorizzazioni corrette
404 La knowledge base non esiste
410 L'API è deprecata e non è più disponibile

Passaggi successivi

La pagina Pubblica fornisce anche informazioni per generare una risposta con l'estensione client REST di Visual Studio Code o cURL.