Uso de QnA Maker para responder a preguntas

SE APLICA A: SDK v4

Nota:

Azure AI QnA Maker se retirará el 31 de marzo de 2025. A partir del 1 de octubre de 2022, no podrá crear nuevos recursos o bases de conocimiento de QnA Maker. Ya hay disponible una versión más reciente de la funcionalidad de preguntas y respuestas como parte de Lenguaje de Azure AI.

La respuesta a preguntas personalizadas, una característica de Lenguaje de Azure AI, es la versión actualizada del servicio QnA Maker. Para obtener más información sobre la compatibilidad con preguntas y respuestas en el SDK de Bot Framework, consulte Reconocimiento del lenguaje natural.

QnA Maker proporciona una capa conversacional de preguntas y respuestas sobre los datos. Esto permite que el bot envíe una pregunta a QnA Maker y reciba una respuesta sin tener que analizar e interpretar la intención de la pregunta.

Uno de los requisitos básicos para crear su propia instancia del servicio QnA Maker es rellenarlo con preguntas y respuestas. En muchos casos, las preguntas y respuestas ya existen en el contenido, como las preguntas más frecuentes u otra documentación; otras veces, es posible que quiera personalizar las respuestas a las preguntas de una manera más natural y conversacional.

En este artículo se describe cómo usar una base de conocimiento de QnA Maker existente desde el bot.

En el caso de los nuevos bots, considere la posibilidad de usar la característica de respuesta a preguntas de Azure Cognitive Service para lenguaje. Para obtener información, consulte Uso de la respuesta a preguntas para responder a preguntas.

Nota:

Los SDK de JavaScript, C# y Python de Bot Framework seguirán siendo compatibles, pero el SDK de Java se va a retirar con la finalización del soporte técnico a largo plazo en noviembre de 2023. Solo se realizarán correcciones de errores y seguridad críticos en este repositorio.

Los bots existentes creados con el SDK de Java seguirán funcionando.

Para la nueva compilación de bots, considere la posibilidad de usar Power Virtual Agents y lea sobre cómo elegir la solución de bot de chat adecuada.

Para obtener más información, consulte El futuro de la construcción de bots.

Requisitos previos

Acerca de este ejemplo

Para utilizar QnA Maker en su bot, necesita una base de conocimientos existente en el portal QnA Maker. Después, el bot puede utilizar la base de conocimiento para responder a las preguntas del usuario.

Para el nuevo desarrollo de bots, considere la posibilidad de usar Power Virtual Agents. Si necesita crear una base de conocimiento para un bot de SDK de Bot Framework, consulte los siguientes artículos sobre los servicios de Azure AI:

C# QnABot logic flow

Se llama a OnMessageActivityAsync para cada entrada del usuario recibida. Cuando se llama, accede a los ajustes de configuración del archivo appsetting.json del código de muestra para encontrar el valor para conectarse a su base de conocimientos preconfigurada de QnA Maker.

La entrada del usuario se envía a la base de conocimiento y la mejor respuesta devuelta se muestra al usuario.

Obtención de valores para conectar el bot a la base de conocimiento

Sugerencia

La documentación de QnA Maker contiene instrucciones sobre cómo crear, entrenar y publicar una base de conocimiento.

  1. En el sitio de QnA Maker, seleccione la base de conocimiento.
  2. Con la base de conocimiento abierta, seleccione la pestaña CONFIGURACIÓN. Registre el valor que se muestra para el nombre del servicio. Este valor es útil para buscar la base de conocimiento apropiada en la interfaz del portal de QnA Maker. No se utiliza para conectar la aplicación de bot a esta base de conocimiento.
  3. Desplácese hacia abajo hasta encontrar Detalles de implementación y anote los siguientes valores de la solicitud HTTP de ejemplo de Postman:
    • POST /knowledgebases/<knowledge-base-id>/generateAnswer
    • Host: <your-host-url>
    • Authorization: EndpointKey <your-endpoint-key>

