Enmilocalfunciona

Thoughts, stories and ideas.

ChatBots inteligentes con Azure (Parte 3): QnA Maker y Knowledge Base

Publicado por Santi Macias el

Microsoft AzureMicrosoft Bot FrameworkCognitive ServicesChatBots

En el segundo artículo sobre Chatbots, implementamos nuestro AtencionClienteBot en Azure. El siguiente paso es dotarlo de conocimiento. En este caso, usaremos QnA Maker y Azure Services para construir la Knowledge Base con la lista de preguntas y respuestas para atender a los clientes.

Requisitos Previos

Para llevar a cabo el ejemplo serán necesarios estos requerimientos:

  • Cuenta Azure con suscripción y créditos
  • Conocimientos básicos Portal de Azure
  • Conocimientos básicos Cognitive Services
  • Configuraciones de Application Setting

QnA Maker y Knowledge Base en Azure

El servicio QnA Maker lo encontramos en https://www.qnamaker.ai, forma parte del catálogo Azure y tiene su propio portal web para construir y publicar Knowledge Bases, también llamadas de forma abreviada KB.

alt

Nos registramos con nuestro usuario de Azure y vamos a la opción Create a Knowledge Base en el menú principal.

Una vez dentro del portal, deberemos realizar estos 5 pasos:

  1. Create a QnA service in Microsoft Azure.
  2. Connect your QnA service to your KB.
  3. Name your KB.
  4. Populate your KB.
  5. Create your KB.

Veamos los pasos en detalle.

Paso 1. Create a QnA service in Microsoft Azure

Primero, pulsamos el botón Create a QnA service para dirigirnos al portal de Azure y asignarle suscripción, capa de precios y otros valores de configuración.

Al pulsar el botón se nos abrirá directamente al formulario en Azure. Si no fuera así, podemos crearlo dentro del portal de Azure seleccionando la opción de Cognitive Services y la categoría AI + MACHINE LEARNING.

Buscamos QnA Maker en el catálogo de servicios o escribimos en el buscador “QnA” para localizarlo.

Continuamos creando el servicio, pulsando el botón Create para abrir un nuevo formulario con los campos para rellenar. Lo primero pondremos nombre al servicio para verificar que no existe: lo llamaremos AtencionClientesQnA.

En el resto de campos, indicaremos la suscripción, localización, grupo de recursos y debemos fijarnos bien en las 2 capas de precios (pricing tier) para seleccionar la gratuita (F = Free).

Una vez hecho esto, pulsaremos Create en la parte de debajo de la pantalla para comenzar el despliegue del servicio QnA Maker en nuestra suscripción. Debemos esperar aproximadamente un par de minutos.

Vamos mirando las notificaciones de Azure hasta que nos indica que el despliegue ha finalizado.

Con esto ya tenemos listo el QnA Maker en Azure, el siguiente paso será conectarnos.

Paso 2. Connect your QnA service to your KB

Ahora seleccionamos el QnA Maker que hemos creado en nuestra suscripción de Azure en los desplegables que aparecen en pantalla.

Paso 3. Name your KB

Introducimos el nombre para nuestra Knowledge Base, la llamaremos AtencionClientesKB

Paso 4. Populate your KB

QnA nos ofrece varias alternativas que podemos combinar para recopilar y rellenar nuestra KB, mediante URLs y archivos, con la premisa de que los datos deben estar estructurados en forma de preguntas y respuestas.

  • URL: Páginas y sitios con enlaces a FAQ o preguntas frecuentes.
  • Archivos Pdf: manuales, folletos, guías de soporte.
  • Archivos Doc: Preguntas más frecuentes, manual de producto, documentos, directivas.
  • Archivos Excel: Excel de preguntas y respuestas estructurados.
  • Archivos Txt: Textos con preguntas y respuestas estructurados.
  • Chit-chat: Incluir charlas amigables (solo disponible para ingles), por defecto None.

En nuestro caso incluimos 2 URLs de Telefónica para la demo:

Paso 5. Create your KB

Por último, creamos la Knowledge Base pulsando el botón Create your KB que vemos en pantalla.

Aparecerá el indicador del proceso y esperamos unos minutos hasta que finalice:

Et voilà!, ya tenemos la nueva Knowledge Base creada, solo falta pulsar el botón Save and Train para generar y guardar el modelo.

Una vez disponemos de KB, podemos de forma directa gestionarla desde el portal web para añadir y modificar contenidos siempre recordando que cada vez que cambiamos alguna cosa hay que volver a pulsar el botón Save and Train.

Probando la Knowledge Base

Para confirmar que nuestra KB funciona, realicemos una sencilla prueba directamente desde el portal QnA pulsando el botón Test, que nos abrirá un simulador de chat para verificar cómo responde.

Como vemos responde de forma correcta a nuestras preguntas, por ejemplo, probamos "cómo recuperar mi usuario" y "cómo recupero mi usuario".

Como observamos, aunque la frase no es exacta a la definida, el servicio QnA Maker responde correctamente.

Publicando Knowledge Base

El último paso es publicar la Knowledge Base en producción para que cualquier app o chatbot se pueda conectar. Para ello pulsamos en el menú Publish para ir a la ventana de publicación.

Ahora, pulsamos el botón Publish y en unos instantes ya esta listo el Endpoint.

En este punto, ya hemos publicado la Knowledge Base. Dejaremos abierta en el navegador esta ventana porque la necesitaremos más adelante.

Ensamblando las piezas

El siguiente paso es conectar nuestro ChatBot con la Knowledge Base de QnA Maker publicada.  Si miráis por Internet es algo confuso en algunos tutoriales por la forma de obtener los valores como ahora veremos.

Recordamos que nos quedamos en la pantalla del ChatBot donde solicitaba 3 variables QnAAuthKey, QnAEndpointHostName y QnAKnowledgebaseId como vemos en pantalla.

Hay que configurar estas variables en las Application Settings de AtencionClientesBot para indicarle los valores que nos retorna la Knowledge Base de QnA Maker justo después de publicar.

Cogemos los valores obtenidos del Publish en QnA Maker cuando tenemos la confirmación desde la HTTP request de Postman, como vemos en la imagen:

Copiamos estos valores en sus casillas correspondientes de Application Setting y pulsamos Save para guardarlos.

Ahora, comprobamos desde la pantalla Test in WebChat: escribimos de nuevo "cómo recuperar mi usuario" o "cómo recupero mi usuario" y vemos que efectivamente funciona.

Con esto ya tenemos todo conectado y funcionando.

Conclusiones

Hemos visto lo fácil que es construir una Knowledge Base con el servicio QnA Maker para dotar de inteligencia a un ChatBot y cómo desde el portal web podemos gestionar y mantener nuestras FAQs.

Esto abre una puerta de grandes oportunidades a las empresas y desarrolladores en un mundo donde los ChatBots aún están en fase de crecimiento.

Con esto concluimos el tercer artículo de la serie. En el próximo publicaremos el ChatBot en Skype y en una página web. Si tenéis dudas o preguntas dejarlas en los comentarios, o a través de nuestra cuenta de Twitter.

Autor

Santi Macias

Microsoft Tech Lead en knowmad mood, +20 años trabajando con tecnologías Microsoft actualmente centrado sobretodo en Azure, Cloud Native, DevOps, Docker, Kubernetes, Microservicios y Serverless.