Obter uma resposta com a API GenerateAnswer

Para obter a resposta prevista para a pergunta de um usuário, use a API GenerateAnswer. Quando você publica uma base de dados de conhecimento, informações sobre o uso da API são exibidas na página Publicar. Você também pode configurar a API para filtrar as respostas com base nas marcações de metadados e testar a base de dados de conhecimento no ponto de extremidade com o parâmetro de cadeia de caracteres de consulta de teste.

Observação

O serviço de QnA Maker está sendo desativado no dia 31 de março de 2025. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure. Para saber mais sobre o recurso de respostas às perguntas no Serviço de Linguagem, confira respostas às perguntas. A partir de 1º de outubro de 2022, você não poderá criar novos recursos de QnA Maker. Para obter informações sobre como migrar bases de dados de conhecimento do QnA Maker existentes para responder perguntas, consulte o guia de migração.

Obter previsões de resposta com a API GenerateAnswer

Você usa a API GenerateAnswer no bot ou aplicativo para consultar a base de dados de conhecimento com uma pergunta de usuário, a fim de conseguir a melhor correspondência dos pares de pergunta e resposta.

Observação

Esta documentação não se aplica à versão mais recente. Para saber mais sobre como usar as APIs mais recentes de Respostas às Perguntas, consulte o guia de início rápido de respostas às perguntas.

Publicar para obter o ponto de extremidade de GenerateAnswer

Após publicar a base de dados de conhecimento no portal do QnA Maker ou usando a API, você pode ver os detalhes do ponto de extremidade de GenerateAnswer.

Para obter os detalhes do ponto de extremidade:

  1. Entrar no https://www.qnamaker.ai.

  2. Em Minhas bases de dados de conhecimento, selecione Exibir Código para a base de dados de conhecimento. Captura de tela de Minhas bases de dados de conhecimento

  3. Obtenha os detalhes do ponto de extremidade do GenerateAnswer.

    Captura de tela dos detalhes do ponto de extremidade

Também é possível obter os detalhes de ponto de extremidade na guia Configurações da base de dados de conhecimento.

Configuração de solicitação de GenerateAnswer

Você chama o GenerateAnswer com uma solicitação HTTP POST. Para código de exemplo que mostra como chamar o GenerateAnswer, consulte os inícios rápidos.

A solicitação POST usa:

A URL de GenerateAnswer tem o seguinte formado:

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

Lembre-se de definir a propriedade do cabeçalho HTTP Authorization com um valor da cadeia de caracteres EndpointKey, um espaço à direita e depois a chave de ponto de extremidade exibida na página Configurações.

Veja um exemplo de corpo JSON:

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

Saiba mais sobre rankerType.

O código JSON anterior solicitou apenas respostas com 30% ou acima da pontuação de limite.

Propriedades de resposta de GenerateAnswer

A resposta é um objeto JSON que contém todas as informações necessárias para exibir a resposta e a próxima rodada da conversa, se disponível.

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

O código JSON anterior deu uma resposta com uma pontuação de 38,5%.

Somente correspondência de perguntas, por texto

Por padrão, o QnA Maker pesquisa perguntas e respostas. Caso queira pesquisar somente as perguntas para gerar uma resposta, use o RankerType=QuestionOnly no corpo de POST da solicitação do GenerateAnswer.

Você pode pesquisar as KBs publicados, usando isTest=false, ou na KB de teste usando isTest=true.

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

Usar o QnA Maker com um bot em C#

O Bot Framework dá acesso às propriedades do QnA Maker com a 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);

O código JSON anterior solicitou apenas respostas com 30% ou acima da pontuação de limite.

Usar o QnA Maker com um bot em Node.js

O Bot Framework dá acesso às propriedades do QnA Maker com a 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);

O código JSON anterior solicitou apenas respostas com 30% ou acima da pontuação de limite.

Obtenha respostas precisas com a API GenerateAnswer

Oferecemos um recurso de resposta precisa somente com a versão gerenciada do QnA Maker.

Erros comuns de HTTP

Código Explicação
2xx Êxito
400 Os parâmetros da solicitação estão incorretos, o que significa que os parâmetros necessários estão ausentes, errados ou são muitos grandes
400 O corpo da solicitação está incorreto, o que significa que o JSON está ausente, errado ou é muito grande
401 Chave inválida
403 Proibido – você não tem as permissões corretas
404 O KB não existe
410 Essa API foi preterida e não está mais disponível

Próximas etapas

A página Publicar também mostra informações para gerar uma resposta com o Postman ou o cURL.