Obter uma resposta com a API GenerateAnswer

Para obter a resposta prevista à pergunta de um utilizador, utilize a API GenerateAnswer. Quando publica um base de dados de conhecimento, pode ver informações sobre como utilizar esta API na página Publicar. Também pode configurar a API para filtrar respostas com base em etiquetas de metadados e testar a base de dados de conhecimento a partir do ponto final com o parâmetro da cadeia de consulta de teste.

Nota

O serviço Criador de FAQ será descontinuado a 31 de março de 2025. Uma versão mais recente da capacidade de perguntas e respostas está agora disponível como parte da Linguagem de IA do Azure. Para obter as capacidades de resposta a perguntas no Serviço de Idioma, veja Resposta a perguntas. A partir de 1 de outubro de 2022, não poderá criar novos recursos do Criador de FAQ. Para obter informações sobre como migrar bases de dados de conhecimento existentes do Criador de FAQ para responder a perguntas, consulte o guia de migração.

Obter predições de respostas com a API GenerateAnswer

Utilize a API GenerateAnswer no seu bot ou aplicação para consultar a sua base de dados de conhecimento com uma pergunta de utilizador, 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 utilizar as APIs de resposta a perguntas mais recentes, consulte o guia de início rápido de resposta a perguntas.

Publicar para obter o ponto final GenerateAnswer

Depois de publicar a sua base de dados de conhecimento, seja no portal do Criador de FAQ ou através da API, pode obter os detalhes do ponto final GenerateAnswer.

Para obter os detalhes do ponto final:

  1. Inicie sessão em https://www.qnamaker.ai.

  2. Em As minhas bases de dados de conhecimento, selecione Ver Código para a sua base de dados de conhecimento. Captura de ecrã de As minhas bases de dados de conhecimento

  3. Obtenha os detalhes do ponto final GenerateAnswer.

    Captura de ecrã dos detalhes do ponto final

Também pode obter os detalhes do ponto final no separador Definições do seu base de dados de conhecimento.

GenerateAnswer request configuration (Configuração do pedido GenerateAnswer)

Chama GenerateAnswer com um pedido HTTP POST. Para obter o código de exemplo que mostra como chamar GenerateAnswer, veja os inícios rápidos.

O pedido POST utiliza:

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 EndpointKey com um espaço à direita e, em seguida, a chave de ponto final encontrada na página Definições .

Um corpo JSON de exemplo tem o seguinte aspeto:

{
    "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 solicitou apenas respostas que estão a 30% ou acima da classificação de limiar.

Propriedades de resposta GenerateAnswer

A resposta é um objeto JSON, incluindo todas as informações necessárias para apresentar a resposta e a próxima vez na conversação, 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 resposta com uma pontuação de 38,5%.

Corresponder apenas a perguntas, por texto

Por predefinição, o Criador de FAQ procura perguntas e respostas. Se quiser procurar apenas perguntas, para gerar uma resposta, utilize o RankerType=QuestionOnly no corpo POST do pedido GenerateAnswer.

Pode procurar no kb publicado, com isTest=falseou no kb de teste com isTest=true.

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

Utilizar o Criador de FAQ com um bot em C#

O bot framework fornece acesso às propriedades do Criador de FAQ 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 JSON anterior solicitou apenas respostas que estão a 30% ou acima da classificação de limiar.

Utilizar o Criador de FAQ com um bot no Node.js

O bot framework fornece acesso às propriedades do Criador de FAQ 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 JSON anterior solicitou apenas respostas que estão a 30% ou acima da classificação de limiar.

Obter respostas precisas com a API GenerateAnswer

Oferecemos uma funcionalidade de resposta precisa apenas com a versão gerida do Criador de FAQ.

Erros HTTP comuns

Código Explicação
2xx Com êxito
400 Os parâmetros do pedido estão incorretos, o que significa que os parâmetros necessários estão em falta, mal formados ou demasiado grandes
400 O corpo do pedido está incorreto, o que significa que o JSON está em falta, com formato incorreto ou demasiado grande
401 Chave inválida
403 Proibido – não tem as permissões corretas
404 A BDC não existe
410 Esta API foi preterida e já não está disponível

Passos seguintes

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