Bots en Azure: Aplicaciones Conversacionales para Mortales

Bots en Azure: Aplicaciones Conversacionales para Mortales
<span class="bsf-rt-reading-time"><span class="bsf-rt-display-label" prefix="Tiempo de Lectura"></span> <span class="bsf-rt-display-time" reading_time="6"></span> <span class="bsf-rt-display-postfix" postfix="minutos"></span></span><!-- .bsf-rt-reading-time -->
Updated: February 23, 2020

Esta publicación fue migrada desde https://tectimes.net/ sin cambiar su contenido.


Que linda jornada vivimos en Algeiba junto a Net-Baires! En esta ocasión fueron Esteban Mellado y Emanuel Pelroso quienes brindaron una charla sobre Aplicaciones Conversacionales, y específicamente Bots con Azure Bot Service y Bot Framework. Esteban y Emanuel forman parte del equipo de desarrollo de Algeiba, equipo con quién desarrollamos Algie Bot, el Bot Conversacional de Algeiba que hoy está presente en varios clientes en Argentina.

Durante la charla, brindé una intro de qué significa una aplicación conversacional y, específicamente, un Bot Conversacional (o Chatbot). Luego de la charla, se me acercaron varios desarrolladores para ampliar sus preguntas relacionadas al alojamiento de la misma en Azure, el rol de los desarrolladores para este tipo de aplicaciones y otros aspectos técnicos.

Noté una necesidad de aclarar cuáles son los principales componentes en un desarrollo de una aplicación conversacional. Y justamente en esta publicación realizaré un resumen de la jornada, y abordaré varios puntos claves para entender cómo aprovechar Azure para tu Bot.

Aplicaciones Conversacionales

Una Aplicación Conversacional es aquella en la que el usuario y la interfaz “conversan” entre sí, en forma más o menos natural, como si fuesen dos personas. Esta conversación puede darse en forma visual (mensajes escritos) o auditiva (voz). Es importante identificar que estamos hablando del desarrollo de un tipo de interfaz, y justamente esta interfaz es conversacional.

Interfaces Conversacionales

El concepto de las interfaces conversacionales existe casi desde el inicio de la programación. A este respecto, las referencias en ciencia ficción son incontables: por ejemplo la famosa HAL9000, donde este “robot inteligente” tuvo un ataque de psicosis y sus diálogos se parecían mucho a las de una persona:

Las aplicaciones e interfaces conversacionales representan una GRAN posibilidad en relación a las interfaces de usuario, y en términos informáticos permiten a un usuario conectarse con los servicios deseados a través de lenguaje natural.

Si bien existen diversos tipos de aplicaciones conversacionales (uni-direccionales y pluri-direccionales), en este caso nos concentraremos en la segunda: una interfaz con la cual nos comunicamos en un ida y vuelta.

Inteligencia Artificial y Aplicaciones Conversacionales

Este tipo de interfaces necesitan, muchas veces, de la inteligencia artificial para identificar intenciones en lo que el usuario “dijo”. Esto no es un requisito fundamental, pero ayudan mucho a que la interpretación de lo que el usuario escribió o envió por voz sea identificado.

Identificar la intención permite al software poder avanzar en el camino indicado, mediante las opciones programadas en el código. Hoy en día existen soluciones de inteligencia artificial que analizan la sintaxis de lo escrito, y ayudan a poder crear una comprensión lingüística natural. A través de aprendizaje automático personalizado se puede entrenar un modelo pre-formateado de machine learning para asociar expresiones a intensiones del usuario, como por ejemplo “encender la luz”.

La combinación entre inteligencia artificial aplicado a texto de lenguaje natural, identificación de intenciones de dicho texto y una buena interfaz conversacional, podemos brindarle una excelente experiencia a nuestros usuarios “como si hablaran con otro ser humano”.

Microsoft Azure y Aplicaciones Conversacionales

Microsoft Azure nos brinda infinitas posibilidades de construir nuestras aplicaciones utilizando servicios que nos resuelven una parte del desafío de construcción de estas apps:

  • Por un lado tenemos Bot Service + Bot Framework, que nos resuelve gran parte del problema en relación a diálogos (escribo, envío, y espero una respuesta por parte de la aplicación).
  • Por otro lado tenemos LUIS: el motor de análisis de lenguaje de Microsoft Azure.

Por supuesto, lo que no va a resolver Microsoft Azure es la lógica específica de tu negocio (las opciones programáticas detrás de las intenciones que se detecten en lo que dijo o escribió el usuario). Esto es, en sí mismo, una parte FUNDAMENTAL en la RESPONSABILIDAD de los equipos de desarrollo de software: como pasa en software con otro tipo de interfaces.

Bot Service + Bot Framework

