Partilhar via


Obtenha uma resposta com a API GenerateAnswer

Para obter a resposta prevista para a pergunta de um usuário, use a API GenerateAnswer. Ao publicar uma base de dados de conhecimento, você pode ver informações sobre como usar essa API na página Publicar . Você também pode configurar a API para filtrar respostas com base em tags de metadados e testar a base de conhecimento a partir do endpoint com o parâmetro string de consulta de teste.

Nota

O serviço QnA Maker está sendo aposentado em 31 de outubro de 2025 (prorrogado a partir de 31 de março de 2025). Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure. Para capacidades de resposta a perguntas dentro do Azure Language Service, veja resposta a perguntas. A partir de 1º de outubro de 2022, você não poderá mais criar novos recursos do QnA Maker. A partir de 31 de março de 2025, o portal QnA Maker não estará mais disponível. Para obter informações sobre como migrar bases de conhecimento existentes do QnA Maker para a funcionalidade de resposta a perguntas, consulte o guia de migração.

Obtenha previsões de resposta com a API GenerateAnswer

Você usa a API GenerateAnswer em seu bot ou aplicativo para consultar sua base de conhecimento com uma pergunta de usuário, para obter a melhor correspondência dos pares de perguntas e respostas.

Nota

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

Publicar para obter o endpoint GenerateAnswer

Depois de publicar sua base de dados de conhecimento, você pode obter os detalhes do seu ponto de extremidade GenerateAnswer.

Para obter os detalhes do seu ponto final:

  1. Faça login no portal do QnA Maker.

  2. Em Minhas bases de conhecimento, selecione Exibir código para sua base de dados de conhecimento. Captura de ecrã de As minhas bases de conhecimento

  3. Obtenha os detalhes do seu endpoint GenerateAnswer.

    Captura de ecrã dos detalhes do ponto final

Você também pode obter os detalhes do endpoint na guia Configurações da sua base de dados de conhecimento.

Configuração de solicitação GenerateAnswer

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

A solicitação POST usa:

  • Parâmetros de URI necessários
  • Propriedade de cabeçalho necessária, Authorization, para segurança
  • Propriedades de corpo necessárias.

O URL GenerateAnswer tem o seguinte formato:

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

Lembre-se de definir a propriedade de cabeçalho HTTP de Authorization com um valor da cadeia de caracteres EndpointKey, seguido por um espaço em branco no final e, depois, a chave do ponto de extremidade encontrada na página Configurações.

Um exemplo de corpo JSON é o seguinte:

{
    "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 JSON anterior solicitava apenas respostas que estivessem em 30% ou acima da pontuação limite.

Propriedades da resposta de GenerateAnswer

A resposta é um objeto JSON que inclui todas as informações necessárias para exibir a resposta e o próximo turno na 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 JSON anterior respondeu com uma pontuação de 38,5%.

Corresponder apenas perguntas, por texto

Por padrão, o QnA Maker pesquisa perguntas e respostas. Se você quiser pesquisar apenas perguntas, para gerar uma resposta, use o RankerType=QuestionOnly no corpo POST da solicitação GenerateAnswer.

Você pode pesquisar no kb publicado, usando isTest=false, ou no kb de teste usando isTest=true.

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

Use o QnA Maker com um bot em C#

A estrutura do bot fornece acesso às funcionalidades do QnA Maker com a 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);

O JSON anterior solicitava apenas respostas que estivessem em 30% ou acima da pontuação limite.

Use o QnA Maker com um bot no Node.js

A estrutura do bot fornece acesso às funcionalidades do QnA Maker com a 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);

O JSON anterior solicitava apenas respostas que estivessem em 30% ou acima da pontuação limite.

Obtenha respostas precisas com a API GenerateAnswer

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

Erros HTTP comuns

Código Explicação
2XX Com êxito
400 Os parâmetros da solicitação estão incorretos, o que significa que os parâmetros necessários estão ausentes, malformados ou muito grandes
400 O corpo da solicitação está incorreto, o que significa que o JSON está ausente, malformado ou muito grande
401 Chave inválida
403 Proibido - você não tem permissões corretas
404 KB não existe
410 Esta API foi preterida e não está mais disponível

Próximos passos

A página Publicar também fornece informações para gerar uma resposta com a extensão REST Client do Visual Studio Code ou cURL.