Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Olá, Habr! Hoje mostraremos como usar o Azure para resolver problemas que normalmente requerem intervenção humana. Os agentes passam muito tempo respondendo às mesmas perguntas, atendendo ligações e mensagens de texto. Os chatbots automatizam a comunicação e o reconhecimento e reduzem a carga sobre as pessoas. Os bots também são usados ​​no Azure DevOps, onde permitem, por exemplo, aprovar lançamentos, gerenciar builds – visualizar, iniciar e parar – diretamente do Slack ou Microsoft Teams. Em essência, um chatbot lembra um pouco uma CLI, apenas interativo, e permite que o desenvolvedor permaneça no contexto da discussão do chat.

Neste artigo falaremos sobre ferramentas para criação de chatbots, mostraremos como elas podem ser melhoradas com serviços cognitivos e descreveremos como acelerar o desenvolvimento com serviços prontos no Azure.

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Chatbots e serviços cognitivos: quais as semelhanças e quais as diferenças?

Para criar bots no Microsoft Azure, você usa o Azure Bot Service e o Bot Framework. Juntos, eles representam um conjunto de software para construção, teste, implantação e administração de bots, que permite criar, a partir de módulos prontos, sistemas de comunicação simples e avançados com suporte de fala, reconhecimento de linguagem natural e outros recursos.

Vamos supor que você precise implementar um bot simples baseado em um serviço corporativo de perguntas e respostas ou, inversamente, criar um bot funcional com um sistema de comunicação complexo e ramificado. Para fazer isso, você pode usar diversas ferramentas, divididas em três grupos: 

  1. Serviços para desenvolvimento rápido de interfaces de diálogo (bots).
  2. Serviços de IA cognitiva prontos para diferentes casos de uso (reconhecimento de padrões, reconhecimento de fala, base de conhecimento e pesquisa).
  3. Serviços para criação e treinamento de modelos de IA.

Normalmente, as pessoas confundem intuitivamente “bots” e “serviços cognitivos” porque ambos os conceitos se baseiam no princípio da comunicação e o caso de uso para bots e serviços envolve diálogos. Mas os chatbots funcionam com palavras-chave e gatilhos, e os serviços cognitivos funcionam com solicitações arbitrárias que geralmente são processadas por humanos: 

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Os serviços cognitivos são outra forma de comunicação com o usuário, ajudando a converter uma solicitação arbitrária em um comando claro e repassá-lo ao bot. 

Assim, os chatbots são aplicações para trabalhar com solicitações, e os serviços cognitivos são ferramentas de análise inteligente de solicitações que são lançadas separadamente, mas às quais o chatbot pode acessar, tornando-se “inteligente”. 

Criando chatbots

O diagrama de design recomendado para um bot no Azure é o seguinte: 

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Para projetar e desenvolver bots no Azure, use Framework de bots. Disponível no GitHub exemplos de bots, as capacidades do framework mudam, por isso é necessário levar em consideração a versão do SDK que é utilizada nos bots.

A estrutura oferece diversas opções para a criação de bots: usando código clássico, ferramentas de linha de comando ou fluxogramas. A última opção visualiza diálogos; para isso você pode usar o gerenciador Compositor de estrutura de bot. Ele foi desenvolvido no Bot Framework SDK como uma ferramenta de desenvolvimento visual que equipes interdisciplinares poderiam usar para criar bots.

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

O Bot Framework Composer permite usar blocos para criar uma estrutura de diálogo com a qual o bot funcionará. Além disso, você pode criar gatilhos, ou seja, palavras-chave às quais o bot reagirá durante o diálogo. Por exemplo, as palavras “operador”, “roubo” ou “parar” e “chega”.

No Bot Framework Composer, você pode criar sistemas de diálogo complexos usando Diálogos Adaptáveis. Os diálogos podem usar serviços cognitivos e cartões de eventos (cartões adaptativos):

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Após a criação, você pode implantar o chatbot em uma assinatura, e um script preparado automaticamente criará todos os recursos necessários: serviços cognitivos, plano de aplicação, Application Insights, banco de dados e assim por diante.

Criador de QnA

Para criar bots simples baseados em bancos de dados corporativos de perguntas e respostas, você pode usar o serviço cognitivo QnA Maker. Implementado como um simples assistente web, permite inserir um link para uma base de conhecimento corporativa (FAQ Urls) ou usar um banco de dados de documentos em formato *.doc ou *.pdf como base. Após criar o índice, o bot selecionará automaticamente as respostas mais adequadas às perguntas do usuário.

Usando o QnAMaker, você também pode criar cadeias de esclarecimento de dúvidas com criação automática de botões, complementar a base de conhecimento com metadados e treinar ainda mais o serviço durante o uso.

O serviço pode ser utilizado como um chatbot que implementa apenas esta função, ou como parte de um chatbot complexo que utiliza, dependendo da solicitação, outros serviços de IA ou elementos do Bot Framework.

Trabalhando com outros serviços cognitivos

Existem muitos serviços cognitivos diferentes na plataforma Azure. Tecnicamente, estes são serviços web independentes que podem ser chamados a partir do código. Em resposta, o serviço envia json de um determinado formato, que pode ser utilizado no chatbot.

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma
Os usos mais comuns de chatbots são:

  1. Reconhecimento de texto.
  2. Reconhecimento de categorias de imagem do Custom Vision Service definidas pelo desenvolvedor (caso de produção: reconhecimento se um funcionário está usando capacete, óculos de proteção ou máscara).
  3. Reconhecimento facial (um excelente caso de uso é verificar se a pessoa pesquisada postou seu próprio rosto, ou, digamos, a foto de um cachorro ou a foto de uma pessoa de sexo diferente).
  4. Reconhecimento de fala.
  5. Análise de imagem.
  6. Tradução (todos nos lembramos de quanto ruído a tradução simultânea no Skype causou).
  7. Verificação ortográfica e sugestões para correção de erros.

LUIS

Além disso, para criar bots você pode precisar LUIS (Serviço Inteligente de Compreensão de Idioma). Objetivos do serviço:

  • Determine se a declaração do usuário faz sentido e se a resposta do bot é necessária.
  • Reduza os esforços para transcrever a fala do usuário (texto) em comandos compreensíveis para o bot.
  • Preveja os verdadeiros objetivos/intenções do usuário e extraia insights importantes de frases em diálogo.
  • Permita que o desenvolvedor inicie o bot usando apenas alguns exemplos de reconhecimento de significado e subsequente treinamento adicional do bot durante a operação.
  • Permita que o desenvolvedor use a visualização para avaliar a qualidade da transcrição do comando.
  • Auxiliar em melhorias incrementais no reconhecimento de alvos verdadeiros.

Na verdade, o principal objetivo do LUIS é perceber com uma certa probabilidade o que o utilizador quis dizer e converter um pedido natural num comando harmonioso. Para reconhecer valores de consulta, o LUIS usa um conjunto de intenções (significados, intenções) e entidades (sejam pré-configuradas pelos desenvolvedores ou “domínios” tomados e pré-formados - algumas bibliotecas prontas de frases padrão preparadas pela Microsoft). 

Um exemplo simples: você tem um bot que fornece uma previsão do tempo. Para ele, a intenção será a tradução de um pedido natural numa “ação” – um pedido de previsão do tempo, e as entidades serão o tempo e o local. Aqui está um diagrama de como a intenção CheckWeather funciona para esse bot.

Intenção
Essência
Exemplo de uma consulta natural

Verifique o tempo
{"type": "local", "entidade": "moscovo"}
{"type": "builtin.datetimeV2.date", "entity": "future","resolution":"2020-05-30"}
Como estará o tempo amanhã em Moscou?

Verifique o tempo
{ "type": "date_range", "entity": "este fim de semana" }
Mostre-me a previsão para este fim de semana

