El bot nos ayudará

El bot nos ayudará

Hace un año, nuestro querido departamento de Recursos Humanos nos pidió que escribiéramos un chat bot que ayudara con la adaptación de los recién llegados a la empresa.

Hagamos una reserva de que no desarrollamos nuestros propios productos, pero brindamos a los clientes una gama completa de servicios de desarrollo. La historia tratará sobre nuestro proyecto interno, cuyo cliente no es una empresa tercera, sino nuestro propio RRHH. Y la tarea principal, dada la disponibilidad limitada de personas, recursos y tiempo, es completar el proyecto a tiempo y lanzar el producto.

Primero, describamos los problemas que había que resolver.

Los desarrolladores son en su mayoría personas introvertidas y no les gusta hablar; es mucho más fácil escribir tu pregunta en un chat por correo electrónico. Con un bot, no tienes que pensar a quién preguntar, a quién llamar, adónde ir y, en general, dónde buscar información y si es relevante.

El segundo problema es la información: hay mucha, se encuentra en diferentes fuentes, no siempre está disponible y necesita ser ampliada y actualizada constantemente.

La empresa tiene casi 500 empleados, están ubicados en diferentes oficinas, zonas horarias, ciudades de Rusia e incluso en el extranjero, suele haber muchas preguntas, por lo que otra tarea es reducir la carga para el personal de RR.HH. asociada a las preguntas más frecuentes. por los empleados.

También fue necesario automatizar los procesos de: incorporación de recién llegados a la empresa, envío de mensajes a gerentes y mentores de recién llegados, envío de recordatorios automáticos sobre cursos y pruebas que un recién llegado debe aprobar para una adaptación exitosa.

Los requisitos técnicos se formaron en base a los requisitos comerciales.

El bot debe funcionar a través de Skype (históricamente lo usan en la empresa), por lo que se optó por el servicio Azura.

Para restringir el acceso al mismo, comenzamos a utilizar el mecanismo de autorización a través de Skype.
La biblioteca ParlAI se utilizó para el reconocimiento de texto.

También se requiere un portal web administrativo para configuración, capacitación, depuración, configuración de correos y otras tareas.

El bot nos ayudará

Mientras trabajábamos en el proyecto, nos encontramos con una serie de problemas y dificultades.

Por ejemplo, hubo problemas técnicos con una cuenta de Azure. Microsoft no quiso activar nuestra suscripción debido a algunas dificultades técnicas dentro de su servicio. Durante casi dos meses no pudimos hacer nada al respecto; el soporte de Microsoft finalmente se dio por vencido y nos envió a socios, quienes configuraron todo con éxito y nos dieron una cuenta.

La etapa más difícil fue el inicio del proyecto, cuando es necesario elegir qué usaremos, cuál será la arquitectura, cómo y dónde almacenar los datos y cómo interactuarán los componentes y módulos del sistema entre sí.

En nuestro caso, los problemas esencialmente ordinarios de iniciar cualquier proyecto se complicaron aún más por la dotación de personal. Las características específicas de nuestro negocio son tales que, a diferencia de los comerciales, en los proyectos internos a menudo trabajan desarrolladores que no tienen conocimientos suficientes en las áreas requeridas; simplemente, por voluntad del destino, terminaron en el banquillo esperando el siguiente. gran proyecto comercial genial. Es lógico que las cosas también fueran muy difíciles con la motivación en una situación así. La productividad cae, el equipo a menudo está inactivo y, como resultado, hay que persuadir (motivar) o cambiar a la persona. Al cambiar de desarrollador, es necesario realizar capacitación, transferir conocimientos y, esencialmente, comenzar el proyecto nuevamente. Cada nuevo desarrollador vio la arquitectura a su manera y reprendió a los anteriores por las decisiones que tomaron y el código de otras personas. La reescritura comenzó desde cero.

Esto continuó durante unos seis meses. Simplemente estábamos marcando el tiempo, refactorizando el código y sin escribir nada nuevo.

Además, en los proyectos internos, por regla general, casi no hay documentación y era difícil entender qué se debe hacer en cada momento y cuáles son las prioridades actuales. Fue necesario crear un equipo permanente, establecer procesos y realizar planificación y evaluación durante al menos tres meses. Pero, ¿cómo hacer esto cuando el proyecto no es comercial, lo que significa que es necesario invertir un mínimo de horas de mano de obra y, al mismo tiempo, obtener el resultado no peor que el de un cliente externo?

Hemos identificado un grupo de recursos que participaron en el desarrollo del proyecto, están familiarizados con él y quieren trabajar en él. Elaboramos un cronograma para el empleo de personas en proyectos. Evaluamos y coordinamos el trabajo, y encajamos estos trabajos en los “huecos” entre los proyectos principales. Después de 4 meses recibimos un prototipo funcional de la aplicación.

Ahora hablemos con más detalle sobre la funcionalidad, la arquitectura y las soluciones técnicas del bot.

Uno de los principales requisitos de RRHH era reconocer el texto escrito por el usuario para responder correctamente a la pregunta. Puede escribirle: Quiero irme de vacaciones, Quiero irme de vacaciones o Me gustaría irme de vacaciones, y él lo entenderá y responderá en consecuencia. O de repente a un empleado se le rompe la silla y quiere escribir “la silla está rota” o “Mi silla está rota” o “El respaldo de la silla se ha caído”; con el entrenamiento adecuado, el robot reconocerá tales solicitudes. La calidad del reconocimiento de texto en sí depende del entrenamiento del bot, del que hablaremos más adelante.

El siguiente requisito y parte de la funcionalidad es el sistema de diálogo del bot. Se desarrolló un sistema en el que el bot puede dialogar y comprender el contexto del problema actual. En respuesta a su pregunta, puede hacer preguntas aclaratorias y continuar la conversación si hemos entrenado al robot para hacer esto. Skype admite opciones de menú simples para informar a los usuarios sobre las opciones para continuar las conversaciones. Además, si estábamos dialogando, pero de repente decidimos hacer una pregunta fuera de tema, el bot también lo entenderá.

El bot permite enviar varios artefactos al usuario en función de sus datos personales. Por ejemplo, en su ubicación. Supongamos que si una persona quisiera encontrar un baño, se le mostraría un mapa de la oficina que lo llevaría al baño. Y la tarjeta se seleccionará en función de en qué oficina de la empresa se encuentre el empleado.

Una de las tareas más importantes es proteger la información personal de los usuarios. No podemos permitir que todas las personas tengan acceso a los datos confidenciales que opera nuestro bot. La necesidad de autorización para dicho bot es una parte integral del mismo. El bot le pide al usuario que se autentique antes de poder dialogar con él. Esto sucede la primera vez que un empleado contacta al bot. La autorización en sí redirige al usuario a la página correspondiente, donde recibe un token, que luego inserta en un mensaje de Skype. Si la autorización es exitosa, puede comenzar a comunicarse con el bot.

El bot nos ayudará

La autorización se realiza a través de Skype: servicio de autorización de portal, red corporativa y LDAP. Por tanto, la autorización depende de los datos del usuario actual en la red corporativa.

En el proceso de desarrollo del bot, nos dimos cuenta de que necesitábamos algún tipo de sistema integrado en la funcionalidad del portal que pudiera ayudar a RR.HH. a depurar rápidamente el bot. Hemos agregado una página de portal donde RR.HH. puede ver los errores registrados por los usuarios al trabajar con el bot y resolverlos mediante reentrenamiento o dejarlos para los desarrolladores.

La posibilidad de entrenar un bot directamente en el portal no se incluyó desde el principio. Durante el proceso de desarrollo, nos dimos cuenta de que entrenar el bot es la tarea más común que realizarán los empleados del departamento de recursos humanos cuando trabajan con él, y enviar archivos de texto a los desarrolladores para una capacitación adicional del bot es completamente inaceptable. Esto consume demasiado tiempo y crea demasiados errores y problemas.

El bot nos ayudará

Escribimos una interfaz de usuario en el portal para la capacitación del bot fácil de usar. Permite a RR.HH. ver la capacitación actual del bot, entrenarlo más y realizar ajustes en la capacitación actual. El entrenamiento está representado por una estructura de árbol en la que los nodos, es decir, las ramas, son una continuación del diálogo con el bot. Puede crear preguntas y respuestas sencillas, o puede crear diálogos importantes, todo depende de RR.HH. y sus necesidades.

Algunas palabras sobre la arquitectura de la solución.

El bot nos ayudará

La arquitectura de la solución es modular. Incluye servicios responsables de diversas tareas, a saber:
• Servicio de bot de Skype en Azure: acepta y procesa solicitudes de usuarios. Este es un servicio bastante simple que es el primero en recibir una solicitud y realizar su procesamiento inicial.
• Portal de administración: un servicio que proporciona una interfaz web para configurar el portal y el propio bot. El bot siempre se comunica primero con el portal y el portal decide qué hacer a continuación con la solicitud.
• Servicio de autorización: proporciona mecanismos de autenticación para el bot y el portal de administración. La autorización se produce a través del protocolo Oauth2. Con autorización positiva, el servicio realiza la autorización en la red corporativa según datos válidos del usuario, de modo que el sistema pueda controlar errores asociados a datos desincronizados.
• Módulo de reconocimiento de texto AI, escrito en Python y que utiliza el marco ParlAI para el reconocimiento de texto. Esta es una red neuronal, al menos en su implementación actual. Usamos el algoritmo tfDiff para comprender las preguntas. El módulo proporciona una API para comunicarse con él y aprender.

En conclusión, quiero decir que esta es nuestra primera experiencia en la creación de un chat bot, y tratamos de hacer que el sistema sea lo más simple posible, pero al mismo tiempo funcional, con costos laborales mínimos. Creo que tenemos un producto muy interesante. Con su propio sistema de formación, registro de errores, envío de notificaciones, también se puede integrar con cualquier otro mensajero.

Fuente: habr.com

Añadir un comentario