Em 2016, no auge da popularidade dos chatbots, nossa equipe criou assistentes de botĂŁo para os negĂłcios. AtĂ© surgir um pensamento interessante: "E se automatizarmos o suporte ao cliente com redes neurais?" QuerĂamos que os robĂ´s de bate-papo finalmente aprendessem a entender a linguagem natural e se sentissem confortáveis.
Foram necessários quatro matemáticos, seis meses de trabalho duro, uma nova linguagem de programação e muitos erros - e criamos um construtor no qual todos podem montar um assistente virtual com IA.
No material, vamos contar
- Como um assistente virtual difere de um bot de bate-papo comum
- É verdade que os assistentes virtuais entendem o idioma
- Como ensinamos o robĂ´ a entender o contexto e escrevemos a linguagem lialang
- Teste de caso: como automatizamos o suporte em trĂŞs bancos
- Criação da plataforma Lia e mecanismo para interfaces
- TrĂŞs etapas: como funciona a plataforma de montagem de assistentes virtuais (onde qualquer pessoa, mesmo um nĂŁo programador, pode montar um robĂ´)
Bot de bate-papo vs assistente virtual
Os chatbots avançados conseguiram destacar palavras-chave e imitar o diálogo humano nos anos 60. Os hippies se jogaram no LSD, os Beatles reuniram estádios e Joseph Weizenbaum criou Eliza, uma interlocutora-psicoterapeuta que dará chances a muitos bots modernos e até psicólogos.
Por exemplo, na frase "Meu pai me odeia", Eliza respondeu Ă palavra-chave "pai" e perguntou: "Quem mais te odeia da famĂlia?" Mas o psicoterapeuta-robĂ´ nĂŁo entendeu a essĂŞncia dos problemas. Os chatbots modernos tambĂ©m funcionam: palavras-chave, scripts lineares e uma parĂłdia do diálogo ao vivo.
Mas algo mudou desde os anos 60: agora, graças ao aprendizado de máquina e às tecnologias de PNL, podemos ensinar bots de bate-papo a entender a linguagem e o contexto naturais. Isso ainda é uma imitação, mas mais significativo.
Para ver a diferença, vamos comparar o chatbot e o assistente - imagine que precisamos criar um
sommelier virtual que ajude os clientes na escolha do vinho.
Etapa 1
A primeira etapa do chatbot e do assistente virtual é uma: descobrimos as solicitações dos usuários e criamos frases que eles podem escrever. E então prescrevemos como o robô reagirá.
O pedido básico Ă© claro - pegue o vinho. Mas esse pedido pode ter muitos parâmetros: motivo, preço, paĂs, cor, variedade de uva. Talvez o usuário escreva imediatamente o nome do vinho a ser encontrado. Ou ele esclarecerá os detalhes: "Onde Ă© feito?" Ou talvez por curiosidade, ele começará a jogar o bot com perguntas: “Qual garrafa Ă© a mais cara do mundo?” E assim por diante. AlĂ©m disso, alĂ©m dos pedidos no caso, existem “olá”, “tchau”, “como vocĂŞ está” e outras frases pequenas que precisam ser feitas.
Você pode fantasiar sem parar, mas ainda não conseguiremos prever todas as perguntas dos usuários. Quando parece-nos que as situações descritas serão suficientes para cobrir 98% dos pedidos, paramos (embora a dura realidade se interrompa e descobrimos que 80% será coberto na melhor das hipóteses).
Em seguida, dispersamos nossas suposições sobre as necessidades dos usuários para solicitações especĂficas - intenções. As intenções indicam o que o usuário deseja, mas descarte informações sobre como ele escreveu sobre isso. Esta fase Ă© a mesma para chatbots e assistentes.
Lista de intenções
Intenção 1 - Quero qualquer vinhoFrases:
- Me ajude a escolher um vinho
- Que vinho vocĂŞ recomendaria?
- eu quero o melhor vinho
- ...
O que fazer com isso: selecione aleatoriamente um dos vinhos mais populares e informe o usuário.
Intenção 2 - vinho mais baratoFrases:
- existem bons vinhos de até 1000 rublos?
- Mas não há nada mais barato?
- muito caro para mim
- ...
O que fazer: adicione um filtro de preços à solicitação e escolha um dos vinhos mais populares.
Intenção 3 - Quero vinho para carneFrases:
- Aconselhar o vinho ao bife
"Vou comer goulash para o jantar." O que beber?
- ...
O que fazer sobre isso: uma solicitação ao banco de dados pelo critério “carne”, selecione um dos vinhos mais populares e informe o usuário.
... (e assim por diante, centenas de intenções diferentes)
Intenção 290 - não entendemos o usuárioFrases: qualquer outra
O que fazer: emita uma frase curta: "Não sei o que você quis dizer, mas o Pinista é delicioso em qualquer época do ano".
Etapa 2
Nesse estágio, começamos a criar um algoritmo pelo qual o robô funcionará. Aqui a semelhança do chatbot e do assistente virtual termina.
Ao codificar um chatbot, o programador determina manualmente as palavras-chave para cada intenção e, quando o usuário escreve, o bot procurará essas palavras-chave na frase.
Ao desenvolver um assistente, um programador ensina um algoritmo para comparar réplicas de usuários de acordo com o significado lexical. Isso permite que você encontre a intenção mais próxima.
Como funciona: uma tabela comparando chatbots e assistentes virtuais É verdade que os assistentes virtuais entendem o idioma?
Os algoritmos podem distinguir algumas frases de outras - mas podemos dizer que os robĂ´s realmente entendem a linguagem?
Para responder a essa pergunta, voltemos a uma comparação do significado lexical das frases. O significado para um computador sĂŁo tipos de dados compreensĂveis: cadeias, nĂşmeros e combinações dos mesmos. Portanto, o programador enfrenta a tarefa de transformar o texto de origem em uma forma adequada para operações matemáticas de comparação - um vetor.
vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize(" ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize(" ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982)
Para nossas tarefas, os vetores de frases lexicamente próximas devem estar matematicamente próximos, os lexicamente distantes devem estar distantes, o vetor de frases de outra ópera deve estar muito distante. Por exemplo, "eu quero vinho" está mais próximo de "eu quero vinho branco" do que "eu não quero vinho". E longe de "ataques de Marte".Uma rede neural adequadamente treinada será capaz de concluir um significado lexical nesses vetores. Acontece que, para comparar o significado de duas frases, você precisa comparar seus vetores.
Portanto, a resposta para a pergunta “Os robôs entendem a linguagem?” Será assim: eles não entendem como é uma pessoa, eles apenas sabem como comparar significados lexicais e não confundem o quente com o macio. Mas quando os algoritmos podem oferecer refinamentos sugestivos e tirar conclusões, honestamente dizemos: sim, a compreensão chegou. Enquanto isso, "entender a linguagem" é apenas uma bela frase de marketing.
De fato, o robô só trabalha com analogias, como uma criança de três anos de idade. No entanto, se você der à criança um número suficiente de exemplos, ela poderá fingir ser intelectual e liderar uma discussão. O operador “ativo” da primeira linha de suporte funciona da mesma maneira - eles descrevem um conjunto de situações e dizem a eles como se comportar nelas. Portanto, os assistentes virtuais são adequados para automação de suporte.
Como ensinamos o robĂ´ a entender o contexto: lialang
Para suporte normal, os robôs precisam de pouco "entendimento" da linguagem natural - é importante que eles possam responder perguntas e permanecer no contexto. Para fazer isso, escrevemos lialang, uma linguagem de marcação de diálogo em que os scripts podem ser descritos e passados ​​para o robô.
A principal tarefa de um programador lialang é descrever todas as situações que podem acontecer no diálogo entre uma pessoa e uma máquina. Para fazer isso, em nosso idioma você pode associar os nomes de intenções e ações.
Considere um exemplo simples - uma saudação:
if intent() { reaction(_) }
Parece código normal, mas uma grade neural trabalha por trás do construto intent (...) - lialang descreve o diálogo em padrões gerais (“se ​​você for solicitado algo”) usando as construções de programação usuais. Obviamente, para que isso funcione, é necessário aplicar as tecnologias de aprendizado de máquina e NLU, porque o usuário pode escrever sua solicitação conforme desejar.
E aqui está como descrever situações contextuais.Introduzimos o constructo “was” para capturar saudações inadequadas em qualquer lugar do diálogo:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
Diz: Lia, se eles disseram oi para você, diga oi em resposta. E se depois disso eles disseram novamente “olá” - diga que você já disse olá.
Uma reação é uma ação que Lia deve executar em resposta a uma intenção. Em 95% dos casos, isso é apenas texto. Mas também o robô pode chamar uma função no código, alternar a comunicação com o operador ou executar outras ações complexas.
O cĂłdigo para enviar texto e funções existe separadamente do idioma - o idioma descreve as situações da maneira mais simples possĂvel.
Agora, vamos tentar escrever uma coisa mais complicada - em um bate-papo com o banco, os clientes geralmente solicitam seus detalhes. Vamos aprender como enviá-los para bate-papo e e-mail usando lialang.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
Duas situações são descritas aqui:
- Lia, se você foi solicitado a enviar os detalhes - envie-os para o bate-papo. Se depois que eles perguntarem "é necessário para os correios", envie-os para os correios.
- Lia, se vocĂŞ foi imediatamente solicitado a enviar os detalhes pelo correio - envie os detalhes pelo correio.
Então lialang faz seu trabalho - trabalha em contexto. Mesmo que uma pessoa escreva "por correio, por favor", o robô entenderá que estamos falando de detalhes.
Lia aprendeu a suportar cenários complexos - no momento necessário para o usuário, ela obtém / coloca dados de / para o CRM, envia SMS, ajuda no pagamento ou fala sobre a vida.
Gradualmente, aprimoramos o idioma: adicionamos variáveis, funções, entidades (datas, endereços, números de telefone, nomes etc.), estados e outras construções úteis. Por isso, tornou-se ainda mais conveniente escrever nele.
Teste de caso: como automatizamos o suporte em trĂŞs bancos
Assim que fabricamos a tecnologia, ela teve que ser finalizada com urgĂŞncia - tivemos nosso primeiro cliente. O VTB precisava automatizar o suporte em um novo banco da Internet para empreendedores.
Começamos com bastante sucesso - especialmente para um produto que foi criado em quatro meses. Nosso robĂ´ hĂbrido para VTB foi baseado em redes neurais e foi imediatamente eficaz: respondeu a mais de 800 perguntas, suportou vários cenários complexos (declarações, alterações de tarifas, configurações do usuário) e falou como pessoa. Como resultado, em dois meses, nosso Lia reduziu a carga de suporte em 74%. Ficou claro: a idĂ©ia com automação de suporte funciona.

