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:

  1. Inicie sesión en https://www.qnamaker.ai.

  2. En My knowledge bases (Mis bases de conocimiento), seleccione View Code (Ver código) correspondiente a su base de conocimiento. Captura de pantalla de Mis bases de conocimiento

  3. Obtenga los detalles del punto de conexión de GenerateAnswer.

    Captura de los detalles del punto de conexión

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:

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 Postman o cURL.