Correo electrónico | nube@criptonube.com

Implementando un chatbot de preguntas y respuestas con Amazon Lex y Amazon Kendra

Amazon Kendra es un servicio de búsqueda basado en machine learning, que permite realizar la búsqueda de datos no estructurados y estructurados utilizando procesamiento de lenguaje natural. El servicio devuelve respuestas específicas a las preguntas desde un documento, ya sea un fragmento de texto, una pregunta frecuente o un documento PDF.

Amazon Kendra es completamente administrado, por lo que no hay que aprovisionar servidores ni encargarse del mantenimiento, creación o implementación de modelos de Machine Learning.

Por su parte, Amazon Lex es un servicio de AWS que permite crear interfaces de conversación con voz y texto en cualquier aplicación, basado en la misma tecnología de Alexa. Amazon Lex permite integrar chatbots sofisticados con reconocimiento del habla y comprensión del lenguaje natural en tanto aplicaciones nuevas como en las ya existentes.

Ambos servicios son altamente compatibles entre sí, y combinados, generan una solución muy poderosa para dar una respuesta útil a las preguntas de nuestros usuarios, permitiendo que puedan interactuar con un chatbot para generar dichas preguntas, y que Kendra pueda responderlas a partir de la información con la que alimentamos al servicio. Todo completamente administrado sin que debamos preocuparnos en ningún momento por aprovisionar la infraestructura necesaria para su uso y su escalamiento.

Paso 1 — Crear un chatbot en Amazon Lex

Como primer paso para realizar la integración de ambos servicios, crearemos un chatbot simple utilizando la consola de AWS. Para ello buscamos el servicio de Amazon Lex y haremos click en donde dice “Create bot”.

Luego llenaremos las configuraciones de la siguiente forma:

  • Bot name: FAQ_Kendra_bot
  • IAM permissions: Seleccionamos la opción de “Create a role with basic Amazon Lex permissions”
  • Children’s Online Privacy Protection Act (COPPA): No
  • Language: English (US)

Dejamos el resto de configuraciones son sus valores por defecto y le damos click donde dice “Done”.

Paso 2 — Crear un índice en Amazon Kendra

Un índice contiene el contenido de los documentos y está estructurado de manera que se puedan hacer búsquedas sobre ellos. Este puede crearse a través de la consola de AWS, la línea de comandos (AWS CLI) o llamando a la API con la acción CreateIndex.

En este caso utilizaremos la consola directamente. Buscamos el servicio de Amazon Kendra y hacemos click en donde dice “Create an Index

Luego llenaremos las configuraciones de la siguiente forma:

  • Index name: lex-faq-index
  • IAM role: Create a new role (Recommended)
  • Role name: AmazonKendra-us-east-1-lex-faq-index-role
  • Provisioning editions: Amazon Kendra viene en dos ediciones, Developer edition y Enterprise edition, donde ambas varían en la capacidad que contienen y las zonas de disponibilidad donde son levantadas. En este caso seleccionamos la que dice “Developer edition” la cual es ideal para explorar el servicio, cómo indexa documentos, y desarrollar aplicaciones que lo utilicen. La Developer edition ofrece todas las funciones de Amazon Kendra a un menor costo.

Dejamos el resto de configuraciones son sus valores por defecto y le damos click donde dice “Create”.

Esperamos a que se cree el índice de Amazon Kendra. Este proceso demora en promedio 15 minutos, pero puede llegar a tardarse hasta 30 minutos.

Paso 3 — Agregar contenido al índice de Amazon Kendra

Cuando el índice ya esté activo, podemos agregar fuentes de datos. Para ello hacemos click sobre el botón de “Add data sources

Hacemos click sobre la opción de “Select sample data set (Amazon S3 data source)” para agregar un sample dataset de documentación de AWS. Los campos siguientes los vamos llenando como:

  • Data source name: aws-faq-source
  • Language: English (en)

Y luego hacemos click en el botón de “Add data source” y esperamos a que se cree la fuente de datos.

Paso 4 — Conectar al chatbot en Amazon Lex con Kendra

Para integrar los servicios, primero debemos crear un enunciado requerido dentro de Amazon Lex con una sample utterance. Este enunciado es requerido para crear el chatbot, pero no es utilizado para dar respuesta a las preguntas frecuentes. Para ello bajo FAQ_Kendra_bot > Bot version > Draft version > English (US) hacemos click en “Add intent” y luego en “Add empty intent”.

Luego, llenamos el intento como:

  • Intent name: RequiredIntent
  • Sample utterance: Required utterance

Y hacemos click sobre “Save intent

Ahora editaremos nuestro chatbot para que redirija las preguntas de los usuarios hacia Kendra. Para ello, regresamos al servicio de Amazon Lex y bajo FAQ_Kendra_bot > Bot version > Draft version > English (US) hacemos click en “Add intent” y luego en “Use built-in intent

Llenamos la ventana que nos aparece de la siguiente forma:

Hacemos click sobre el botón de “Add” y luego sobre “Build”.

Ahora en la parte de abajo, sobre “Test” podemos interactuar con nuestro chatbot.

¡Listo! Hemos creado un chatbot de preguntas frecuentes, alimentando a Kendra con información sobre los servicios de AWS, y utilizando Amazon Lex para interactuar con nuestros usuarios y capturar sus preguntas. Para este ejercicio utilizamos un sample dataset sobre los servicios de AWS, pero Amazon Kendra puede indexar archivos HTML, documentos de Microsoft Word, documentos PDF, presentaciones de Microsoft Power Point, entre otros, y darnos la capacidad de responder preguntas útiles para nuestros usuarios haciendo uso de servicios completamente administrados y que pueden ser desplegados en cuestión de minutos.

Autor: Andrea Monzón – Cloud Engineer at Criptonube

Más temas que te pueden interesar: