Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

¡Hola Habr! Hoy le mostraremos cómo usar Azure para resolver problemas que normalmente requieren intervención humana. Los agentes pasan mucho tiempo respondiendo las mismas preguntas, atendiendo llamadas telefónicas y mensajes de texto. Los chatbots automatizan la comunicación y el reconocimiento y reducen la carga de las personas. Los bots también se utilizan en Azure DevOps, donde permiten, por ejemplo, aprobar lanzamientos, administrar compilaciones (ver, iniciar y detener) directamente desde Slack o Microsoft Teams. En esencia, un chatbot recuerda un poco a una CLI, solo que interactiva y permite al desarrollador permanecer en el contexto de la discusión del chat.

En este artículo, hablaremos sobre herramientas para crear chatbots, mostraremos cómo se pueden mejorar con servicios cognitivos y describiremos cómo acelerar el desarrollo con servicios listos para usar en Azure.

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Chatbots y servicios cognitivos: ¿cuáles son las similitudes y cuáles las diferencias?

Para crear bots en Microsoft Azure, utiliza Azure Bot Service y Bot Framework. Juntos representan un conjunto de software para crear, probar, implementar y administrar bots, que le permite crear a partir de módulos prefabricados sistemas de comunicación simples y avanzados con soporte de voz, reconocimiento de lenguaje natural y otras capacidades.

Supongamos que necesita implementar un bot simple basado en un servicio corporativo de preguntas y respuestas o, por el contrario, crear un bot funcional con un sistema de comunicación complejo y ramificado. Para ello, puede utilizar una serie de herramientas, divididas en tres grupos: 

  1. Servicios para el desarrollo rápido de interfaces de diálogo (bots).
  2. Servicios de IA cognitiva listos para usar para diferentes casos de uso (reconocimiento de patrones, reconocimiento de voz, base de conocimientos y búsqueda).
  3. Servicios para crear y entrenar modelos de IA.

Normalmente, las personas confunden intuitivamente “bots” y “servicios cognitivos” porque ambos conceptos se basan en el principio de comunicación y el caso de uso de bots y servicios implica diálogos. Pero los chatbots funcionan con palabras clave y desencadenantes, y los servicios cognitivos funcionan con solicitudes arbitrarias que normalmente son procesadas por humanos: 

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Los servicios cognitivos son otra forma de comunicarse con el usuario, ayudando a convertir una solicitud arbitraria en un comando claro y pasárselo al bot. 

Así, los chatbots son aplicaciones para trabajar con solicitudes, y los servicios cognitivos son herramientas de análisis inteligente de solicitudes que se lanzan por separado, pero a las que el chatbot puede acceder, volviéndose “inteligente”. 

Creando chatbots

El diagrama de diseño recomendado para un bot en Azure es el siguiente: 

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Para diseñar y desarrollar bots en Azure, use Marco de bots. Disponible en GitHub ejemplos de robots, las capacidades del framework cambian, por lo que es necesario tener en cuenta la versión del SDK que se utiliza en los bots.

El marco ofrece varias opciones para crear bots: usar código clásico, herramientas de línea de comandos o diagramas de flujo. La última opción visualiza cuadros de diálogo, para ello puede utilizar el administrador Compositor de marco de bot. Se creó sobre el SDK de Bot Framework como una herramienta de desarrollo visual que los equipos interdisciplinarios podrían utilizar para crear bots.

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Bot Framework Composer te permite utilizar bloques para crear una estructura de diálogo con la que trabajará el bot. Además, puedes crear disparadores, es decir, palabras clave a las que reaccionará el bot durante el diálogo. Por ejemplo, las palabras “operador”, “robo” o “detener” y “suficiente”.

En Bot Framework Composer, puede crear sistemas de diálogo complejos utilizando Diálogos adaptativos. Los diálogos pueden utilizar tanto servicios cognitivos como tarjetas de eventos (Tarjetas Adaptativas):

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Después de la creación, puede implementar el chatbot en una suscripción y un script preparado automáticamente creará todos los recursos necesarios: servicios cognitivos, plan de aplicación, Application Insights, base de datos, etc.