Azure Bot Service y Bot Framework son herramientas que facilitan a un desarrollador de software crear, probar, implementar y administrar bots desde un único lugar. En forma sintética, Azure Bot Service y Bot Framework ofrecen:

  • Bot Framework SDK para el desarrollo de bots en varios lenguajes: C#, JavaScript y TypeScript, sumado a los SDK de Java y Python que están en desarrollo.
  • Bot Framework Tools abarca el flujo de trabajo de desarrollo de bots de un extremo a otro.
  • Bot Framework Service (BFS) para enviar y recibir mensajes y eventos entre los bots y los canales, sin necesidad de generar dicha lógica.
  • Implementación de bots y configuración de los canales de Azure.

Además, los bots pueden usar otros servicios de Azure, como por ejemplo:

  • Azure Cognitive Services para crear aplicaciones inteligentes.
  • Azure Storage como solución de almacenamiento en la nube.

Los desarrolladores utilizarán, en mayor o menor medida, todo este conjunto de herramientas para acelerar el desarrollo de un bot, ya sea bidireccional o unidireccional.

Contexto de Turno

En una conversación ordenada y humana :-), las personas a menudo hablan de uno en uno, haciendo turnos para hablar. En el caso de una aplicación conversacional, es decir un bot conversacional, debemos reaccionar a las entradas del usuario generando un flujo de diálogo.

Según mismas palabras de Microsoft: “En Bot Framework SDK, un turno consiste en la actividad de la entrada del usuario en el bot y en cualquier actividad que el bot devuelve al usuario como respuesta inmediata”.

El objeto de contexto de turno proporciona información acerca de la actividad, como el remitente y receptor, el canal y otros datos necesarios para procesar la actividad y entender a quién responderle y en qué charla estamos parados, y bajo qué contexto hacerlo. Por supuesto, la decisión de qué hacer con esa información es del desarrollador.

El contexto de turno es una de las abstracciones más importantes en el SDK de Bot Framework de Microsoft Azure. Es en sí mismo un middleware y dispatcher de la lógica de la aplicación.

LUIS

Ya lo hemos nombrado antes, al menos indirectamente: LUIS (Language Understanding) es un servicio de Microsoft Azure que se consume como API que aplica inteligencia de aprendizaje automático personalizado a un texto de lenguaje natural para predecir el significado global y extraer información pertinente de una entrada del usuario.

Expresiones, Entidades e Intenciones en LUIS.

LUIS trabaja con conceptos como Entidades, Expresiones e Intenciones:

  • Una expresión es lo que el usuario ingresó, ya sea texto o voz convertida a texto. Dicha expresión es la que LUIS analiza.
  • Una entidad es una palabra clave que significa algo. LUIS trabaja con entidades pre-existentes (por ejemplo números, fechas, etc) y nosotros podemos personalizar las entidades con personalizadas (por ejemplo “Mar del Plata” es una entidad de tipo “Destino”).
  • Una intención es el significado global que la expresión tiene. Las intenciones no viene pre-definidas en LUIS. Los usuarios generan una aplicación, y cada aplicación de LUIS (que es un agrupamiento lógico para definir entidades, expresiones de ejemplo e intenciones) tendrá sus propias intenciones. El usuario final, también, es el que entrena el modelo para “enseñarle” a LUIS que la intención “listDestinations” tiene expresiones de ejemplo específicas. Con esa información, el modelo es entrenado y mejora su performance.

El rol del Equipo de Desarrollo

Teniendo todos los servicios anteriormente mencionados como aceleradores de desarrollo, el equipo de desarrollo igualmente sigue teniendo un rol fundamental:

  • Relevar la lógica de negocio requerida.
  • Conocer con qué servicios informáticos nos vamos a conectar.
  • Desarrollar y crear el código de la lógica de negocio requerida.

Entender que Bot Service + LUIS son un gran aliado del desarrollo, pero que no van a resolver la lógica de la aplicación es fundamental para comenzar a derribar los pre-conceptos o creencias mágicas sobre las aplicaciones conversacionales: no se generan solas, no se crean solas, y no está HAL9000 detrás de todo esto. Las aplicaciones deben ser programadas, el analista funcional debe identificar las historias de usuario / casos de uso pertinentes, y el desarrollador debe generar código que tenga coherencia con dicha lógica de negocios.

Resumen de la Jornada

Aquí te mostramos algunas imágenes de la jornada que vivimos en Algeiba con la comunidad. En la primera imagen: Emanuel y Esteban en plena acción.

Emanuel Pelroso y Esteban Mellado durante su charla de aplicaciones conversacionales.

Parte de los participantes del meetup participando atentamente de la charla:

Participantes del Meetup sobre Aplicaciones Conversacionales en Algeiba.

Aquí estoy yo, dando la intro del meetup y fundamentos de Aplicaciones Conversacionales:

Pablo Di Loreto en la meetup de Aplicaciones conversacionales.

A todos los que participaron de la jornada: ¡muchas gracias!

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Service Manager at Algeiba Dev (http://www.algeiba.com), providing services with the vision of create the best technology solutions to transform organizations around the world. I´m also Chief Communications Officer in vOpen (https://vopen.tech), an initiative that connect students, professionals and technology experts around the world to share knowledge, experiences and promote technological innovation. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments