Der Bot wird uns helfen

Der Bot wird uns helfen

Vor einem Jahr bat uns unsere geliebte Personalabteilung, einen Chatbot zu schreiben, der Neulingen bei der Eingewöhnung in das Unternehmen helfen sollte.

Bedenken wir, dass wir keine eigenen Produkte entwickeln, sondern unseren Kunden ein umfassendes Spektrum an Entwicklungsdienstleistungen bieten. Die Geschichte wird sich um unser internes Projekt drehen, bei dem der Kunde kein Drittunternehmen, sondern unsere eigene Personalabteilung ist. Und angesichts der begrenzten Verfügbarkeit von Personal, Ressourcen und Zeit besteht die Hauptaufgabe darin, das Projekt rechtzeitig abzuschließen und das Produkt freizugeben.

Beschreiben wir zunächst die Probleme, die gelöst werden mussten.

Entwickler sind meist introvertierte Menschen und reden nicht gern; es ist viel einfacher, Ihre Frage in einem E-Mail-Chat zu stellen. Mit einem Bot müssen Sie nicht darüber nachdenken, wen Sie fragen, wen Sie anrufen, wohin Sie gehen sollen und ganz allgemein, wo Sie nach Informationen suchen und ob diese relevant sind.

Das zweite Problem sind Informationen – es gibt viele davon, sie befinden sich in verschiedenen Quellen, sie sind nicht immer verfügbar und müssen ständig ergänzt und aktualisiert werden.

Das Unternehmen hat fast 500 Mitarbeiter, sie sind in verschiedenen Büros, Zeitzonen, Städten Russlands und sogar im Ausland ansässig, es gibt normalerweise viele Fragen, daher besteht eine weitere Aufgabe darin, die Belastung des Personalpersonals durch die am häufigsten gestellten Fragen zu reduzieren durch Mitarbeiter.

Es war auch notwendig, die Prozesse zu automatisieren: Neuankömmlinge treten in das Unternehmen ein, senden Nachrichten an Manager und Mentoren von Neuankömmlingen und senden automatische Erinnerungen an Kurse und Tests, die ein Neuankömmling für eine erfolgreiche Anpassung bestehen muss.

Basierend auf den Geschäftsanforderungen wurden technische Anforderungen gebildet.

Der Bot muss auf der Basis von Skype arbeiten (historisch wird es im Unternehmen verwendet), daher wurde der Dienst auf Azura gewählt.

Um den Zugriff darauf einzuschränken, haben wir begonnen, den Autorisierungsmechanismus über Skype zu nutzen.
Für die Texterkennung wurde die ParlAI-Bibliothek verwendet

Für die Konfiguration, Schulung, Fehlerbehebung, das Einrichten von Mailings und andere Aufgaben ist außerdem ein administratives Webportal erforderlich.

Der Bot wird uns helfen

Während der Arbeit an dem Projekt stießen wir auf eine Reihe von Problemen und Schwierigkeiten.

Beispielsweise gab es technische Probleme mit einem Azure-Konto. Microsoft wollte unser Abonnement aufgrund einiger technischer Schwierigkeiten innerhalb seines Dienstes nicht aktivieren. Fast zwei Monate lang konnten wir nichts dagegen tun; der Microsoft-Support hat schließlich seine Hände geschlagen und uns zu Partnern geschickt, die alles erfolgreich eingerichtet und uns einen Account gegeben haben.

Die schwierigste Phase war der Start des Projekts, in dem Sie auswählen mussten, was wir verwenden möchten, wie die Architektur aussehen soll, wie und wo Daten gespeichert werden sollen und wie die Komponenten und Module des Systems miteinander interagieren sollen.

In unserem Fall wurden die eigentlich alltäglichen Probleme beim Start eines Projekts durch die Personalausstattung noch komplizierter. Die Besonderheiten unseres Geschäfts sind so, dass interne Projekte im Gegensatz zu kommerziellen oft von Entwicklern bearbeitet werden, die nicht über ausreichende Kenntnisse in den erforderlichen Bereichen verfügen – sie landeten einfach, durch den Willen des Schicksals, auf der Bank und warteten auf das nächste großes cooles kommerzielles Projekt. Es ist logisch, dass es in einer solchen Situation auch mit der Motivation sehr schwierig war. Die Produktivität sinkt, das Team ist oft untätig und man muss die Person überzeugen (motivieren) oder verändern. Wenn Sie den Entwickler wechseln, müssen Sie Schulungen durchführen, Wissen weitergeben und das Projekt im Wesentlichen neu starten. Jeder neue Entwickler sah die Architektur auf seine eigene Weise und tadelte die vorherigen für die von ihnen getroffenen Entscheidungen und den Code anderer Leute. Das Umschreiben begann bei Null.

Dies dauerte etwa sechs Monate. Wir haben nur die Zeit verstreichen lassen, den Code umgestaltet und nichts Neues geschrieben.

Außerdem gibt es bei internen Projekten in der Regel fast keine Dokumentation und es war schwierig zu verstehen, was zu jedem Zeitpunkt getan werden muss und welche aktuellen Prioritäten bestehen. Es war notwendig, ein festes Team zu bilden, Prozesse zu etablieren und die Planung und Bewertung für mindestens drei Monate durchzuführen. Aber wie geht das, wenn das Projekt nicht kommerziell ist, was bedeutet, dass Sie ein Minimum an Arbeitsstunden investieren müssen und gleichzeitig das Ergebnis nicht schlechter ist als bei einem externen Kunden?

Wir haben einen Pool an Ressourcen identifiziert, die an der Entwicklung des Projekts beteiligt waren, damit vertraut sind und daran arbeiten möchten. Wir haben einen Zeitplan für den Einsatz von Menschen in Projekten erstellt. Wir haben die Arbeiten bewertet und koordiniert und diese Arbeiten in die „Lücken“ zwischen den Hauptprojekten eingepasst. Nach 4 Monaten erhielten wir einen funktionierenden Prototyp der Anwendung.

Lassen Sie uns nun ausführlicher über die Funktionalität, Architektur und technischen Lösungen des Bots sprechen.

Eine der Hauptanforderungen der Personalabteilung bestand darin, den vom Benutzer geschriebenen Text zu erkennen, um die Frage richtig zu beantworten. Sie können ihm schreiben – ich möchte in den Urlaub fahren, ich möchte in den Urlaub fahren oder möchte in den Urlaub fahren, und er wird es verstehen und entsprechend reagieren. Oder plötzlich geht einem Mitarbeiter der Stuhl kaputt und er möchte schreiben „Der Stuhl ist kaputt“ oder „Mein Stuhl hat einen Riss“ oder „Die Stuhllehne ist heruntergefallen“; bei entsprechender Schulung erkennt der Bot solche Anfragen. Die Qualität der Texterkennung selbst hängt vom Training des Bots ab, worüber wir später sprechen werden.

Die nächste Anforderung und Teil der Funktionalität ist das Dialogsystem des Bots. Es wurde ein System entwickelt, bei dem der Bot einen Dialog führen und den Kontext des aktuellen Problems verstehen kann. Als Antwort auf Ihre Frage kann er klärende Fragen stellen und das Gespräch fortsetzen, wenn wir den Bot dafür geschult haben. Skype unterstützt einfache Menüoptionen, um Benutzer über Optionen zum Fortsetzen von Gesprächen aufzufordern. Auch wenn wir einen Dialog führen, uns aber plötzlich dazu entschließen, eine Frage außerhalb des Themas zu stellen, wird der Bot dies auch verstehen.

Der Bot ermöglicht es, dem Nutzer auf Basis seiner persönlichen Daten verschiedene Artefakte zuzusenden. Zum Beispiel an seinem Standort. Angenommen, jemand möchte eine Toilette finden, dann würde ihm ein Büroplan gezeigt, der ihn zur Toilette führt. Und die Karte wird abhängig davon ausgewählt, in welchem ​​Firmenbüro sich der Mitarbeiter befindet.

Eine der wichtigsten Aufgaben ist der Schutz der persönlichen Daten der Nutzer. Wir können nicht jeder Person Zugriff auf die sensiblen Daten gewähren, die unser Bot verwaltet. Die Notwendigkeit einer Autorisierung für einen solchen Bot ist ein wesentlicher Bestandteil davon. Der Bot fordert den Benutzer auf, sich zu authentifizieren, bevor er einen Dialog mit ihm führen kann. Dies geschieht, wenn ein Mitarbeiter zum ersten Mal den Bot kontaktiert. Die Autorisierung selbst leitet den Benutzer auf die entsprechende Seite weiter, wo der Benutzer ein Token erhält, das er dann in eine Skype-Nachricht einfügt. Bei erfolgreicher Autorisierung können Sie mit der Kommunikation mit dem Bot beginnen.

Der Bot wird uns helfen

Die Autorisierung erfolgt über Skype – Portal-Autorisierungsdienst, Unternehmensnetzwerk und LDAP. Somit ist die Autorisierung von den aktuellen Benutzerdaten im Unternehmensnetzwerk abhängig.

Während der Entwicklung des Bots wurde uns klar, dass wir ein in die Portalfunktionalität integriertes System benötigten, das der Personalabteilung dabei helfen konnte, den Bot schnell zu debuggen. Wir haben eine Portalseite hinzugefügt, auf der die Personalabteilung von Benutzern bei der Arbeit mit dem Bot aufgezeichnete Fehler einsehen und diese durch Umschulung beheben oder den Entwicklern überlassen kann.

Die Möglichkeit, einen Bot direkt auf dem Portal zu trainieren, war von Anfang an nicht vorgesehen. Während des Entwicklungsprozesses haben wir festgestellt, dass das Training des Bots die häufigste Aufgabe ist, die Mitarbeiter der Personalabteilung bei der Arbeit damit ausführen werden, und dass das Versenden von Textdateien an Entwickler zur zusätzlichen Schulung des Bots völlig inakzeptabel ist. Das verschlingt zu viel Zeit und verursacht zu viele Fehler und Probleme.

Der Bot wird uns helfen

Wir haben auf dem Portal eine Benutzeroberfläche für die benutzerfreundliche Schulung des Bots geschrieben. Dadurch kann die Personalabteilung das aktuelle Training des Bots einsehen, ihn weiter trainieren und Anpassungen am aktuellen Training vornehmen. Das Training wird durch eine Baumstruktur dargestellt, in der Knoten, also Zweige, eine Fortsetzung des Dialogs mit dem Bot darstellen. Sie können einfache Fragen und Antworten erstellen oder gewichtige Dialoge erstellen, alles hängt von der Personalabteilung und ihren Bedürfnissen ab.

Ein paar Worte zur Lösungsarchitektur.

Der Bot wird uns helfen

Die Lösungsarchitektur ist modular. Es umfasst Dienste, die für verschiedene Aufgaben verantwortlich sind, nämlich:
• Skype-Bot-Dienst auf Azure – akzeptiert und verarbeitet Benutzeranfragen. Hierbei handelt es sich um einen relativ einfachen Dienst, der als erster eine Anfrage empfängt und die Erstverarbeitung durchführt.
• Admin-Portal – ein Dienst, der eine Webschnittstelle zum Einrichten des Portals und für den Bot selbst bereitstellt. Der Bot kontaktiert immer zuerst das Portal und das Portal entscheidet, was als nächstes mit der Anfrage geschehen soll.
• Autorisierungsdienst – stellt Authentifizierungsmechanismen für den Bot und das Admin-Portal bereit. Die Autorisierung erfolgt über das Oauth2-Protokoll. Bei positiver Autorisierung führt der Dienst die Autorisierung im Unternehmensnetzwerk anhand gültiger Benutzerdaten durch, sodass das System Fehler im Zusammenhang mit nicht synchronen Daten kontrollieren kann.
• KI-Texterkennungsmodul, geschrieben in Python und unter Verwendung des ParlAI-Frameworks für die Texterkennung selbst. Dies ist ein neuronales Netzwerk, zumindest in seiner aktuellen Implementierung. Wir verwenden den tfDiff-Algorithmus, um die Fragen zu verstehen. Das Modul stellt eine API für die Kommunikation und das Lernen bereit.

Abschließend möchte ich sagen, dass dies unsere erste Erfahrung mit der Erstellung eines Chatbots ist und wir versucht haben, das System so einfach wie möglich, aber gleichzeitig funktionsfähig und mit minimalen Arbeitskosten zu gestalten. Ich denke, wir haben ein sehr interessantes Produkt. Mit eigenem Trainingssystem, Fehlerprotokollierung, Benachrichtigungsversand kann es auch in jeden anderen Messenger integriert werden.

Source: habr.com

Kommentar hinzufügen