Ottenere una risposta con l'API GenerateAnswer

Per ottenere la risposta stimata alla domanda di un utente, usare l'API GenerateAnswer. Quando si pubblica un 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 di metadati e testare il knowledge base dall'endpoint con il parametro della stringa di query di test.

Nota

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

Ottenere stime delle risposte con l'API GenerateAnswer

Si usa l'API GenerateAnswer nel bot o nell'applicazione per eseguire query sul knowledge base con una domanda dell'utente, per ottenere la corrispondenza migliore dalle coppie di domande e 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 alla risposta alle domande.

Pubblicare per ottenere l'endpoint GenerateAnswer

Dopo aver pubblicato il 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 selezionareVisualizza codice per il knowledge base. Screenshot delle 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:

  • Parametri URI obbligatori
  • Proprietà di intestazione obbligatoria, Authorization, per la sicurezza
  • Proprietà del corpo necessarie.

L'URL GenerateAnswer ha il 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, quindi la chiave endpoint trovata nella pagina Impostazioni .

Un esempio di corpo JSON è 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 superiore 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 del 38,5%.

Trova solo domande, in base al testo

Per impostazione predefinita, QnA Maker cerca domande e risposte. Per cercare solo domande, per generare una risposta, usare nel RankerType=QuestionOnly corpo POST della richiesta GenerateAnswer.

È possibile eseguire ricerche nella kb pubblicata usando isTest=falseo 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 superiore 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 superiore 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 Operazione 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 Postman o cURL.