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 dados de conhecimento do ponto de extremidade com o parâmetro test query string.
Nota
O serviço QnA Maker será desativado no dia 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 obter os recursos de resposta a perguntas no Serviço Linguístico, consulte Resposta a perguntas. A partir de 1º de outubro de 2022, você não poderá criar novos recursos do QnA Maker. Para obter informações sobre como migrar bases de conhecimento existentes do QnA Maker para responder 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 ponto de extremidade GenerateAnswer
Depois de publicar sua base de dados de conhecimento, seja no portal do QnA Maker ou usando a API, você pode obter os detalhes do seu ponto de extremidade GenerateAnswer.
Para obter os detalhes do seu ponto final:
Iniciar sessão para https://www.qnamaker.ai.
Em Minhas bases de conhecimento, selecione Exibir código para sua base de dados de conhecimento.
Obtenha os detalhes do seu endpoint GenerateAnswer.
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 corporais 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
com um espaço à direita e, em seguida, a chave do ponto de extremidade encontrada na página Configurações .
Um exemplo de corpo JSON se parece com:
{
"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 de resposta 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 através do kb publicado, usando isTest=false
, ou no teste kb 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 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 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 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 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 de cliente REST do Visual Studio Code ou cURL.