QnA Maker

Para crear bots simples basados ​​en bases de datos corporativas de preguntas y respuestas, puede utilizar el servicio cognitivo QnA Maker. Implementado como un simple asistente web, le permite ingresar un enlace a una base de conocimiento corporativa (URL de preguntas frecuentes) o utilizar una base de datos de documentos en formato *.doc o *.pdf como base. Después de crear el índice, el bot seleccionará automáticamente las respuestas más adecuadas a las preguntas del usuario.

Con QnAMaker, también puede crear cadenas de preguntas aclaratorias con la creación automática de botones, complementar la base de conocimientos con metadatos y capacitar aún más el servicio durante su uso.

El servicio se puede utilizar como un chatbot que implementa solo esta función, o como parte de un chatbot complejo que utiliza, según la solicitud, otros servicios de IA o elementos del Bot Framework.

Trabajar con otros servicios cognitivos

Hay muchos servicios cognitivos diferentes en la plataforma Azure. Técnicamente, estos son servicios web independientes a los que se puede llamar desde código. En respuesta, el servicio envía un json de un formato determinado, que se puede utilizar en el chatbot.

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma
Los usos más comunes de los chatbots son:

  1. Reconocimiento de texto.
  2. Reconocimiento de categorías de imágenes del Servicio de visión personalizado definidas por el desarrollador (caso de producción: reconocimiento de si un empleado lleva casco, gafas o máscara).
  3. Reconocimiento facial (un excelente caso de uso es comprobar si la persona encuestada publicó su propia cara o, por ejemplo, una foto de un perro o una foto de una persona de diferente sexo).
  4. Reconocimiento de voz.
  5. Análisis de imagen.
  6. Traducción (todos recordamos cuánto ruido causó la traducción simultánea en Skype).
  7. Revisión ortográfica y sugerencias para corregir errores.

LUIS

Además, para crear bots es posible que necesites LUIS (Servicio inteligente de comprensión del lenguaje). Objetivos del servicio:

  • Determine si la afirmación del usuario tiene sentido y si la respuesta del bot es necesaria.
  • Reduzca los esfuerzos para transcribir el discurso (texto) del usuario en comandos comprensibles para el bot.
  • Prediga los verdaderos objetivos/intenciones del usuario y extraiga información clave de las frases del diálogo.
  • Permita que el desarrollador inicie el bot utilizando solo algunos ejemplos de reconocimiento de significado y posterior capacitación adicional del bot durante la operación.
  • Permita que el desarrollador utilice la visualización para evaluar la calidad de la transcripción de comandos.
  • Contribuir a mejoras incrementales en el reconocimiento real de objetivos.

De hecho, el objetivo principal de LUIS es comprender con cierta probabilidad lo que quiso decir el usuario y convertir una solicitud natural en una orden armoniosa. Para reconocer los valores de consulta, LUIS utiliza un conjunto de intenciones (significados, intenciones) y entidades (ya sea preconfiguradas por los desarrolladores o "dominios" tomados y preformados, algunas bibliotecas de frases estándar preparadas por Microsoft). 

Un ejemplo sencillo: tienes un bot que te da una previsión meteorológica. Para él, la intención será traducir una solicitud natural en una “acción”: una solicitud de pronóstico del tiempo, y las entidades serán el tiempo y el lugar. A continuación se muestra un diagrama de cómo funciona la intención de CheckWeather para dicho bot.

Intención
Esencia
Ejemplo de consulta natural

Comprobar el tiempo
{"tipo": "ubicación", "entidad": "moscú"}
{"tipo": "integrado.datetimeV2.date", "entidad": "futuro","resolución":"2020-05-30"}
¿Cómo estará el tiempo mañana en Moscú?

Comprobar el tiempo
{ "type": "date_range", "entity": "este fin de semana" }
Muéstrame el pronóstico para este fin de semana.

Para combinar QnA Maker y LUIS puedes usar Coordinadora de servicio

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Cuando trabaja con QnA Maker y recibe una solicitud de un usuario, el sistema determina qué porcentaje de probabilidad la respuesta de QnA coincide con la solicitud. Si la probabilidad es alta, el usuario simplemente recibe una respuesta de la base de conocimiento corporativa; si es baja, la solicitud se puede enviar a LUIS para obtener una aclaración. El uso de Dispatcher le permite no programar esta lógica, sino determinar automáticamente este borde de separación de solicitudes y distribuirlas rápidamente.

Probar y publicar el bot

Se utiliza otra aplicación local para realizar pruebas, Emulador de marco de bot. Usando el emulador, puedes comunicarte con el bot y verificar los mensajes que envía y recibe. El emulador muestra mensajes tal como aparecerían en una interfaz de chat web y registra solicitudes y respuestas JSON al enviar mensajes al bot.

En esta demostración se presenta un ejemplo del uso del emulador, que muestra la creación de un asistente virtual para BMW. El video también habla sobre nuevos aceleradores para la creación de chatbots: plantillas:

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma
https://youtu.be/u7Gql-ClcVA?t=564

También puedes utilizar plantillas al crear tus chatbots. 
Las plantillas le permiten no escribir funciones de bot estándar de nuevo, sino agregar código ya preparado como una "habilidad". Un ejemplo podría ser trabajar con un calendario, concertar citas, etc. Código de habilidades ya preparado publicado en github.

La prueba fue exitosa, el bot está listo y ahora es necesario publicarlo y conectar los canales. La publicación se realiza mediante Azure y se pueden utilizar mensajeros o redes sociales como canales. Si no tiene el canal requerido para ingresar datos, puede buscarlo en la comunidad correspondiente en GitHab. 

Además, para crear un chatbot completo como interfaz para comunicarse con el usuario y servicios cognitivos, necesitará, por supuesto, servicios adicionales de Azure, como bases de datos, sin servidor (Azure Functions), así como servicios LogicApp y, posiblemente , Cuadrícula de eventos.

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

Evaluación y análisis

Para evaluar la interacción del usuario, puede utilizar tanto el análisis integrado del servicio Azure Bot como el servicio especial Application Insights.

Como resultado, puede recopilar información según los siguientes criterios:

  • Cuántos usuarios accedieron al bot desde varios canales durante el período de tiempo seleccionado.
  • Cuántos usuarios que enviaron un mensaje regresaron más tarde y enviaron otro.
  • Cuántas acciones se enviaron y recibieron utilizando cada canal durante el intervalo de tiempo especificado.

Utilizando Application Insights, puedes monitorear cualquier aplicación en Azure y, en particular, los chatbots, obteniendo datos adicionales sobre el comportamiento de los usuarios, las cargas y las reacciones de los chatbots. Cabe señalar que el servicio Application Insights tiene su propia interfaz en el portal de Azure.

También puede utilizar los datos recopilados a través de este servicio para crear visualizaciones e informes analíticos adicionales en PowerBI. Se puede tomar un ejemplo de dicho informe y plantilla para PowerBI. aquí.

Aceleramos el desarrollo utilizando los servicios de Azure: creamos chatbots y servicios cognitivos utilizando la plataforma

¡Gracias a todos por su atención! En este artículo utilizamos material Del seminario web de la arquitecta de Microsoft Azure Anna Fenyushina “Cuando la gente no tiene tiempo. Cómo utilizar 100% chatbots y servicios cognitivos para automatizar procesos de rutina”, donde mostramos claramente qué son los chatbots en Azure y cuáles son los escenarios para su uso, y también demostramos cómo crear un bot en QnA Maker en 15 minutos y cómo La estructura de la consulta se descifra en LUIS. 

Realizamos este seminario web como parte del maratón en línea para desarrolladores Dev Bootcamp. Se trataba de productos que aceleran el desarrollo y alivian parte de la carga de trabajo rutinaria de los empleados de la empresa utilizando herramientas de automatización y módulos de Azure preconfigurados y listos para usar. Las grabaciones de otros seminarios web incluidos en el maratón están disponibles en los siguientes enlaces:

Fuente: habr.com

Añadir un comentario