En 2016, au plus fort de la popularité des chatbots, notre équipe a créé des assistants boutons pour les entreprises. Jusqu'à ce qu'une pensée intéressante surgisse: «Et si nous automatisons le support client avec les réseaux de neurones?» Nous voulions que les robots de discussion apprennent enfin à comprendre le langage naturel et deviennent confortables.
Il a fallu quatre mathématiciens, six mois de travail acharné, un nouveau langage de programmation et de nombreuses erreurs - et nous avons créé un constructeur dans lequel tout le monde peut assembler un assistant virtuel avec l'IA.
Dans le matériel nous dirons
- En quoi un assistant virtuel diffère-t-il d'un robot de chat classique
- Est-il vrai que les assistants virtuels comprennent la langue
- Comment nous avons appris au robot à comprendre le contexte et à écrire la langue lialang
- Test de cas: comment nous avons automatisé le support dans trois banques
- Création de Lia Platform et moteur d'interfaces
- Trois étapes: comment fonctionne la plate-forme d'assemblage d'assistants virtuels (où n'importe qui, même un non programmeur, peut assembler un robot)
Chat bot vs assistant virtuel
Les chatbots avancés ont pu mettre en évidence des mots clés et imiter le dialogue humain dans les années 60. Les hippies se sont jetés sur le LSD, les Beatles ont rassemblé les stades et Joseph Weizenbaum a créé Eliza, une interlocutrice-psychothérapeute qui donnera des cotes à de nombreux bots modernes, et même à des psychologues.
Par exemple, dans la phrase «Mon père me déteste», Eliza a répondu au mot-clé «père» et a demandé: «Qui d'autre dans la famille vous déteste?» Mais le robot-psychothérapeute n'a pas compris l'essence des problèmes. Les chatbots modernes fonctionnent également: mots-clés, scripts linéaires et parodie de dialogue en direct.
Mais quelque chose a changé depuis les années 60: maintenant, grâce au machine learning et aux technologies NLP, nous pouvons apprendre aux robots de chat à comprendre le langage naturel et le contexte. C'est toujours une imitation, mais plus significative.
Pour voir la différence, comparons le chatbot et l'assistant - imaginez que nous devons faire un
sommelier virtuel qui aide les clients dans le choix du vin.
Étape 1
La première étape du chatbot et de l'assistant virtuel en est une: nous déterminons les demandes des utilisateurs et proposons des phrases qu'ils peuvent écrire. Et puis nous prescrivons comment le robot va réagir.
La demande de base est claire - ramasser le vin. Mais cette demande peut avoir de nombreux paramètres: motif, prix, pays, couleur, cépage. Peut-être que l'utilisateur écrit immédiatement le nom du vin à trouver. Ou il clarifiera les détails: "Où est-il fabriqué?" Ou peut-être par curiosité, il va commencer à lancer le robot avec des questions: "Quelle bouteille est la plus chère au monde?" Et ainsi de suite. De plus, en plus des demandes dans le cas, il y a "bonjour", "bye", "comment allez-vous" et d'autres petites phrases qui doivent être demandées.
Vous pouvez fantasmer à l'infini, mais nous ne pourrons toujours pas prédire toutes les questions des utilisateurs. Quand il nous semble que les situations décrites seront suffisantes pour couvrir 98% des demandes, nous nous arrêtons (bien que la dure réalité se dissipe et nous découvrons que 80% seront couverts au mieux).
Ensuite, nous dispersons nos hypothèses sur les besoins des utilisateurs pour des demandes spécifiques - intentions. Les intentions indiquent ce que l'utilisateur veut, mais jetez les informations sur la façon dont il a écrit à ce sujet. Cette étape est la même pour les chatbots et les assistants.
Liste d'intentions
Intention 1 - Je veux du vinPhrases:
- Aidez-moi à choisir un vin
- Quel vin recommanderiez-vous?
- Je veux le meilleur vin
- ...
Que faire avec lui: sélectionnez au hasard l'un des vins les plus populaires et informez l'utilisateur.
Intention 2 - vin moins cherPhrases:
- existe-t-il de bons vins jusqu'à 1000 roubles?
- Mais il n'y a rien de moins cher?
- trop cher pour moi
- ...
Que faire: ajoutez un filtre de prix à la demande et choisissez l'un des vins les plus populaires.
Intention 3 - Je veux du vin pour la viandePhrases:
- Conseiller le vin au steak
"Je vais avoir du goulasch pour le dîner." Que boire?
- ...
Que faire à ce sujet: une requête à la base de données par le critère «à la viande», sélectionner l'un des vins les plus populaires et informer l'utilisateur.
... (et ainsi de suite des centaines d'intentions différentes)
Intention 290 - nous n'avons pas compris l'utilisateurPhrases: toute autre
Que faire: émettre une phrase tronquée: "Je ne sais pas ce que tu veux dire, mais le Pinista est délicieux à tout moment de l'année."
Étape 2
À ce stade, nous commençons à créer un algorithme par lequel le robot fonctionnera. Ici se termine la similitude du chatbot et de l'assistant virtuel.
Lors du codage d'un chatbot, le programmeur détermine manuellement les mots clés pour chaque intention, et lorsque l'utilisateur écrit, le bot recherchera ces mots clés dans la phrase.
Lors du développement d'un assistant, un programmeur enseigne un algorithme pour comparer les répliques d'utilisateur selon la signification lexicale. Cela vous permet de trouver l'intention la plus proche.
Comment ça marche: un tableau comparant les chatbots et les assistants virtuels Est-il vrai que les assistants virtuels comprennent la langue?
Les algorithmes peuvent distinguer certaines phrases des autres - mais pouvons-nous dire que les robots comprennent vraiment le langage?
Pour répondre à cette question, revenons à une comparaison de la signification lexicale des phrases. La signification pour un ordinateur est des types de données compréhensibles: chaînes, nombres et combinaisons de ceux-ci. Par conséquent, le programmeur est confronté à la tâche de transformer le texte source en une forme adaptée aux opérations mathématiques de comparaison - un vecteur.
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)
Pour nos tâches, les vecteurs de phrases lexicalement proches doivent être mathématiquement proches les uns des autres, les lexicalement éloignés doivent être éloignés, le vecteur de phrases d'un autre opéra doit être très éloigné. Par exemple, «Je veux du vin» est plus proche de «Je veux du vin blanc» que de «Je ne veux pas de vin». Et loin des «attaques martiennes».Un réseau neuronal correctement formé pourra conclure à la signification lexicale de ces vecteurs. Il s'avère que, pour comparer la signification de deux phrases, vous devez comparer leurs vecteurs.
Par conséquent, la réponse à la question «Les robots comprennent-ils le langage?» Sera comme ceci: ils ne comprennent pas comment est une personne, ils savent juste comparer les significations lexicales et ne confondent pas le chaud et le doux. Mais lorsque les algorithmes peuvent offrir des raffinements suggestifs et tirer des conclusions, nous disons honnêtement: oui, la compréhension est arrivée. En attendant, "comprendre la langue" n'est qu'une belle phrase marketing.
En fait, le robot ne fonctionne qu'avec des analogies, comme un enfant de trois ans. Cependant, si vous donnez à l'enfant un nombre suffisant d'exemples, il pourra se faire passer pour un intellectuel et animer une discussion. L'opérateur «en direct» de la première ligne de support fonctionne de la même manière - ils décrivent un ensemble de situations et leur expliquent comment s'y comporter. Par conséquent, les assistants virtuels sont bien adaptés à l'automatisation du support.
Comment nous avons appris au robot à comprendre le contexte: le lialang
Pour un support normal, les robots ont besoin de peu de «compréhension» du langage naturel - il est important qu'ils puissent répondre aux questions et rester en contexte. Pour ce faire, nous avons écrit lialang, un langage de balisage de dialogue où les scripts peuvent être décrits et transmis au robot.
La tâche principale d'un programmeur lialang est de décrire toutes les situations qui peuvent se produire dans un dialogue entre une personne et une machine. Pour ce faire, dans notre langue, vous pouvez associer les noms des intentions et des actions.
Prenons un exemple simple - une salutation:
if intent() { reaction(_) }
Cela ressemble à du code normal, mais une grille de neurones fonctionne derrière la construction d'intention (...) - lialang décrit le dialogue dans des schémas généraux ("si on vous demandait quelque chose") en utilisant les constructions de programmation habituelles. Bien sûr, pour que cela fonctionne, vous devez appliquer les technologies d'apprentissage automatique et NLU, car l'utilisateur peut écrire sa demande comme il le souhaite.
Et voici comment décrire des situations contextuelles.Nous avons introduit la construction «était» pour saisir les salutations inappropriées n'importe où dans le dialogue:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
Il dit: Lia, s'ils vous ont dit bonjour, dites bonjour en réponse. Et si après cela, ils ont de nouveau dit «bonjour» - dites que vous avez déjà dit bonjour.
Une réaction est une action que Lia doit effectuer en réponse à une intention. Dans 95% des cas, ce n'est que du texte. Mais le robot peut également appeler une fonction dans le code, commuter la communication avec l'opérateur ou effectuer d'autres actions complexes.
Le code pour envoyer du texte et des fonctions existe séparément de la langue - la langue décrit les situations aussi simplement que possible.
Essayons maintenant d'écrire quelque chose de plus compliqué - dans une conversation avec la banque, les clients demandent souvent leurs coordonnées. Apprenons à les envoyer au chat et au courrier à l'aide de lialang.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
Deux situations sont décrites ici:
- Lia, si on vous demandait d'envoyer les détails - envoyez-les au chat. Si après avoir demandé «il est nécessaire au bureau de poste», envoyez-les au bureau de poste.
- Lia, si on vous demandait immédiatement d'envoyer les détails par la poste - envoyez les détails par la poste.
Le lialang fait donc son travail - travaille en contexte. Même si une personne écrit «par courrier, s'il vous plaît», le robot comprendra que nous parlons de détails.
Lia a appris à prendre en charge des scénarios complexes - au moment nécessaire pour l'utilisateur, elle obtiendra / mettra des données de / vers CRM, enverra des SMS, une aide au paiement ou parlera de la vie.
Peu à peu, nous avons amélioré le langage: nous avons ajouté des variables, des fonctions, des entités (dates, adresses, numéros de téléphone, noms, etc.), des états et d'autres constructions utiles. Il est donc devenu encore plus pratique d'écrire dessus.
Test de cas: comment nous avons automatisé le support dans trois banques
Dès que nous avons fait la technologie, elle devait être finalisée de toute urgence - nous avions notre premier client. VTB devait automatiser le support dans une nouvelle banque Internet pour les entrepreneurs.
Nous avons commencé avec beaucoup de succès - en particulier pour un produit créé en quatre mois. Notre robot hybride pour VTB était basé sur des réseaux de neurones et a été immédiatement efficace: il a répondu à plus de 800 questions, pris en charge plusieurs scénarios complexes (relevés, modifications tarifaires, paramètres utilisateur) et a parlé comme une personne. En conséquence, en deux mois, notre Lia a réduit la charge de support de 74%. Il est devenu clair: l'idée de l'automatisation du support fonctionne.

De plus, sur la base de Lia, nous avons automatisé la FAQ chez Rocketbank et DeloBank - et en deux semaines, ils ont fermé 32% des applications sans opérateurs.
Il semblerait que les garçons aient réussi. Cependant, après les premiers clients, il est devenu clair que le concept devait être changé. C'était l'enfer - nous avons dû modifier manuellement les scripts, faire des modifications, développer les branches. La même chose avec des robots simples, seulement plus durs et nécessite plus de force. Dans cette situation, il était difficile de faire évoluer.
Ensuite, nous avons décidé de créer un outil dans lequel le client lui-même pourra assembler même un assistant complexe. Et nous n'aiderons qu'avec les didacticiels et éduquerons les utilisateurs.
Plateforme Lia et moteur pour les interfaces
Nous avons donc décidé de créer une
plateforme pour ceux qui ne comprennent pas le développement. Bien que le lialang contienne moins de dix modèles différents, tous les managers ne lui apprendront pas à créer leur propre bot. Les gestionnaires aiment la souris.
Par conséquent, nous avons commencé à penser à une telle interface qui sera capable de faire tout ce que le lialang peut faire. Il n'aura pas de problèmes avec les branches imbriquées, les transitions d'un script à l'autre, et surtout - non seulement nos programmeurs, mais tous ceux qui le souhaitent peuvent créer des scripts.
Voyez à quoi ça ressemble:
Les dialogues sont une chose non linéaire et l'écriture d'un moteur universel pour toutes sortes de schémas de conversation est très difficile. Mais avant de penser aux schémas, nous avions déjà du lialang - il est devenu le moteur.Quels que soient les concepteurs d'interface, nous ne codons pas les cerveaux pour cela, mais écrivons seulement un petit traducteur de balisage de l'interface en code lialang. Si l'interface est refaite, nous n'aurons qu'à changer le traducteur - grâce auquel la commande interface et la commande core peuvent exister séparément.
Comment fonctionne la plateforme de création d'assistants virtuels?
Pour assembler votre propre assistant virtuel dans Lia, l'utilisateur doit passer par trois étapes.
Étape 1. Téléchargez l'historique du chat avec les utilisateurs afin que le robot comprenne et mette en évidence les principaux scénarios
Si le client a un historique de conversations avec les utilisateurs, il peut les télécharger sur le système et obtenir des clusters à partir des requêtes les plus courantes. Il sera très pratique de créer des intentions à partir d'eux.

Au fil du temps, l'efficacité de Lia augmentera. Les messages auxquels le robot n'a pas pu répondre sont à nouveau distribués en grappes: par exemple, «qui êtes-vous?», «Qui êtes-vous?», «Quel est votre nom?» Et «êtes-vous un robot?» Tomberont dans un groupe. Ainsi, la plate-forme s'auto-apprend semi-automatiquement: l'utilisateur voit où est l'écart et le comble, ajoutant de nouveaux scénarios - en conséquence, le pourcentage de demandes couvertes passe de 30% à 70% en six mois.
S'il n'y a pas d'historique de correspondance, nous sautons cette étape et commençons immédiatement par la deuxième étape: nous prédisons quelles demandes les utilisateurs se tourneront vers l'assistant.
Étape 2. Nous notons l'intention: 10-20 options pour les demandes des utilisateurs les plus fréquentes
À la deuxième étape, nous prescrivons des intentions basées sur les 10 à 20 requêtes les plus populaires: ce nombre d'options est suffisant grâce aux réseaux de neurones. Ainsi, une phrase comme «Je veux commander du vin» apprend au bot à reconnaître les demandes d'utilisateurs similaires: par exemple, «Obtenir du vin» ou «Commander du vin».

Un autre assistant comprend et extrait l'essentiel: noms de villes, numéros de téléphone, adresses, horodatages, périodes, dates et malédictions - même si vous dites «fatigué, apportez une boîte de vin demain».
De plus, les utilisateurs peuvent ajouter leurs propres objets et marquer manuellement des phrases de formation pour que l'assistant apprenne plus rapidement. C'est l'une des fonctionnalités les plus puissantes de la plateforme, grâce à laquelle elle peut créer des robots qui ne fonctionnent pas moins bien qu'un opérateur humain.
Étape 3. Créez un scénario: prescrivez plusieurs réponses ou actions
Ici, l'utilisateur doit trouver des réponses aux demandes des utilisateurs. 95% du projet moyen prend généralement un scénario simple de questions-réponses - réponses à des questions courantes.

Soit dit en passant, l'assistant peut répondre avec des images, des vidéos et des fichiers audio et, si nécessaire, envoyer une géolocalisation.
Le saut à construire est particulièrement utile - grâce à lui, Lia peut passer d'un scénario à un autre, puis revenir en arrière, résoudre plusieurs problèmes. Ceci est utile si vous devez vous éloigner du dialogue, puis revenir sur la bonne voie: par exemple, posez une question de clarification.
Exemple de boîte de dialogue:Assistant: Nous devons clarifier l'adresse de livraison, car le destinataire ne répond pas.
Client: Et à propos de quoi? Quelle commande? (JumpTo pour la clarification de la commande)
Assistant: Ordonnance du 21 août, Antigal, "Uno" Malbec.
Assistant: Alors pouvons-nous clarifier l'adresse de livraison actuelle? (Retour au script principal)
Lorsque le créateur veut que son assistant non seulement réponde par un texte, mais qu'il prenne des mesures, il pourra appeler un programmeur pour écrire des extraits JS pour le spécialiste. Nous vous permettons d'exécuter JavaScript directement pendant les scripts: accédez à l'API externe, envoyez un e-mail ou effectuez une autre action complexe.
4. Résumé
Un assistant peut s'intégrer à tout: parler à une personne au téléphone, dans des messageries instantanées ou un widget que le client affichera sur le site.
L'assemblage d'un assistant intelligent dans la plate-forme prend de quelques heures à un mois. Ensuite, le robot apprend à comprendre de manière réaliste les demandes et à reconnaître les modèles - cela prend environ six mois (pendant tout ce temps, une personne vivante les supervise). Les affaires peuvent effectuer la plupart des tâches de routine pour la fille robotique Lia: de la coordination de la livraison et de l'appel d'un taxi à la consultation des clients.

Soit dit en passant, nous avons déjà transféré des projets avec des banques sur la plateforme. Ils fonctionnent tout aussi bien, mais sont beaucoup plus commodément modérés.
Dans un avenir proche, nous prévoyons d'ajouter des extracteurs, ce qui permettra à nos utilisateurs d'extraire des données plus complexes (par exemple, le robot comprendra l'expression "après-demain après le déjeuner"). Nous allons également finaliser le contrôle des versions afin que les clients puissent rapidement restaurer et restaurer les versions des projets. Et nous allons également libérer le système de rôle de l'organisation.
Nous nous attendons à ce que les
prévisions de Gartner soient correctes - et en 2022, jusqu'à 70% de toutes les interactions avec les clients passeront par une sorte d'IA. Selon notre idée, des concepteurs comme Lia aideront à transférer le service client vers des robots encore plus rapidement.