Der Bot wird uns helfen

Der Bot wird uns helfen

Vor einem Jahr wandte sich unsere geliebte HR-Abteilung mit der Bitte an uns: einen Chatbot zu entwickeln, der neuen Mitarbeitern bei der Einarbeitung in das Unternehmen hilft.

Um Missverständnissen vorzubeugen: Wir entwickeln keine eigenen Produkte, sondern bieten unseren Kunden ein komplettes Spektrum an Dienstleistungen im Bereich der Softwareentwicklung an. Der folgende Bericht handelt von unserem internen Projekt, bei dem der Auftraggeber nicht ein externes Unternehmen ist, sondern unsere eigene HR-Abteilung. Die Hauptaufgabe besteht darin, das Projekt innerhalb der begrenzten Verfügbarkeit von Menschen, Ressourcen und Zeit fristgerecht abzuschließen und ein Produkt zu veröffentlichen.

Zunächst wollen wir die Aufgaben beschreiben, die es zu lösen galt.

Entwickler sind meistens eher introvertierte Menschen und reden nicht gerne; es ist viel einfacher, seine Frage im elektronischen Chat zu stellen. Mit dem Bot muss man nicht darüber nachdenken, wen man fragen, wen man anrufen, wo man hingehen oder wo man Informationen suchen kann und ob diese aktuell sind.

Das zweite Problem ist die Information selbst – es gibt davon viel, sie stammt aus verschiedenen Quellen, ist nicht immer vorhanden und benötigt ständige Ergänzung und Aktualisierung.

Im Unternehmen arbeiten fast 500 Mitarbeiter, die sich in verschiedenen Büros, Zeitzonen, Städten Russlands und sogar im Ausland befinden. Es gibt normalerweise sehr viele Fragen, daher besteht eine weitere Aufgabe darin, die Belastung des HR-Personals, die mit den häufigsten von den Mitarbeitern gestellten Fragen verbunden ist, zu reduzieren.

Es war auch notwendig, Prozesse zu automatisieren: den Eintritt neuer Mitarbeiter in das Unternehmen, das Versenden von Nachrichten an die Manager und Mentoren der neuen Mitarbeiter sowie das Verschicken automatischer Erinnerungen an Kurse und Tests, die der neue Mitarbeiter zur erfolgreichen Einarbeitung absolvieren muss.

Auf Basis der Geschäftsanforderungen wurden technische Anforderungen formuliert.

Der Bot soll auf Skype basieren (historisch betrachtet wird dies im Unternehmen genutzt), daher wurde der Dienst auf Azure ausgewählt.

Für den Zugangsbeschränkungen haben wir ein Autorisierungsmechanismus über Skype eingesetzt.
Für die Texterkennung wurde die Bibliothek ParlAI verwendet.

Es wird auch ein administratives Webportal benötigt, um Einstellungen vorzunehmen, Schulungen durchzuführen, Debugging zu betreiben, Versandaktionen zu konfigurieren und andere Aufgaben zu erledigen.

Der Bot wird uns helfen

Im Verlauf der Arbeit an dem Projekt sind wir auf eine Reihe von Problemen und Schwierigkeiten gestoßen.

Zum Beispiel gab es technische Probleme mit dem Azure-Konto. Microsoft wollte unser Abonnement aufgrund technischer Schwierigkeiten innerhalb ihres Dienstes nicht aktivieren. Fast zwei Monate konnten wir nichts dagegen unternehmen, und die Microsoft-Support-Abteilung zuckte letztendlich mit den Schultern und schickte uns zu Partnern, die alles erfolgreich eingerichtet und uns ein Konto bereitgestellt haben.

Der komplizierteste Teil war der Projektstart, als es darum ging, zu entscheiden, was wir verwenden, welche Architektur wir wählen, wo und wie wir die Daten speichern und wie die Komponenten und Module des Systems miteinander interagieren werden.

