O bot vai nos ajudar

O bot vai nos ajudar

Há um ano, nosso querido departamento de RH nos pediu para escrever um chatbot que ajudasse na adaptação dos recém-chegados à empresa.

Ressaltemos que não desenvolvemos produtos próprios, mas oferecemos aos clientes uma gama completa de serviços de desenvolvimento. A história será sobre nosso projeto interno, cujo cliente não é uma empresa terceirizada, mas sim o nosso próprio RH. E a principal tarefa, dada a disponibilidade limitada de pessoas, recursos e tempo, é concluir o projeto no prazo e lançar o produto.

Primeiro, vamos descrever os problemas que tiveram que ser resolvidos.

Os desenvolvedores são em sua maioria pessoas introvertidas e não gostam de conversar; é muito mais fácil escrever sua pergunta em um chat por e-mail. Com um bot, você não precisa pensar em quem perguntar, para quem ligar, para onde ir e, em geral, onde procurar informações e se elas são relevantes.

O segundo problema é a informação - é muita, está em fontes diferentes, nem sempre está disponível e precisa de acréscimos e atualizações constantes.

A empresa tem quase 500 funcionários, eles estão localizados em diferentes escritórios, fusos horários, cidades da Rússia e até no exterior, geralmente há muitas dúvidas, então outra tarefa é reduzir a carga do pessoal de RH associada às perguntas mais frequentes feitas pelos funcionários.

Também foi necessário automatizar os processos de: entrada de recém-chegados na empresa, envio de mensagens para gestores e mentores de recém-chegados, envio de lembretes automáticos sobre cursos e testes que um recém-chegado precisa passar para uma adaptação bem-sucedida.

Os requisitos técnicos foram formados com base nos requisitos de negócios.

O bot deve funcionar com base no Skype (historicamente, eles usam na empresa), por isso foi escolhido o serviço no Azura.

Para restringir o acesso a ele, passamos a utilizar o mecanismo de autorização via Skype.
Biblioteca ParlAI foi usada para reconhecimento de texto

Um portal web administrativo também é necessário para configuração, treinamento, depuração, configuração de correspondências e outras tarefas.

O bot vai nos ajudar

Durante o trabalho no projeto, encontramos vários problemas e dificuldades.

Por exemplo, ocorreram problemas técnicos com uma conta do Azure. A Microsoft não quis ativar nossa assinatura devido a algumas dificuldades técnicas em seu serviço. Durante quase dois meses não pudemos fazer nada a respeito; o suporte da Microsoft acabou desistindo e nos encaminhou para parceiros, que configuraram tudo com sucesso e nos deram uma conta.

A etapa mais difícil foi o início do projeto, quando é preciso escolher o que usaremos, qual será a arquitetura, como e onde armazenar os dados e como os componentes e módulos do sistema irão interagir entre si.

No nosso caso, os problemas essencialmente comuns de iniciar qualquer projeto foram ainda mais complicados pela questão do pessoal. As especificidades do nosso negócio são tais que, ao contrário dos comerciais, os projetos internos muitas vezes são trabalhados por incorporadores que não possuem conhecimento suficiente nas áreas exigidas - eles simplesmente, por vontade do destino, acabaram na bancada aguardando o próximo grande projeto comercial legal. É lógico que as coisas também ficaram muito difíceis com a motivação em tal situação. A produtividade cai, a equipe muitas vezes fica ociosa e, como resultado, é preciso persuadir (motivar) ou mudar a pessoa. Ao mudar de desenvolvedor, é necessário realizar treinamentos, transferir conhecimento e essencialmente reiniciar o projeto. Cada novo desenvolvedor via a arquitetura à sua maneira e repreendia os anteriores pelas decisões que tomavam e pelo código de outras pessoas. A reescrita começou do zero.

Isso durou cerca de seis meses. Estávamos apenas marcando passo, refatorando o código e não escrevendo nada novo.

Além disso, nos projetos internos, via de regra, quase não há documentação e foi difícil entender o que precisa ser feito em cada momento e quais são as prioridades atuais. Foi necessário criar uma equipe permanente, estabelecer processos e realizar planejamento e avaliação durante pelo menos três meses. Mas como fazer isso quando o projeto não é comercial, o que significa que é preciso investir um mínimo de horas-homem e ao mesmo tempo obter um resultado não pior do que o de um cliente externo?

Identificamos um conjunto de recursos que participaram do desenvolvimento do projeto, estão familiarizados com ele e desejam trabalhar nele. Elaboramos um cronograma de contratação de pessoas nos projetos. Avaliamos e coordenamos os trabalhos, e encaixamos essas obras nos “buracos” entre os projetos principais. Após 4 meses recebemos um protótipo funcional do aplicativo.

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

Uma das principais exigências do RH era reconhecer o texto escrito pelo usuário para responder corretamente à pergunta. Você pode escrever para ele - quero sair de férias, quero sair de férias ou gostaria de sair de férias, e ele entenderá e responderá de acordo. Ou, de repente, a cadeira de um funcionário quebra e ele quer escrever “a cadeira está quebrada” ou “Minha cadeira está rachada” ou “O encosto da cadeira caiu”; com treinamento adequado, o bot reconhecerá tais solicitações. A qualidade do reconhecimento de texto em si depende do treinamento do bot, sobre o qual falaremos mais tarde.

O próximo requisito e parte da funcionalidade é o sistema de diálogo do bot. Foi desenvolvido um sistema no qual o bot pode dialogar e entender o contexto do assunto atual. Em resposta à sua pergunta, ele poderá fazer perguntas de esclarecimento e continuar a conversa se tivermos treinado o bot para fazer isso. O Skype oferece suporte a opções de menu simples para solicitar aos usuários opções para continuar conversas. Além disso, se estivéssemos conversando, mas de repente decidimos fazer uma pergunta fora do assunto, o bot também entenderá isso.

O bot possibilita o envio de diversos artefatos ao usuário com base em seus dados pessoais. Por exemplo, em sua localização. Suponha que se uma pessoa quisesse encontrar um banheiro, então lhe seria mostrado um mapa do escritório que a levaria até o banheiro. E o cartão será selecionado dependendo do escritório da empresa onde o funcionário está localizado.

Uma das tarefas mais importantes é proteger as informações pessoais dos usuários. Não podemos permitir que todas as pessoas tenham acesso aos dados confidenciais que nosso bot opera. A necessidade de autorização para tal bot é parte integrante dele. O bot pede ao usuário para se autenticar antes de poder conduzir qualquer diálogo com ele. Isso acontece na primeira vez que um funcionário entra em contato com o bot. A própria autorização redireciona o usuário para a página apropriada, onde o usuário recebe um token, que ele insere em uma mensagem do Skype. Se a autorização for bem-sucedida, você poderá começar a se comunicar com o bot.

O bot vai nos ajudar

A autorização ocorre através do Skype - serviço de autorização de portal, rede corporativa e LDAP. Assim, a autorização depende dos dados atuais do usuário na rede corporativa.

No processo de desenvolvimento do bot, percebemos que precisávamos de algum tipo de sistema integrado à funcionalidade do portal que pudesse ajudar o RH a depurar rapidamente o bot. Adicionamos uma página do portal onde o RH pode ver os erros registrados pelos usuários ao trabalhar com o bot e resolvê-los por meio de reciclagem ou deixá-los para os desenvolvedores.

A capacidade de treinar um bot diretamente no portal não foi incluída desde o início. Durante o processo de desenvolvimento, percebemos que treinar o bot é a tarefa mais comum que os funcionários do departamento de RH realizarão ao trabalhar com ele, e enviar arquivos de texto aos desenvolvedores para treinamento adicional do bot é totalmente inaceitável. Isso consome muito tempo e cria muitos erros e problemas.

O bot vai nos ajudar

Escrevemos uma UI no portal para treinamento amigável do bot. Ele permite que o RH veja o treinamento atual do bot, treine-o ainda mais e faça ajustes no treinamento atual. O treinamento é representado por uma estrutura em árvore na qual os nós, ou seja, os ramos, são uma continuação do diálogo com o bot. Você pode criar perguntas e respostas simples, ou pode criar diálogos de peso, tudo depende 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. Inclui serviços responsáveis ​​por diversas tarefas, nomeadamente:
• Serviço de bot do Skype no Azure – aceita e processa solicitações de usuários. Este é um serviço bastante simples, que é o primeiro a receber uma solicitação e realizar seu processamento inicial.
• Portal de administração - um serviço que fornece uma interface web para configurar o portal e para o próprio bot. O bot sempre entra em contato primeiro com o portal e o portal decide o que fazer em seguida com a solicitação.
• Serviço de autorização - fornece mecanismos de autenticação para o bot e para o portal de administração. A autorização ocorre através do protocolo Oauth2. Com a autorização positiva, o serviço realiza a autorização na rede corporativa de acordo com os dados válidos do usuário, para que o sistema possa controlar erros associados a dados fora de sincronia.
• Módulo de reconhecimento de texto AI, escrito em Python e utilizando o framework ParlAI para reconhecimento de texto propriamente dito. Esta é uma rede neural, pelo menos na sua implementação atual. Usamos o algoritmo tfDiff para entender as questões. O módulo fornece uma API para comunicação e aprendizado.

Concluindo, quero dizer que esta é a nossa primeira experiência na criação de um chat bot, e tentamos tornar o sistema o mais simples possível, mas ao mesmo tempo funcional, com custos mínimos de mão de obra. Acho que temos um produto muito interessante. Com sistema próprio de treinamento, registro de erros, envio de notificações, também pode ser integrado a qualquer outro mensageiro.

Fonte: habr.com

Adicionar um comentário