La dirección URL del host comenzará con https:// y terminará con /qnamaker, como https://<hostname>.azure.net/qnamaker. El bot necesita el identificador de la base de conocimiento, la dirección URL del host y la clave del punto de conexión para conectarse a la base de conocimiento de QnA Maker.

Actualización del archivo de configuración

En primer lugar, agregue la información necesaria para acceder a la base de conocimiento, incluido el nombre de host, la clave del punto de conexión y el identificador de la base de conocimiento (kbId) en el archivo de configuración. Estos son los valores que guardó en la pestaña CONFIGURACIÓN en la base de conocimiento de QnA Maker.

Si no lo está implementando para la producción, puede dejar en blanco los campos de ID y contraseña de la aplicación del bot.

Nota:

Para agregar una base de conocimiento de QnA Maker a una aplicación de bot existente, asegúrese de agregar títulos informativos a las entradas de QnA. En esta sección, el valor "name" proporciona la clave necesaria para acceder a esta información desde la aplicación.

appsettings.json

C# (archivado)

Configuración de la instancia de QnA Maker

Primero, creamos un objeto para acceder a la base de conocimiento de QnA Maker.

Asegúrese de que el paquete NuGet Microsoft.Bot.Builder.AI.QnA está instalado para el proyecto.

En QnABot.cs, en el método OnMessageActivityAsync, creamos una instancia de QnAMaker. La clase QnABot es también donde se introducen los nombres de la información de conexión, guardada en appsettings.json arriba. Si ha elegido nombres diferentes para la información de conexión de la base de conocimiento en el archivo de configuración, asegúrese de actualizar los nombres aquí para que reflejen el nombre elegido.

Bots/QnABot.cs

C# (archivado)

Llamadas a QnA Maker desde el bot

Cuando el bot necesite una respuesta de QnA Maker, llame al método GetAnswersAsync desde el código del bot para obtener la respuesta correcta en función del contexto actual. Si va a acceder a su propia base de conocimiento, cambie el mensaje de que no se encontraron respuestas que se muestra a continuación para proporcionar instrucciones útiles para los usuarios.

Bots/QnABot.cs

C# (archivado)

Probar el bot

Ejecute el ejemplo localmente en la máquina. Si aún no lo ha hecho, instale Bot Framework Emulator. Para obtener más instrucciones, consulte el ejemplo README (C# (archivado), JavaScript (archivado), Java (archivado), o Python (archivado)).

Inicie Emulator, conéctese al bot y envíele mensajes. Las respuestas a sus preguntas variarán en función de la información de la base de conocimiento.

Test sample bot.

Información adicional

El ejemplo de varios turnos de QnA Maker (ejemplo de varios turnos de C# (archivado), el ejemplo de varios turnos de JavaScript(archivado), el ejemplo de varios turnos de Java (archivado), el ejemplo de varios turnos de Python (archivado) muestra cómo usar un cuadro de diálogo de QnA Maker para admitir las características de seguimiento y aprendizaje activo de QnA Maker.

  • QnA Maker admite avisos de seguimiento, también conocidos como avisos de múltiples turnos. Si la base de conocimiento de QnA Maker requiere más información por parte del usuario, QnA Maker envía información de contexto que se puede usar para preguntar al usuario. Esta información también se utiliza para realizar llamadas de seguimiento al servicio QnA Maker. En la versión 4.6, Bot Framework SDK agregó la compatibilidad con esta característica.

    Para crear una base de conocimiento de este tipo, consulte la documentación de QnA Maker sobre cómo Usar avisos de seguimiento para crear varios turnos de una conversación.

  • QnA Maker también admite sugerencias de aprendizaje activo para que la base de conocimiento pueda mejorar con el tiempo. El diálogo QnA Maker admite comentarios explícitos para la característica de aprendizaje activo.

    Para habilitar esta característica en una base de conocimiento, consulte la documentación de QnA Maker sobre sugerencias de aprendizaje activo.

Pasos siguientes

QnA Maker se puede combinar con otros servicios de Azure AI para que el bot sea aún más eficaz. Bot Framework Orchestrator proporciona una forma de combinar QnA con Language Understanding (LUIS) en el bot.