Para combinar QnA Maker e LUIS você pode usar Expedidor

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Quando você trabalha com o QnA Maker e recebe uma solicitação de um usuário, o sistema determina qual porcentagem de probabilidade a resposta do QnA corresponde à solicitação. Se a probabilidade for alta, o usuário simplesmente recebe uma resposta da base de conhecimento corporativa; se for baixa, a solicitação pode ser enviada ao LUIS para esclarecimentos. Usar o Dispatcher permite não programar essa lógica, mas determinar automaticamente essa borda de separação de solicitações e distribuí-las rapidamente.

Testando e publicando o bot

Outro aplicativo local é usado para teste, Emulador de estrutura de bot. Usando o emulador, você pode se comunicar com o bot e verificar as mensagens que ele envia e recebe. O emulador exibe mensagens como apareceriam em uma interface de bate-papo na web e registra solicitações e respostas JSON ao enviar mensagens ao bot.

Um exemplo de utilização do emulador é apresentado nesta demonstração, que mostra a criação de um assistente virtual para BMW. O vídeo também fala sobre novos aceleradores para criação de chatbots - templates:

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma
https://youtu.be/u7Gql-ClcVA?t=564

Você também pode usar modelos ao criar seus chatbots. 
Os modelos permitem que você não escreva novamente funções de bot padrão, mas adicione código pronto como uma “habilidade”. Um exemplo poderia ser trabalhar com um calendário, marcar compromissos, etc. Código de habilidades prontas publicado no github.

O teste foi bem-sucedido, o bot está pronto e agora precisa ser publicado e os canais conectados. A publicação é realizada no Azure, podendo ser utilizados mensageiros ou redes sociais como canais. Caso você não possua o canal necessário para inserção de dados, poderá procurá-lo na comunidade correspondente no GitHab. 

Além disso, para criar um chatbot completo como uma interface para comunicação com o usuário e serviços cognitivos, você precisará, é claro, de serviços adicionais do Azure, como bancos de dados, sem servidor (Azure Functions), bem como serviços LogicApp e, possivelmente , Grade de Eventos.

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Avaliação e Análise

Para avaliar a interação do utilizador, pode utilizar a análise incorporada do Azure Bot Service e o serviço especial Application Insights.

Como resultado, você pode coletar informações com base nos seguintes critérios:

  • Quantos usuários acessaram o bot de vários canais durante o período selecionado.
  • Quantos usuários que enviaram uma mensagem retornaram posteriormente e enviaram outra.
  • Quantas ações foram enviadas e recebidas usando cada canal durante o intervalo de tempo especificado.

Utilizando o Application Insights, você pode monitorar qualquer aplicação no Azure e, em particular, chatbots, obtendo dados adicionais sobre comportamento do usuário, cargas e reações do chatbot. De referir que o serviço Application Insights possui uma interface própria no portal do Azure.

Você também pode usar os dados coletados por meio deste serviço para criar visualizações adicionais e relatórios analíticos no PowerBI. Um exemplo de relatório e modelo para PowerBI pode ser obtido aqui.

Aceleramos o desenvolvimento utilizando serviços Azure: criamos chatbots e serviços cognitivos utilizando a plataforma

Obrigado a todos pela atenção! Neste artigo usamos material do webinar da arquiteta do Microsoft Azure Anna Fenyushina “Quando as pessoas não têm tempo. Como usar 100% chatbots e serviços cognitivos para automatizar processos rotineiros”, onde mostramos claramente o que são chatbots no Azure e quais os cenários para sua utilização, e também demonstramos como criar um bot no QnA Maker em 15 minutos e como o a estrutura da consulta é decifrada no LUIS. 

Fizemos este webinar como parte da maratona online para desenvolvedores Dev Bootcamp. Tratava-se de produtos que aceleram o desenvolvimento e aliviam parte da carga de trabalho rotineira dos funcionários da empresa usando ferramentas de automação e módulos Azure pré-configurados e prontos para uso. As gravações de outros webinars incluídos na maratona estão disponíveis nos seguintes links:

Fonte: habr.com

Adicionar um comentário