O bot vai nos ajudar

O bot vai nos ajudar

Há um ano, nosso querido departamento de RH nos procurou com um pedido: criar um chatbot que auxiliasse na integração de novos funcionários à empresa.

Para esclarecer, não desenvolvemos produtos próprios, mas oferecemos uma gama completa de serviços de desenvolvimento aos nossos clientes. Esta história se refere a um projeto interno, cujo cliente não é uma empresa terceirizada, mas sim o nosso próprio departamento de RH. O principal objetivo, considerando a disponibilidade limitada de pessoas, recursos e tempo, é concluir o projeto dentro do prazo e lançar o produto.

Primeiramente, vamos descrever as tarefas que precisavam ser resolvidas.

Os desenvolvedores geralmente são introvertidos e não gostam de conversar, então é muito mais fácil escrever sua pergunta em um chat por e-mail. Com um bot, você não precisa se preocupar com quem perguntar, para quem ligar, para onde ir ou mesmo onde procurar informações, ou se elas estão atualizadas.

O segundo problema é a informação: existe muita, provém de diferentes fontes, nem sempre está disponível e precisa ser constantemente complementada e atualizada.

A empresa possui quase 500 funcionários, distribuídos em diferentes escritórios, fusos horários e cidades por toda a Rússia e até mesmo no exterior. Geralmente, surgem muitas dúvidas, portanto, outro desafio é reduzir a carga de trabalho da equipe de RH em relação às perguntas mais frequentes.

Também foi necessário automatizar os seguintes processos: integração de novos funcionários, envio de mensagens para gerentes e mentores de novos funcionários e envio de lembretes automáticos sobre cursos e testes que os novos funcionários devem concluir para uma adaptação bem-sucedida.

Com base nas necessidades do negócio, foram definidos os requisitos técnicos.

O bot deveria funcionar no Skype (historicamente, por coincidência, a empresa o utiliza), então optou-se por um serviço no Azure.

Para restringir o acesso, começamos a usar o mecanismo de autorização do Skype.
A biblioteca ParlAI foi utilizada para o reconhecimento de texto.

Um portal administrativo na web também é necessário para configuração, treinamento, depuração, configuração de listas de e-mail e outras tarefas.

O bot vai nos ajudar

Durante o processo de desenvolvimento do projeto, deparamo-nos com diversos problemas e dificuldades.

Por exemplo, tivemos problemas técnicos com nossa conta do Azure. A Microsoft se recusou a ativar nossa assinatura devido a algumas dificuldades técnicas em seu serviço. Por quase dois meses, não conseguimos resolver o problema, e o suporte da Microsoft acabou desistindo e nos encaminhou para seus parceiros, que configuraram tudo corretamente e nos concederam uma conta.

A fase mais desafiadora foi o lançamento do projeto, quando tivemos que escolher o que usaríamos, qual seria a arquitetura, como e onde armazenar os dados e como os componentes e módulos do sistema interagiriam entre si.

No nosso caso, os desafios típicos de lançar qualquer projeto foram ainda mais complicados por problemas de pessoal. A natureza do nosso negócio é tal que, ao contrário dos projetos comerciais, os projetos internos muitas vezes envolvem desenvolvedores que não possuem conhecimento suficiente nas áreas relevantes — eles simplesmente foram deixados de lado, esperando pelo próximo grande e empolgante projeto comercial. Naturalmente, a motivação em tal situação também era bastante desafiadora. A produtividade despencou, a equipe ficava frequentemente ociosa e, por fim, tivemos que persuadir (motivar) ou substituir o desenvolvedor. Ao substituir um desenvolvedor, tivemos que realizar treinamentos, transferir conhecimento e, essencialmente, reiniciar o projeto. Cada novo desenvolvedor enxergava a arquitetura de forma diferente e criticava os anteriores por suas decisões e pelo código que haviam escrito. Uma reescrita começava do zero.

Isso durou cerca de seis meses. Estávamos simplesmente ganhando tempo, refatorando o código e sem escrever nada de novo.

Os projetos internos também costumam carecer de documentação, o que dificulta a compreensão do que precisava ser feito em determinado momento e quais eram as prioridades. Era necessário criar uma equipe permanente, otimizar os processos e realizar planejamento e avaliação por pelo menos três meses. Mas como isso pode ser feito quando o projeto não é comercial, o que significa investimento mínimo em horas de trabalho, e ainda assim alcançar resultados tão bons quanto os de um cliente externo?

Identificamos um grupo de pessoas que havia participado do desenvolvimento do projeto, estava familiarizado com ele e disposto a trabalhar nele. Criamos um cronograma com a carga de trabalho de cada pessoa para cada projeto. Avaliamos e coordenamos o trabalho, integrando-o aos projetos principais. Quatro meses depois, tínhamos um protótipo funcional do aplicativo.

Agora vamos falar com mais detalhes sobre a funcionalidade, a arquitetura e as soluções técnicas do bot.

Uma das principais exigências de RH era o reconhecimento de textos digitados pelo usuário para responder corretamente a perguntas. Você pode escrever algo como "Quero ir de férias", "Quero ir de férias" ou "Gostaria de ir de férias", e o sistema entenderá e responderá de acordo. Ou, talvez a cadeira de um funcionário esteja quebrada e ele queira escrever algo como "a cadeira está quebrada", "Minha cadeira está rachada" ou "O encosto da cadeira se soltou". Com o treinamento adequado, o bot reconhecerá essas consultas. A qualidade do reconhecimento de texto depende, naturalmente, do treinamento do bot, o que discutiremos mais adiante.

O próximo requisito e parte da funcionalidade é o sistema de diálogo do bot. Desenvolvemos um sistema que permite ao bot conduzir um diálogo e compreender o contexto da pergunta atual. Ele pode fazer perguntas para esclarecer dúvidas e continuar a conversa, caso tenha sido treinado para isso. O Skype oferece opções simples de menu para sugerir aos usuários possíveis alternativas para continuar a conversa. Além disso, se estivermos em um diálogo, mas de repente decidirmos fazer uma pergunta fora do tópico, o bot também entenderá.

O bot permite que os usuários enviem diversos artefatos com base em seus dados pessoais, como sua localização. Por exemplo, se alguém quiser encontrar um banheiro, será exibido um mapa do escritório indicando a direção. O mapa será selecionado com base na localização atual do funcionário no escritório.

Proteger as informações pessoais dos usuários é uma prioridade fundamental. Não podemos permitir que qualquer pessoa acesse os dados sensíveis que nosso bot manipula. A autorização é parte integrante deste bot. O bot solicita que o usuário autorize antes de iniciar qualquer conversa. Isso ocorre na primeira vez que um funcionário interage com o bot. A autorização redireciona o usuário para a página apropriada, onde ele recebe um token, que deve ser colado em uma mensagem do Skype. Se a autorização for bem-sucedida, ele poderá começar a se comunicar com o bot.

O bot vai nos ajudar

A autorização ocorre por meio do portal de serviços de autorização do Skype, da rede corporativa e do LDAP. Portanto, a autorização depende dos dados atuais do usuário na rede corporativa.

Durante o desenvolvimento do bot, percebemos que precisávamos de um sistema integrado à funcionalidade do portal que ajudasse o RH a depurar o bot rapidamente. Adicionamos uma página ao portal onde o RH pode visualizar os erros relatados pelos usuários ao interagirem com o bot e resolvê-los por meio de treinamento adicional ou encaminhá-los para os desenvolvedores.

A capacidade de treinar o bot diretamente no portal não foi implementada desde o início. Durante o desenvolvimento, percebemos que treinar o bot é a tarefa mais comum realizada pela equipe de RH ao trabalhar com ele, e enviar arquivos de texto para os desenvolvedores para treinamento adicional do bot é completamente inaceitável. Isso consome muito tempo e gera muitos erros e problemas.

O bot vai nos ajudar

Desenvolvemos uma interface de usuário para o portal de treinamento de bots, facilitando o uso pelo usuário. Ela permite que o RH visualize o treinamento atual do bot, ofereça treinamentos adicionais e faça ajustes nos treinamentos existentes. O treinamento é apresentado como uma estrutura em árvore, na qual os nós (ou ramos) são uma extensão do diálogo do bot. É possível criar perguntas e respostas simples ou diálogos complexos, dependendo do RH e de suas necessidades.

Algumas palavras sobre a arquitetura da solução.

O bot vai nos ajudar

A arquitetura da solução é modular. Ela inclui serviços responsáveis ​​por diversas tarefas, a saber:
• Serviço de bot do Skype no Azure – recebe e processa solicitações do usuário. Este é um serviço bastante simples que primeiro recebe uma solicitação e realiza seu processamento inicial.
• O Portal de Administração é um serviço que fornece uma interface web para configurar o portal e o próprio bot. O bot sempre contata o portal primeiro, e o portal então decide o que fazer com a solicitação.
• Serviço de autorização — fornece mecanismos de autenticação para o bot e o portal de administração. A autorização ocorre por meio do protocolo OAuth2. Se a autorização for bem-sucedida, o serviço autentica o usuário na rede corporativa usando dados de usuário válidos, permitindo que o sistema detecte erros relacionados à dessincronização de dados.
• Módulo de reconhecimento de texto por IA, escrito em Python e utilizando o framework ParlAI para reconhecimento de texto. Trata-se de uma rede neural, pelo menos em sua implementação atual. Utilizamos o algoritmo tfDiff para compreender as perguntas. O módulo fornece uma API para comunicação e treinamento com a IA.

Em conclusão, gostaria de dizer que esta é nossa primeira tentativa de criar um chatbot e que buscamos tornar o sistema o mais simples possível, sem comprometer a funcionalidade e exigindo o mínimo de esforço. Acredito que criamos um produto bastante interessante. Ele possui sistema próprio de treinamento, registro de erros e notificações, além de poder ser integrado a qualquer outro aplicativo de mensagens.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster