So bearbeiten Sie automatisch 40 % der Anrufe / Sudo Null IT News

Einführung

Hallo! Mein Name ist Maxim, ich bin geschäftsführender Gesellschafter in KTS.

Vor kurzem haben wir die Benutzerkommunikation mit dem Support in der Bank automatisiert DOM.RF. Wir haben einen Chatbot basierend auf unserem Smartbot Pro-Konstruktor implementiert und während unserer Arbeit zusammen mit dem Bankteam die Logik für die Verarbeitung von 550 verschiedenen Szenarien erstellt. Infolgedessen verarbeitet unser Service jetzt erfolgreich 40 % der eingehenden Kundenanfragen.

Im Folgenden erzähle ich Ihnen mehr über unseren Konstrukteur, die Aufgabe des Kunden und wie wir sie gelöst haben.

Über das Produkt

Smartbot Pro – Low-Code-Plattform zum Erstellen von Chatbots in Form von Flussdiagrammen mit der Möglichkeit, sich direkt über die Schnittstelle in andere Systeme zu integrieren. Die Auswahl eines geeigneten Szenarios der Benutzerinteraktion erfolgt mit Hilfe eines neuronalen Netzes.

BeispielBeispiel

Blockdiagramme. Das Hauptarbeitsgebiet ist der Baum der Skriptblöcke, in dem der Administrator die Kommunikationslogik mit dem Benutzer aufbaut.

Im Konstruktor sind 3 Arten von Blöcken verfügbar:

  • Ereignisse: Eine Nachricht von einem Benutzer.

  • Aktionen: eine Nachricht senden, eine Variable setzen, Daten vom Client speichern, in Statistiken schreiben, SmarQuery ausführen, einen Benutzer zur Liste hinzufügen oder löschen, zu einem anderen Skript wechseln und ein Ereignis planen.

  • Integrationsblöcke, die es Ihnen ermöglichen, Daten mit den internen Systemen der Bank auszutauschen (Microservices): New Athena, APIX Credit Pipeline.

Szenarioauswahl durch ein neuronales Netz. Unsere Architektur ist so aufgebaut, dass das neuronale Netzwerk dem System hilft, das am besten geeignete Szenario auszuwählen, dem der Benutzer vorhersehbar folgt. Eine exakte Formulierung ist nicht erforderlich, der Benutzer muss lediglich etwas Ähnliches wie eine Frage in die Datenbank eingeben.

Integrationen. Wenn ein Chatbot mit einem Benutzer kommuniziert, ist es normalerweise erforderlich, Daten über den Benutzer an das CRM-System zu senden. Für solche Fälle verfügt das Produkt über vorgefertigte Integrationen sowie die Möglichkeit, beliebige HTTP-Anforderungen an beliebige Systeme zu senden. Zum Beispiel haben wir das mit dem HTTP-Request-Block gemacht Bot, um einen Raum in Zoom zu erstellen.

Low-Code. Sie müssen kein Programmierer sein, um Smartbot Pro zu verwenden. Gleichzeitig können Sie für eine bessere Anpassung und Reduzierung der Baumgröße Blöcke zum Ausführen von Skripten in der SmartQuery-Sprache verwenden – das ist unsere eigene Python-ähnliche Sprache. Darüber hinaus können darauf komplexe Bedingungen konstruiert werden.

Beispiele für die Arbeit mit SmartQueryBeispiele für die Arbeit mit SmartQuery

Client-Aufgabe

Die DOM.RF Bank gehört zu den Top 15 in Bezug auf Kapital und Vermögen unter allen russischen Banken. Dies ist eine große Bank mit nur 3.300 Mitarbeitern. Es gibt viele Produkte bzw. viele Szenarien für die Kommunikation mit Kunden.

Die Aufgabe der Bank bestand darin, Fragen zu 200 Produkten zu beantworten und etwa 20 einzigartige Szenarien der Benutzerverwaltung „per Skript“ zu automatisieren. Jetzt enthält der Bot 550 Szenarien, in denen 3100 Blöcke gesammelt werden. Gleichzeitig passt die Reaktionszeit weiterhin in die normativen 3 Sekunden.

Was erlaubte, so viele Szenarien zu organisieren

Wenn Sie einfach für jeden Fall neue Skripte erstellen, werden viele Skripte früher oder später schwer zu warten und zu ändern sein. Um mit einem solchen Volumen fertig zu werden, haben wir mehrere Hauptfunktionen verwendet:

  • Portale. Wir duplizieren die Wiederholungslogik nicht, sondern trennen sie in ein separates Szenario, in das wir mithilfe des Portalblocks von anderen Szenarien übergehen. Zum Beispiel, wenn jede Interaktion mit dem Sammeln von Feedback vom Benutzer enden muss.

  • Ableitung von bedeutungsnahen Alternativen. Es gibt viele Szenarien. Wenn der Bot also bei der Auswahl eines Szenarios nicht „selbstsicher“ genug ist, bietet er eine Liste der am nächsten liegenden an und schneidet Optionen ab, die überhaupt nicht passen.

  • Priorität der Szenarioauswahl. Manchmal kann es vorkommen, dass mehrere Ereignisbedingungen gleichzeitig ausgelöst werden. Zum Beispiel haben wir Hypothekenkonditionen und Darlehensbedingungen. Der Benutzer schreibt: “Bedingungen”. Im Standardfall wählt der Bot aus den am besten geeigneten ein zufälliges Szenario aus. Wenn die Bank ihre Hypothekenprodukte bewerben möchte, können Sie die Priorität des Hypothekenkonditionen-Szenarios festlegen. Dann erfahren Nutzer häufiger von den Konditionen einer Hypothek.

Frontend-Optimierung

Sie können die Arbeit mit großen Szenariodiagrammen grundlegend angehen und Ihre Lösung mithilfe von WebGL von Grund auf neu schreiben. Die Entwicklung dieser Methode erfordert viel Zeit, da die gesamte Logik des Graphen und die Anzeige von Blöcken von Grund auf neu programmiert werden muss.

Die zweite Möglichkeit besteht darin, eine fertige Bibliothek zu nehmen, die mit gewöhnlichen HTML-Elementen implementiert wird. Wir haben uns für diese Option entschieden und dabei JSPlumb zugrunde gelegt. Es war leicht an unser Design anpassbar und lieferte eine gute Leistung.

Im Durchschnitt gibt es etwa 50 Blöcke in Bankskripten. Gleichzeitig gibt es noch einige Szenarien, die weit über den Durchschnitt hinausgehen. In solchen Szenarien verzögerte sich die Schnittstelle etwas. Um die Leistung für solche Szenarien zu optimieren, haben wir wie folgt gehandelt:

Schritt 1. Zoomen. Die meiste Zeit wurde damit verbracht, Blöcke neu zu zeichnen, während man sich entlang des Baums bewegte. Gleichzeitig ist die Verarbeitung schneller, wenn nur wenige Blöcke auf dem Bildschirm sichtbar sind. Daher haben wir den Zoom eingeschränkt und zur bequemeren Orientierung entlang der Grafik eine Minikarte hinzugefügt.

Schritt 2. Animationen. Wenn der Benutzer die Karte bewegt, wird ein Rendering ausgelöst, das einen Neuberechnungsschritt enthält. Wenn gleichzeitig die Animation der reibungslosen Bewegung eingeschaltet ist, treten Verzögerungen während des Betriebs auf, da Sie viele Neuberechnungen durchführen müssen.

Die Leistung der Schnittstelle hängt von der Leistung des Geräts ab, und idealerweise sollte das Limit für jedes individuell berechnet werden. Aber der Browser gibt nicht alle notwendigen Informationen. Daher haben wir uns auf eine empirisch errechnete Anzahl von 300 Blöcken festgelegt, nach denen die Animation abgeschaltet wird.

Caching blockieren

Der Block-Cache ist einstufig und wird nur im Anwendungsspeicher gespeichert, da dies der schnellste Speicher ist.

Wenn ein Ereignis in einem Kanal empfangen wird, der zu einem Projekt gehört, werden alle Blöcke dieses Szenarios, Kanals, Projekts und dieser Version in den Anwendungsspeicher geladen. Die Versionen werden in veröffentlichte – Analoge der Produktion und unveröffentlichte – Analoge der Bühne unterteilt.

Außerdem werden alle Blöcke in Kategorien zerlegt: zum Beispiel alle Blöcke von Eingaben, Reaktionen, globale Suche und andere. Dadurch wird ein schnellerer Zugriff auf die gewünschte Kategorie ermöglicht.

Der Cache ist präventiv, das heißt, er speichert die letzten N angeforderten Paare von Kanälen/Projekten/Versionen. Jede Änderung – Veröffentlichen einer neuen Version, Neustarten oder Ändern eines Blocks – macht den Cache ungültig.

Nuancen des Starts und der Implementierung

Clustering. Um die erste Version des Bots zu starten, haben wir historische Daten verarbeitet. Fragen-Clustering half uns, ähnliche Fragen in „Paketen“ zu gruppieren und die häufigsten zu identifizieren.

Die Nähe von Fragen wird durch den auf dem LaBSE-Modell basierenden OPTICS-Algorithmus (Ordering Points To Identification the Clustering Structure) bestimmt: Der Text wird in Vektoren umgewandelt, die durch Kosinus-Abstand miteinander verglichen werden. Diejenigen, die der Bedeutung am nächsten kommen, werden gruppiert, und wir erhalten eine vorbestimmte Anzahl von Clustern mit sehr ähnlichen Fragen.

Daher haben wir echte Kundenfragen verwendet, um Szenarien für die Kommunikation der Benutzer mit dem Bot zu erstellen. Mit Hilfe von Clustering haben wir es schnell und effizient gemacht: In 4-5 Tagen haben wir alle echten Anfragen von Benutzern aussortiert. Es ist fast unmöglich, ein solches Arbeitsvolumen manuell zu bearbeiten.

Keycloak-Integration. Zunächst haben wir ein vorgefertigtes OAuth2-Proxy-System verwendet, das wir in einen Kubernetes-Cluster zerlegt haben. Dann richten wir über dieses System und den Ingress-Controller eine Autorisierungsprüfung für den gesamten eingehenden Datenverkehr ein.

Dann haben wir das System der Banking-Rollen in Keycloak in unseren Service integriert und eine native Rechtevererbung vorgenommen: Wenn ein Mitarbeiter in Keycloak Administratorrechte für unseren Service hat, erstellen wir in unserem Service ein internes Benutzerkonto mit einem entsprechenden Recht.

Grafikkarten in Kubernetes. Eine eiserne Grafikkarte in eine virtuelle Maschine zu werfen ist nicht so einfach, das Bankteam hat uns dabei geholfen.

Die Bank hatte Nvidia-Grafikkarten. Zur Aktivierung sind Lizenzen erforderlich. Lizenzen sind je nach Zweck der Arbeit unterschiedlich und werden nur in einem bestimmten Modus aktiviert. Danach müssen sie auf Servern abgelegt werden, die sich in verschiedenen Rechenzentren befinden. Die Server haben keinen direkten Zugang zum Internet, daher wurden die Treiber manuell ausgewählt: Es war notwendig, den Treiber zu finden, der den Anforderungen entspricht – Grafikkartenmodell, Lizenztyp, Unterstützung für virtuelle Maschinen und Arbeit in Docker.

Nuancen unterstützen

Fehlerlokalisierung. Nachrichten von der Seite werden an das CRM-System übermittelt, das entscheidet, ob der Dialog an einen Operator oder an einen Chatbot übertragen wird. Wenn der Dialog in einen Bot übersetzt wurde, kam die Nachricht zu uns. Dann haben wir eine Antwort auf diese Nachricht an das CRM-System gegeben, und es hat der Website über Websocket in Echtzeit eine Antwort gegeben.

Infolgedessen hat die Nachricht 4 Segmente durchlaufen, bevor die Antwort an den Benutzer zurückgesendet wurde. Wenn ein Fehler auftrat, konnte er in jedem dieser vier Segmente auftreten.

Da unser System das letzte in diesem Interaktionsprozess war, war es wichtig, beim Auftreten eines Fehlers schnell die Fehlerquelle zu ermitteln und, wenn es nicht auf unserer Seite lag, umgehend den Kollegen zu melden.

Optimierung der Erkennungsgenauigkeit. Um die Erkennungsgenauigkeit zu den Hauptthemen zu verbessern, schaut sich der Produktmanager der Bank Tableau an und fügt Trainingsphrasen hinzu, wenn die durchschnittliche Wahrscheinlichkeit für häufig gestellte Fragen zu gering ist.

Ergebnisse

  • Die Anzahl der Dialoge im Chatbot beträgt 7.000 pro Monat.

  • Davon verarbeitet der Bot 40 % erfolgreich – das sind 2.800 Dialoge.

  • 97 % der Benutzeranfragen werden in weniger als 3 Sekunden bearbeitet. In unserem Fall arbeitet der Chatbot nicht direkt mit Kanälen, sondern über CRM, daher ist dies ein gutes Ergebnis.

Das Team der DOM.RF Bank teilte Tipps zur Entwicklung eines Bot-Assistenten für die ersten Monate nach dem Start und nützliche Funktionen, die sich auf die wichtigsten Kennzahlen auswirken:
“Wie man einen anständigen virtuellen Assistenten erzieht”

Similar Posts

Leave a Reply

Your email address will not be published.