Obtención de una respuesta con GenerateAnswer API
Para obtener la respuesta prevista a la pregunta de un usuario, use GenerateAnswer API. Al publicar una base de conocimiento, puede consultar información sobre cómo usar esta API en la página Publicar. También puede configurar la API para filtrar las respuestas según las etiquetas de metadatos y probar la base de conocimiento desde el punto de conexión con el parámetro de cadena de consulta de prueba.
Nota
El servicio QnA Maker se retirará del mercado el 31 de marzo de 2025. Ya hay disponible una versión más reciente de la funcionalidad de preguntas y respuestas como parte de Lenguaje de Azure AI. Para más información sobre las funcionalidades de respuesta a preguntas en el servicio de lenguaje, consulte Respuesta a preguntas. A partir del 1 de octubre de 2022 no podrá crear nuevos recursos de QnA Maker. Para obtener información sobre la migración de knowledge bases existentes de QnA Maker a respuesta a preguntas, consulte la guía de migración.
Obtención de predicciones de respuestas con GenerateAnswer API
GenerateAnswer API se usa en un bot o aplicación para consultar la base de conocimiento con una pregunta de usuario y obtener la mejor coincidencia de los pares de preguntas y respuestas.
Nota
Esta documentación no se aplica a la versión más reciente. Para obtener información sobre el uso de las API más recientes de respuestas a preguntas, consulte la guía de inicio rápido de respuestas a preguntas.
Publicación para obtener el punto de conexión de GenerateAnswer
Después de publicar la base de conocimiento, ya sea desde el portal de QnA Maker o mediante la API, puede obtener los detalles de su punto de conexión de GenerateAnswer.
Para obtener los detalles del punto de conexión:
Inicie sesión en https://www.qnamaker.ai.
En My knowledge bases (Mis bases de conocimiento), seleccione View Code (Ver código) correspondiente a su base de conocimiento.
Obtenga los detalles del punto de conexión de GenerateAnswer.
También puede obtener los detalles del punto de conexión en la pestaña Settings (Configuración) de la base de conocimiento.
Configuración de la solicitud GenerateAnswer
Para llamar a GenerateAnswer, se utiliza una solicitud HTTP POST. Para ver código de ejemplo que muestra cómo llamar a GenerateAnswer, consulte las guías de inicio rápido.
La solicitud POST usa:
- Los parámetros de URI obligatorios.
- La propiedad del encabezado obligatoria,
Authorization
, por seguridad. - Las propiedades del cuerpo obligatorias.
La dirección URL de GenerateAnswer tiene el formato siguiente:
https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer
Recuerde establecer la propiedad del encabezado HTTP de Authorization
con un valor de la cadena EndpointKey
con un espacio final y, luego, la clave del punto de conexión que se encontró en la página Configuración.
Un cuerpo JSON de ejemplo tiene el siguiente aspecto:
{
"question": "qna maker and luis",
"top": 6,
"isTest": true,
"scoreThreshold": 30,
"rankerType": "" // values: QuestionOnly
"strictFilters": [
{
"name": "category",
"value": "api"
}],
"userId": "sd53lsY="
}
Más información acerca de rankerType.
El código JSON anterior solo solicitó aquellas respuestas con una puntuación del 30 % o que están por encima de la puntuación del umbral.
Propiedades de la respuesta de GenerateAnswer
La respuesta es un objeto JSON que incluye toda la información necesaria para mostrar la respuesta y el siguiente turno en la conversación, si está disponible.
{
"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"
}
]
}
]
}
El código JSON anterior respondió con una respuesta con una puntuación del 38,5 %.
Coincidencia solo de preguntas, por texto
De manera predeterminada, QnA Maker busca a través de preguntas y respuestas. Si quiere buscar solo en las preguntas, para generar una respuesta, utilice el objeto RankerType=QuestionOnly
del cuerpo de POST de la solicitud GenerateAnswer.
Puede buscar en la base de conocimiento publicada, con isTest=false
, o bien en la base de conocimiento de prueba, con isTest=true
.
{
"question": "Hi",
"top": 30,
"isTest": true,
"RankerType":"QuestionOnly"
}
Uso de QnA Maker con un bot en C#
Bot Framework brinda acceso a las propiedades de QnA Maker con 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);
El código JSON anterior solo solicitó aquellas respuestas con una puntuación del 30 % o que están por encima de la puntuación del umbral.
Uso de QnA Maker con un bot en Node.js
Bot Framework brinda acceso a las propiedades de QnA Maker con 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);
El código JSON anterior solo solicitó aquellas respuestas con una puntuación del 30 % o que están por encima de la puntuación del umbral.
Obtención de respuestas precisas con GenerateAnswer API
Solo ofrecemos una característica de respuesta precisa con la versión administrada de QnA Maker.
Errores HTTP comunes
Código | Explicación |
---|---|
2xx | Correcto |
400 | Los parámetros de la solicitud no son correctos, lo que significa que faltan parámetros necesarios, o bien que tienen un formato incorrecto o son demasiado grandes |
400 | El cuerpo de la solicitud es incorrecto, lo que significa que falta el código JSON, o bien que tiene un formato incorrecto o es demasiado grande |
401 | Clave no válida |
403 | Prohibido: no tiene los permisos correctos |
404 | KB no existe |
410 | Esta API está en desuso y ya no está disponible |
Pasos siguientes
La página Publicar también proporciona información para generar una respuesta con la extensión Cliente REST de Visual Studio Code o cURL.