Além disso, com base no Lia, automatizamos as perguntas frequentes no Rocketbank e no DeloBank - e em duas semanas eles fecharam 32% dos aplicativos sem operadores.
Parece que os meninos chegaram ao sucesso. No entanto, apĂłs os primeiros clientes, ficou claro que o conceito precisava ser alterado. Foi um inferno - tivemos que modificar manualmente os scripts, fazer edições, desenvolver os ramos. A mesma coisa com bots simples, apenas mais difĂcil e requer mais força. Nessa situação, era difĂcil escalar.
Decidimos então fazer uma ferramenta na qual o próprio cliente seria capaz de montar até um assistente complexo. E apenas ajudaremos com tutoriais e educaremos os usuários.
Plataforma Lia e mecanismo para interfaces
EntĂŁo, decidimos criar uma
plataforma para quem não entende o desenvolvimento. Embora o lialang contenha menos de dez designs diferentes, nem todo gerente o ensinará a criar seu próprio bot. Os gerentes adoram o mouse.
Portanto, começamos a pensar em uma interface que será capaz de fazer tudo o que o lialang pode fazer. Ele não terá problemas com ramificações aninhadas, transições de um script para outro e o mais importante - não apenas nossos programadores, mas qualquer pessoa que queira criar scripts.
Veja como fica:
Os diálogos sĂŁo algo nĂŁo linear e Ă© muito difĂcil escrever um mecanismo universal para todos os tipos de esquemas de conversação. Mas antes de pensarmos nos esquemas, já tĂnhamos o lialang - ele se tornou o motor.Quaisquer que sejam os designers de interface, nĂŁo codificamos cĂ©rebros para isso, mas escrevemos apenas um pequeno tradutor de marcação da interface para o cĂłdigo lialang. Se a interface for refeita, precisaremos apenas alterar o tradutor - graças ao qual o comando da interface e o comando do nĂşcleo podem existir separadamente.
Como funciona a plataforma de criação de assistentes virtuais?
Para montar seu próprio assistente virtual no Lia, o usuário precisa passar por três etapas.
Etapa 1. Baixe o histórico de bate-papo com os usuários para que o robô entenda e destaque os principais cenários
Se o cliente tiver um histórico de conversas com os usuários, ele poderá enviá-las ao sistema e obter clusters das consultas mais populares. Será muito conveniente criar intenções a partir deles.

Com o tempo, a eficácia do Lia aumentará. As mensagens que o robĂ´ nĂŁo pĂ´de responder sĂŁo novamente distribuĂdas em clusters: por exemplo, “quem Ă© vocĂŞ?”, “Quem Ă© vocĂŞ?”, “Qual Ă© o seu nome?” E “vocĂŞ Ă© um robĂ´?” Se enquadram em um grupo. Portanto, a plataforma aprende automaticamente de maneira semi-automática: o usuário vĂŞ onde está a lacuna e a fecha, adicionando novos cenários - como resultado, o percentual de solicitações cobertas cresce de 30% a 70% em seis meses.
Se não houver histórico de correspondência, pule esta etapa e comece imediatamente com a segunda etapa: prevemos quais solicitações os usuários recorrerão ao assistente.
Etapa 2. Anotamos a intenção: 10 a 20 opções para as solicitações de usuário mais frequentes
No segundo estágio, prescrevemos intenções com base nas 10 a 20 consultas mais populares: esse número de opções é suficiente graças às redes neurais. Portanto, uma frase como "Quero pedir vinho" ensina o bot a reconhecer solicitações de usuários semelhantes: por exemplo, "Obter vinho" ou "Pedir vinho".

Outro assistente entende e extrai a essĂŞncia: nomes de cidades, nĂşmeros de telefone, endereços, horários, perĂodos, datas e maldições - mesmo se vocĂŞ disser “cansado, traga uma caixa de vinho amanhã”.
Além disso, os usuários podem adicionar seus próprios objetos e marcar manualmente as frases de treinamento para que o assistente aprenda mais rapidamente. Esse é um dos recursos mais poderosos da plataforma, graças ao qual ele pode criar robôs que não funcionam pior do que um operador humano.
Etapa 3. Crie um cenário: prescreva várias respostas ou ações
Aqui, o usuário deve apresentar respostas às solicitações do usuário. 95% do projeto médio geralmente usa um cenário simples de pergunta-resposta - respostas a perguntas populares.

A propĂłsito, o assistente pode responder com fotos, vĂdeos e arquivos de áudio e, se necessário, enviar uma localização geográfica.
O salto para construir é particularmente útil - graças a ele, Lia pode alternar de um cenário para outro e depois retornar, resolvendo vários problemas. Isso é útil se você precisar se afastar do diálogo, mas depois retornar ao caminho certo: por exemplo, faça uma pergunta esclarecedora.
Caixa de diálogo de exemplo pule para:Assistente: precisamos esclarecer o endereço de entrega, porque o destinatário não está respondendo.
Cliente: E sobre o que? Qual ordem? (JumpTo para esclarecimentos de pedidos)
Assistente: Ordem 21 de agosto, Antigal, "Uno" Malbec.
Assistente: Então, podemos esclarecer o endereço de entrega atual? (Retorne ao script principal)
Quando o criador deseja que seu assistente não apenas responda com texto, mas realize ações, ele poderá chamar um programador para escrever trechos de JS para o especialista. Permitimos que você execute o JavaScript diretamente durante os scripts: acesse a API externa, envie um email ou execute outra ação complexa.
4. Resumo
Um assistente pode se integrar a qualquer coisa: converse com uma pessoa ao telefone, em mensagens instantâneas ou em um widget que o cliente postará no site.
A montagem de um assistente inteligente na plataforma leva de duas horas a um mês. Em seguida, o robô aprende a entender realisticamente solicitações e reconhecer padrões - leva cerca de seis meses (todo esse tempo que uma pessoa viva supervisiona). Os negócios podem realizar a maioria das tarefas rotineiras da garota robótica Lia: desde coordenar a entrega e chamar um táxi até consultar clientes.

A propósito, já transferimos projetos com bancos para a plataforma. Eles funcionam tão bem, mas são muito mais convenientemente moderados.
Em um futuro próximo, planejamos adicionar extratores, o que permitirá que nossos usuários extraiam dados mais complexos (por exemplo, o robô entenderá a frase "depois de amanhã depois do almoço"). Também finalizaremos o controle de versão para que os clientes possam reverter rapidamente as versões dos projetos. E também liberaremos o sistema de funções da organização.
Esperamos que as
previsões do Gartner estejam corretas - e em 2022, até 70% de todas as interações com os clientes passarão por algum tipo de IA. De acordo com a nossa ideia, designers como Lia ajudarão a transferir o serviço ao cliente para robôs ainda mais rapidamente.