¡Hola, Habr! Hoy hablaremos sobre cómo resolver tareas que normalmente requieren intervención humana utilizando Azure. Los operadores pasan mucho tiempo respondiendo a las mismas preguntas, gestionando llamadas telefónicas y mensajes de texto. Los chatbots automatizan la comunicación y el reconocimiento, lo que reduce la carga sobre las personas. Además, los bots se utilizan en Azure DevOps, donde permiten, por ejemplo, aprobar lanzamientos, gestionar compilaciones —ver, iniciar y detener— directamente desde Slack o Microsoft Teams. En esencia, un chatbot se asemeja a un CLI, solo que es interactivo y permite al desarrollador no salir del contexto de la conversación en el chat.
En este artículo, hablaremos sobre las herramientas para crear chatbots, mostraremos cómo se pueden mejorar utilizando servicios cognitivos, y describiremos cómo acelerar el desarrollo gracias a los servicios listos en Azure.

Chatbots y servicios cognitivos: similitudes y diferencias
Para crear bots en Microsoft Azure, se utilizan el servicio Azure Bot y la plataforma Bot Framework. Juntos, representan un conjunto de software para construir, probar, desplegar y administrar bots, que permite crear sistemas de comunicación simples y avanzados con soporte de voz, reconocimiento de lenguaje natural y otras capacidades.
Supongamos que necesita implementar un bot sencillo 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, que se dividen en tres grupos:
- Servicios de desarrollo rápido de interfaces de diálogo (bots).
- Servicios cognitivos de IA listos para diferentes escenarios de uso (reconocimiento de imágenes, voz, base de conocimiento y búsqueda).
- Servicios para crear y entrenar modelos de IA.
Normalmente, las personas mezclan intuitivamente "bots" y "servicios cognitivos", porque ambos conceptos se basan en el principio de comunicación, y en los escenarios de uso de bots y servicios hay diálogos. Pero los chatbots trabajan con palabras clave y disparadores, mientras que los servicios cognitivos manejan solicitudes arbitrarias que generalmente son procesadas por humanos:

Los servicios cognitivos son otra forma de comunicación con el usuario, ayudando a convertir una consulta arbitraria en un comando claro y transmitirlo al bot.
Así, los chatbots son aplicaciones para manejar solicitudes, mientras que los servicios cognitivos son herramientas de análisis inteligente de solicitudes que se ejecutan por separado, pero a las que el chatbot puede acceder, volviéndose 'inteligente'.
Creación de chatbots
El esquema de diseño recomendado para un bot en Azure es el siguiente:

Para el diseño y desarrollo de bots en Azure se utiliza . En GitHub hay , las capacidades del marco cambian, por lo que es necesario tener en cuenta la versión del SDK que se usa en los bots.
El marco implica varias formas de crear bots: usando código clásico, herramientas de línea de comando o diagramas de bloques. Esta última opción visualiza los diálogos, para lo cual se puede usar el gestor . Fue creado sobre la base del Bot Framework SDK como una herramienta de desarrollo visual que los equipos interdisciplinarios podrían utilizar para crear bots.

Bot Framework Composer permite crear la estructura de un diálogo con bloques, que el bot utilizará. Además, se pueden crear disparadores, es decir, palabras clave a las que el bot responderá durante el diálogo. Por ejemplo, palabras como 'operador', 'robo' o 'detente' y 'basta'.
En Bot Framework Composer se puede crear un sistema de diálogos ramificados complejos, utilizando . Los diálogos pueden utilizar tanto servicios cognitivos como tarjetas de eventos (Adaptive Cards):

Después de la creación, se puede desplegar el chatbot en la 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, se puede utilizar el servicio cognitivo QnA Maker. Implementado como un simple asistente web, permite ingresar un enlace a la base de conocimientos corporativa (FAQ Urls) o usar una base de documentos en formato *.doc o *.pdf. 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 se pueden crear cadenas de preguntas aclaratorias con la generación automática de botones, complementar la base de conocimientos con metadatos y continuar entrenando el servicio durante su uso.
El servicio se puede utilizar como un chatbot que solo implementa esta función, o como parte de un chatbot más complejo que, dependiendo de la solicitud, utiliza otros servicios de IA o elementos del Bot Framework.
Trabajo con otros servicios cognitivos
En la plataforma Azure hay muchos servicios cognitivos diferentes. Técnicamente son servicios web independientes que se pueden invocar desde el código. En respuesta, el servicio envía un json de un formato específico, que se puede utilizar en el chatbot.

Con más frecuencia, en los chatbots se pueden utilizar los siguientes:
- Reconocimiento de texto.
- Reconocimiento de categorías de imágenes definidas por el desarrollador utilizando el Custom Vision Service (caso de uso en producción: reconocimiento de si un empleado está usando un casco, gafas de protección o una máscara).
- Reconocimiento facial (un excelente caso de uso es verificar si la persona en la foto es realmente el encuestado, en lugar de una foto de un perro o de una persona de otro género).
- Reconocimiento de voz.
- Análisis de imágenes.
- Traducción (todos recordamos el revuelo que causó la traducción simultánea en Skype).
- Verificación de ortografía y sugerencias para corregir errores.
LUIS
También puede ser necesario para crear bots (Language Understanding Intelligent Service). Las tareas del servicio son:
- Determinar si la afirmación del usuario tiene sentido y si se requiere una reacción del bot.
- Reducir el esfuerzo de transcripción del habla (texto) del usuario en comandos comprensibles para el bot.
- Predecir las verdaderas metas/intenciones del usuario y extraer información clave de las frases en el diálogo.
- Permitir al desarrollador iniciar el bot usando solo algunos ejemplos de reconocimiento de intenciones y luego continuar entrenando el bot durante su funcionamiento.
- Permitir al desarrollador utilizar visualización para evaluar la calidad de la transcripción de comandos.
- Ayudar en las mejoras graduales del reconocimiento de las verdaderas metas.
Esencialmente, el objetivo principal de LUIS es comprender con cierta probabilidad lo que el usuario quiere decir y convertir la solicitud natural en un comando estructurado. Para reconocer los significados de las solicitudes, LUIS utiliza un conjunto de intenciones y entidades (ya sea configuradas por los desarrolladores o tomadas de «dominios» precargados: algunas bibliotecas de frases prediseñadas preparadas por Microsoft).
Un ejemplo simple: tienes un bot que proporciona pronósticos del clima. Para él, la intención será convertir una solicitud natural en una «acción» - solicitar el pronóstico del clima, y las entidades serán el tiempo y el lugar. Presentamos un esquema de funcionamiento de la intención CheckWeather para dicho bot.
Intención
Entidad
Ejemplo de solicitud natural
CheckWeather
{«type»: «location», «entity»: «moscu»}
{«type»: «builtin.datetimeV2.date», «entity»: «futuro », "resolution": "2020-05-30"}
¿Qué clima habrá mañana en Moscú?
CheckWeather
{«type»: «date_range», «entity»: «este fin de semana»}
Muéstrame el pronóstico para este fin de semana
Para la combinación de QnA Maker y LUIS se puede usar .

Cuando trabajas con QnA Maker y recibes una solicitud de un usuario, el sistema determina con qué porcentaje de probabilidad la respuesta de QnA se ajusta a la solicitud. Si la probabilidad es alta, se entrega la respuesta de la base de conocimiento corporativa, si es baja, la solicitud puede ser enviada a LUIS para mayor claridad. Usar Dispatcher permite no programar esta lógica, sino determinar automáticamente esta frontera de separación de solicitudes y distribuirlas con rapidez.
Pruebas y publicación del bot
Para las pruebas se utiliza otra aplicación local, . Con el emulador se puede interactuar con el bot y verificar los mensajes que envía y recibe. El emulador muestra los mensajes tal como aparecerán en la interfaz de chat web y registra las solicitudes y respuestas JSON durante el intercambio de mensajes con el bot.
Un ejemplo de uso del emulador se presenta en esta demostración, donde se muestra la creación de un asistente virtual para BMW. También en el video se habla de nuevos aceleradores para la creación de chatbots: plantillas.

También puedes usar plantillas al crear tus propios chatbots.
Las plantillas permiten no tener que escribir funciones de bot estándar de nuevo, sino agregar código ya preparado como 'habilidad'. Un ejemplo podría ser trabajar con un calendario, programar reuniones, etc. Código de habilidades preparadas en github.
Las pruebas han sido exitosas, el bot está listo y ahora debe publicarse y conectarse a los canales. La publicación se realiza a través de Azure, y se pueden utilizar mensajeros o redes sociales como canales. Si no hay el canal necesario para la entrada de datos, se puede buscar en la comunidad correspondiente en GitHab.
Además, para crear un bot de chat completo como interfaz de comunicación con los usuarios y servicios cognitivos, necesitará, por supuesto, servicios adicionales de Azure, como bases de datos, serverless (Azure Functions), así como servicios LogicApp y, posiblemente, Event Grid.

Evaluación y análisis
Para evaluar la interacción con los usuarios, se puede utilizar tanto la analítica integrada de Azure Bot Service como el servicio especial Application Insights.
Como resultado, se puede recopilar información sobre los siguientes criterios:
- Cuántos usuarios accedieron al bot desde varios canales durante el período seleccionado.
- Cuántos usuarios, después de enviar un mensaje, regresaron más tarde y enviaron otro.
- Cuántas acciones se enviaron y recibieron a través de cada canal durante el intervalo de tiempo indicado.
Con Application Insights, se pueden monitorear cualquier aplicación en Azure y, en particular, bots de chat, obteniendo datos adicionales sobre el comportamiento de los usuarios, cargas y reacciones del bot. Es importante señalar que el servicio Application Insights tiene su propia interfaz en el portal de Azure.
Además, los datos recopilados a través de este servicio pueden utilizarse para crear visualizaciones adicionales e informes analíticos en PowerBI. Un ejemplo de dicho informe y una plantilla para PowerBI se pueden obtener .

¡Gracias a todos por su atención! En este artículo hemos utilizado del webinar de la arquitecta de Microsoft Azure, Anna Fenюшина ‘Cuando las personas no tienen tiempo. Cómo usar al 100% bots de chat y servicios cognitivos para automatizar procesos rutinarios’, en el que mostramos visualmente qué son los bots de chat en Azure y cuáles son los escenarios de su aplicación, así como demostramos cómo crear un bot en QnA Maker en 15 minutos y cómo se descifra la estructura de las solicitudes en LUIS.
Hemos realizado este webinar como parte del maratón en línea para desarrolladores Dev Bootcamp. En él, hablamos sobre productos que aceleran el desarrollo y alivian parte de la carga rutinaria de los empleados de la empresa utilizando herramientas de automatización y módulos preconfigurados de Azure. Las grabaciones de otros webinars que formaron parte del maratón están disponibles en los siguientes enlaces:
-
Hablamos sobre la evolución y las nuevas posibilidades del servicio Azure DevOps. Desglosamos en detalle sus cinco componentes principales y cómo el servicio ayuda a las organizaciones en el desarrollo industrial de software. El presentador es Vladimir Gusаров, Microsoft MVP.
Analizamos cómo implementar el enfoque de "compilación como código" para cualquier lenguaje de programación utilizando pipelines YAML multi-etapa. El presentador es Vladimir Gusаров, Microsoft MVP.
Discutimos cómo desarrollar estrategias para el almacenamiento del código fuente de software y cómo utilizar sistemas de control de versiones con Azure Repos. El presentador es Vladimir Gusarod, Microsoft MVP.
Presentamos metodologías para la gestión de open source en el desarrollo y la aplicación práctica de la herramienta WhiteSource. Hablamos sobre la búsqueda de vulnerabilidades en componentes de código abierto y el cumplimiento de la limpieza de licencias utilizando WhiteSource. Los presentadores son Diana Lisbaron, Directora de Ventas de WhiteSource, y Daria Oreshkina, Control de Web, distribuidor oficial de WhiteSource en Rusia.
Fuente: habr.com