In unserem Fall wurden die üblichen Probleme beim Start eines Projekts zusätzlich durch die Besetzung des Personals erschwert. Die Besonderheit unseres Geschäfts liegt darin, dass im Gegensatz zu kommerziellen Projekten oft Entwickler an internen Projekten arbeiten, die nicht über ausreichendes Wissen in den erforderlichen Bereichen verfügen – sie sind einfach durch Zufall auf der Bank gelandet und warten auf das nächste große kommerzielle Projekt. Es ist logisch, dass die Motivation in einer solchen Situation auch nicht so einfach war. Die Produktivität sank, es gab oft Leerlauf innerhalb des Teams, und letztendlich musste man Leute überzeugen (motivieren) oder ersetzen. Bei einem Wechsel des Entwicklers muss Schulung stattfinden, Wissen übertragen werden und das Projekt eigentlich von Neuem gestartet werden. Jeder neue Entwickler sah die Architektur auf seine Weise und kritisierte die vorherigen Entscheidungen und den Code der anderen. Es begann ein Neuanfang.

So ging es fast sechs Monate lang weiter. Wir standen einfach auf der Stelle, refaktorierten den Code und schrieben nichts Neues.

Außerdem fehlt es an internen Projekten in der Regel fast an jeglicher Dokumentation, was es schwierig machte zu verstehen, was in jedem Moment zu tun ist und welche Prioritäten aktuell sind. Es war notwendig, ein festes Team zu bilden, Prozesse einzurichten, Planung und Bewertung zumindest für drei Monate durchzuführen. Aber wie kann man das machen, wenn das Projekt nicht kommerziell ist, was bedeutet, dass man die Arbeitsstunden minimal investieren sollte, und dabei ein Ergebnis erzielen muss, das nicht schlechter ist als für einen externen Auftraggeber?

Wir haben einen Pool von Ressourcen festgelegt, die an der Entwicklung des Projekts beteiligt waren, sich damit auskennen und daran arbeiten möchten. Wir haben einen Zeitplan für die Verfügbarkeit der Personen an den Projekten erstellt. Wir haben die Arbeiten bewertet und abgestimmt und diese Arbeiten in die "Lücken" zwischen den Hauptprojekten eingefügt. Nach 4 Monaten hatten wir einen funktionierenden Prototyp der Anwendung.

Lassen Sie uns nun genauer über die Funktionen des Bots, die Architektur und technische Lösungen sprechen.

Eine der Hauptanforderungen von HR war die Erkennung von Texten, die vom Benutzer geschrieben wurden, um korrekt auf Fragen zu antworten. Man kann ihm schreiben – ich möchte Urlaub nehmen, ich will Urlaub oder ich würde gerne Urlaub nehmen, und er wird es verstehen und entsprechend antworten. Oder wenn ein Mitarbeiter beispielsweise seinen Stuhl kaputt gemacht hat und schreiben möchte – "Mein Stuhl ist kaputt" oder "Mein Stuhl hat einen Riss" oder "Die Rückenlehne ist abgebrochen", wird der Bot solche Anfragen bei entsprechender Schulung verstehen. Die Qualität der Texterkennung hängt selbstverständlich von der Schulung des Bots ab, über die wir später sprechen werden.

Eine weitere Anforderung und Teil der Funktionalität ist das Dialogsystem des Bots. Es wurde ein System entwickelt, bei dem der Bot in der Lage ist, einen Dialog zu führen und den Kontext der aktuellen Frage zu verstehen. Er kann als Antwort auf Ihre Frage weitere klärende Fragen stellen und das Gespräch fortsetzen, wenn wir den Bot entsprechend geschult haben. Skype unterstützt einfache Menüeinträge, um den Benutzern mögliche Optionen für die Fortsetzung der Dialoge vorzuschlagen. Auch wenn wir einen Dialog geführt haben, aber plötzlich eine Frage abseits des Themas stellen wollen, wird der Bot dies ebenfalls verstehen.

Der Bot ermöglicht es, verschiedene Artefakte basierend auf den persönlichen Daten des Benutzers zu senden. Zum Beispiel basierend auf seinem Standort. Angenommen, wenn jemand ein WC finden möchte, wird eine Karte des Büros angezeigt, die ihn zum WC führt. Und die Karte wird je nach dem Büro, in dem sich der Mitarbeiter befindet, ausgewählt.

Eine der wichtigsten Aufgaben ist der Schutz der persönlichen Informationen der Benutzer. Wir können nicht zulassen, dass jeder Zugang zu den vertraulichen Daten erhält, mit denen unser Bot arbeitet. Die Notwendigkeit einer Autorisierung für einen solchen Bot ist ein wesentlicher Bestandteil. Der Bot fordert den Benutzer auf, sich zu autorisieren, bevor er mit ihm einen Dialog beginnen kann. Dies geschieht beim ersten Kontakt eines Mitarbeiters mit dem Bot. Die Autorisierung leitet den Benutzer auf die entsprechende Seite weiter, wo der Benutzer ein Token erhält, das er dann in die Skype-Nachricht einfügt. Wenn die Autorisierung erfolgreich ist, kann die Kommunikation mit dem Bot beginnen.

