Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Olá, Habr! Hoje vamos falar sobre como resolver tarefas que geralmente exigem a intervenção humana usando o Azure. Os operadores gastam muito tempo respondendo às mesmas perguntas, lidando com chamadas telefônicas e mensagens de texto. Os chatbots automatizam a comunicação e reconhecimento, permitindo reduzir a carga sobre as pessoas. Além disso, os bots são utilizados no Azure DevOps, onde permitem, por exemplo, aprovar lançamentos, gerenciar compilações - visualizar, iniciar e parar - diretamente do Slack ou Microsoft Teams. Essencialmente, um chatbot se assemelha a um CLI, mas de forma interativa, permitindo que o desenvolvedor não saia do contexto da discussão no chat.

Neste artigo, discutiremos as ferramentas para a criação de chatbots, mostraremos como melhorá-las utilizando serviços cognitivos e descreveremos como acelerar o desenvolvimento graças a serviços prontos no Azure.

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

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

Para criar bots no Microsoft Azure, utilizam-se o serviço Azure Bot e a plataforma Bot Framework. Juntos, eles constituem um conjunto de software para construir, testar, implantar e administrar bots, permitindo criar sistemas de comunicação simples e avançados que suportam fala, reconhecimento de linguagem natural e outras funcionalidades.

Suponha 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 isso, é possível utilizar uma série de ferramentas, classificadas em três grupos: 

  1. Serviços de desenvolvimento rápido de interfaces de diálogo (bots).
  2. Serviços cognitivos de IA prontos para diferentes cenários de uso (reconhecimento de imagens, fala, base de conhecimento e busca).
  3. Serviços para a criação e treinamento de modelos de IA.

Normalmente, as pessoas misturam intuitivamente 'bots' e 'serviços cognitivos', porque ambos os conceitos se baseiam no princípio da comunicação, e há diálogos nos cenários de uso de bots e serviços. No entanto, os chatbots trabalham com palavras-chave e gatilhos, enquanto os serviços cognitivos lidam com solicitações arbitrárias que geralmente são processadas por pessoas: 

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Serviços cognitivos são mais uma forma de comunicação com o usuário, ajudando a converter uma solicitação aleatória em um comando claro e passá-lo ao bot. 

Portanto, os chatbots são aplicativos para trabalhar com solicitações, enquanto os serviços cognitivos são ferramentas de análise inteligente de solicitações que são acionadas separadamente, mas às quais o chatbot pode se referir, tornando-se "inteligente". 

Criação de chatbots

O esquema recomendado para projetar um bot no Azure é o seguinte: 

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Para projetar e desenvolver bots no Azure, é utilizado Bot Framework. No GitHub, existem exemplos de bots, as capacidades do framework mudam, portanto é necessário considerar a versão do SDK que está sendo utilizada nos bots.

O framework permite várias opções para criar bots: usando código clássico, ferramentas de linha de comando ou fluxogramas. A última opção visualiza diálogos, para isso pode-se usar o gerenciador Bot Framework Composer. Ele foi criado com a base do Bot Framework SDK como uma ferramenta de desenvolvimento visual que equipes interdisciplinares poderiam usar para criar bots.

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

O Bot Framework Composer permite criar a estrutura de um diálogo usando blocos, com os quais o bot irá trabalhar. Além disso, é possível criar gatilhos, ou seja, palavras-chave que o bot irá responder durante o diálogo. Por exemplo, palavras como “operador”, “roubo” ou “parar” e “chega”.

No Bot Framework Composer, é possível criar um sistema de diálogos altamente ramificado, usando Diálogos Adaptativos. Os diálogos podem utilizar tanto serviços cognitivos quanto cartões de eventos (Adaptive Cards):

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Após a criação, o chatbot pode ser implantado na assinatura, sendo que um script preparado automaticamente irá criar todos os recursos necessários: serviços cognitivos, Plano de Aplicativo, Application Insights, banco de dados e assim por diante.

QnA Maker

Para criar bots simples baseados em bancos de dados corporativos de perguntas e respostas, é possível usar o serviço cognitivo QnA Maker. Implementado como um simples assistente web, ele permite inserir um link para um banco de dados corporativo (FAQ Urls) ou usar uma base de documentos nos formatos *.doc ou *.pdf. Após a criação do índice, o bot irá automaticamente encontrar as respostas mais adequadas às perguntas do usuário.

Com o QnAMaker, também é possível criar sequências de perguntas de esclarecimento com a geração automática de botões, complementar a base de conhecimento com metadados e treinar o serviço durante o uso.

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

Trabalhando com outros serviços cognitivos

Na plataforma Azure, existem muitos serviços cognitivos diferentes. Tecnicamente, são serviços web autônomos que podem ser chamados a partir do código. Em resposta, o serviço envia um json em um formato específico, que pode ser utilizado no chatbot.

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma
Com mais frequência, os seguintes serviços podem ser utilizados em chatbots:

  1. Reconhecimento de texto.
  2. Reconhecimento de categorias de imagens definidas pelo desenvolvedor do Custom Vision Service (caso de uso: reconhecimento de se o funcionário está usando um capacete, óculos de proteção ou máscara).
  3. Reconhecimento facial (um excelente caso de uso — verificar se a pessoa que está preenchendo a pesquisa é ela mesma ou, por exemplo, uma foto de um cachorro ou uma foto de uma pessoa de sexo diferente).
  4. Reconhecimento de fala.
  5. Análise de imagens.
  6. Tradução (todos nós lembramos do alvoroço que o serviço de tradução simultânea causou no Skype).
  7. Verificação de ortografia e sugestões de correção de erros.

LUIS

Além disso, para criar bots, pode ser necessário LUIS (Language Understanding Intelligent Service). As tarefas do serviço são:

  • Determinar se a declaração do usuário faz sentido e se é necessária uma resposta do bot.
  • Reduzir os esforços na transcrição da fala (texto) do usuário em comandos compreensíveis para o bot.
  • Prever as verdadeiras metas/intencionalidades do usuário e extrair informações-chave de frases no diálogo.
  • Permitir que o desenvolvedor inicie o bot utilizando apenas alguns exemplos de reconhecimento de sentido e então treine o bot durante seu funcionamento.
  • Permitir que o desenvolvedor utilize visualizações para avaliar a qualidade da transcrição de comandos.
  • Ajudar em melhorias contínuas no reconhecimento das verdadeiras intenções.

Essencialmente, o principal objetivo do LUIS é entender, com uma certa probabilidade, o que o usuário quis dizer e converter um pedido natural em um comando estruturado. Para reconhecer os significados dos pedidos, o LUIS utiliza um conjunto de intenções e entidades, que podem ser pré-configuradas pelos desenvolvedores ou obtidas de 'domínios' previamente formados — algumas bibliotecas prontas de frases típicas preparadas pela Microsoft. 

Um exemplo simples: você tem um bot que fornece previsões do tempo. Para ele, a intenção será traduzir um pedido natural em uma 'ação' — um pedido de previsão do tempo, e as entidades serão o tempo e o lugar. Vamos apresentar um esquema de funcionamento da intenção CheckWeather para esse bot.

Intenção
Entidade
Exemplo de pedido natural

CheckWeather
{"type": "location", "entity": "moscow"}
{"type": "builtin.datetimeV2.date", "entity": "future "," resolution ":" 2020-05-30 "}
Qual será o tempo amanhã em Moscovo

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

Para combinar o QnA Maker e o LUIS, pode-se usar Dispatcher. 

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Quando você trabalha com o QnA Maker e recebe uma solicitação do usuário, o sistema determina com qual percentual de probabilidade a resposta do QnA se adequa ao pedido. Se a probabilidade for alta, a resposta é simplesmente fornecida da base de conhecimento corporativa; se for baixa, o pedido pode ser enviado ao LUIS para mais esclarecimentos. O uso do Dispatcher permite não programar essa lógica, mas identificar automaticamente essa linha de divisão de pedidos e distribuí-los rapidamente.

Testando e publicando o bot

Para teste, utiliza-se outro aplicativo local, Bot framework emulator. Com o emulador, você pode interagir com o bot e verificar as mensagens que ele envia e recebe. O emulador exibe as mensagens como elas aparecerão na interface do chat da web e registra pedidos e respostas JSON durante a troca de mensagens com o bot.

Um exemplo de uso do emulador está nesta demonstração, que mostra a criação de um assistente virtual para a BMW. O vídeo também aborda os novos aceleradores para a criação de chatbots — templates:

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma
https://youtu.be/u7Gql-ClcVA?t=564

Você também pode usar templates ao criar seus próprios chatbots. 
Os templates permitem evitar a reescrita de funções comuns do bot, adicionando código já pronto como "habilidade". Um exemplo pode ser o trabalho com o calendário, agendamento de reuniões, etc. Código de habilidades prontas foi publicado no github.

Os testes foram bem-sucedidos, o bot está pronto e agora precisa ser publicado e conectado aos canais. A publicação é realizada por meio do Azure, e os canais podem ser mensageiros ou redes sociais. Se não houver o canal necessário para a entrada de dados, você pode procurá-lo na comunidade correspondente no GitHub. 

Além disso, para criar um chatbot completo como interface de comunicação com o usuário e serviços cognitivos, você precisará de serviços adicionais do Azure, como bancos de dados, serverless (Azure Functions), além dos serviços LogicApp e, possivelmente, Event Grid.

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Avaliação e Análise

Para avaliar a interação com os usuários, você pode usar tanto a análise embutida do Azure Bot Service quanto o serviço Application Insights.

Como resultado, é possível coletar informações com base nos seguintes critérios:

  • Quantos usuários tiveram acesso ao bot de diferentes canais durante um período selecionado.
  • Quantos usuários que enviaram uma mensagem retornaram mais tarde e enviaram outra.
  • Quantas ações foram enviadas e recebidas através de cada canal durante o intervalo de tempo especificado.

Com o Application Insights, é possível monitorar quaisquer aplicativos no Azure e, em particular, chatbots, obtendo dados adicionais sobre o comportamento dos usuários, cargas e reações do chatbot. Vale ressaltar que o serviço Application Insights tem sua própria interface no portal do Azure.

Além disso, os dados coletados através deste serviço podem ser utilizados para criar visualizações adicionais e relatórios analíticos no PowerBI. Um exemplo de tal relatório e um template para PowerBI podem ser encontrados aqui.

Acelerando o desenvolvimento com serviços Azure: criando chatbots e serviços cognitivos com as ferramentas da plataforma

Agradecemos a todos pela atenção! Neste artigo, utilizamos um material do webinar da arquiteta do Microsoft Azure, Anna Fenyushina, "Quando as pessoas não conseguem acompanhar. Como usar 100% chatbots e serviços cognitivos para automatizar processos rotineiros", onde mostramos de forma clara o que são chatbots no Azure e quais são os cenários de sua aplicação, além de demonstrar como criar um bot no QnA Maker em 15 minutos e como interpretar a estrutura das solicitações no LUIS. 

Realizamos este webinar como parte do maratona online para desenvolvedores Dev Bootcamp. Nele, falamos sobre produtos que aceleram o desenvolvimento e aliviam parte da carga de trabalho rotineira dos colaboradores da empresa por meio de ferramentas de automação e módulos pré-configurados do Azure. As gravações de outros webinars que fizeram parte da maratona estão disponíveis por meio dos links:

Fonte: habr.com

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