Der Bot wird uns helfen

Die Autorisierung erfolgt über Skype — das Portal-authorization service, das Unternehmensnetzwerk und LDAP. Somit hängt die Autorisierung von den aktuellen Daten des Benutzers im Unternehmensnetzwerk ab.

Im Verlauf der Entwicklung des Bots haben wir erkannt, dass ein gewisses System, das in die Funktionalität des Portals integriert ist, notwendig ist, um den HR-Abteilungen eine schnelle Anpassung des Bots zu ermöglichen. Wir haben eine solche Seite ins Portal aufgenommen, auf der die HR-Mitarbeiter die Fehler sehen können, die von den Benutzern während der Arbeit mit dem Bot gemeldet wurden, und diese durch Neu-Training beheben oder an die Entwickler weitergeben können.

Die Möglichkeit, den Bot direkt im Portal zu trainieren, war von Anfang an nicht vorgesehen. Im Verlauf der Entwicklung haben wir festgestellt, dass das Training des Bots die häufigste Aufgabe ist, die die Mitarbeiter der HR-Abteilung bei der Arbeit mit ihm erfüllen werden, und Dateien mit Texten zur weiteren Schulung an die Entwickler zu senden, ist absolut unpraktisch. Das kostet zu viel Zeit und führt zu zu vielen Fehlern und Problemen.

Der Bot wird uns helfen

Wir haben eine Benutzeroberfläche im Portal für eine benutzerfreundliche Schulung des Bots erstellt. Sie ermöglicht es den HR-Mitarbeitern, das aktuelle Training des Bots zu sehen, ihn weiter zu trainieren und Anpassungen am laufenden Training vorzunehmen. Das Training ist in einer baumartigen Struktur dargestellt, in der Knoten, also Zweige, Fortsetzungen des Dialogs mit dem Bot sind. Man kann einfache Frage-Antwort-Paare erstellen, aber auch umfangreiche Dialoge, alles hängt von den Bedürfnissen der HR-Mitarbeiter ab.

Ein paar Worte zur Architektur der Lösung.

Der Bot wird uns helfen

Die Architektur der Lösung ist modular. Sie umfasst Dienste, die für verschiedene Aufgaben verantwortlich sind, nämlich:
• Der Skype-Bot-Service auf Azure – empfängt und verarbeitet Benutzeranfragen. Dies ist ein relativ einfacher Service, der als erster die Anfrage entgegennimmt und eine erste Verarbeitung durchführt.
• Admin-Portal – ein Dienst, der eine Weboberfläche zur Konfiguration des Portals und des Bots bereitstellt. Der Bot wendet sich immer zuerst an das Portal, und das Portal entscheidet dann, was mit der Anfrage weiter zu tun ist.
• Authentifizierungsservice – bietet Authentifizierungsmechanismen für den Bot und das Admin-Portal. Die Authentifizierung erfolgt nach dem Oauth2-Protokoll. Bei erfolgreicher Authentifizierung führt der Dienst die Autorisierung im Unternehmensnetzwerk gemäß den gültigen Benutzerdaten durch, sodass das System Fehler im Zusammenhang mit der Desynchronisation der Daten kontrollieren kann.
• AI-Modul zur Texterkennung, geschrieben in Python und verwendet das Framework ParlAI für die Texterkennung. Dies ist ein neuronales Netzwerk, zumindest in der aktuellen Umsetzung. Wir verwenden den tfDiff-Algorithmus, um Fragen zu verstehen. Das Modul bietet eine API für die Kommunikation und das Training.

Abschließend möchte ich sagen, dass dies unsere erste Erfahrung in der Erstellung eines Chatbots ist. Wir haben versucht, das System so einfach wie möglich zu gestalten, dabei aber funktional und mit minimalen Arbeitsaufwand zu sein. Ich denke, wir haben ein sehr interessantes Produkt geschaffen, mit einem eigenen Lernsystem, Fehlerprotokollierung und Benachrichtigungen; es lässt sich auch mit jedem anderen Messenger integrieren.

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster