Der Bot wird uns helfen

Der Bot wird uns helfen

Vor einem Jahr bat unsere geliebte Personalabteilung um die Erstellung eines Chatbots, der neuen Mitarbeitern bei der Eingewöhnung ins Unternehmen helfen sollte.

Wir möchten klarstellen, dass wir keine eigenen Produkte entwickeln, aber unseren Kunden eine vollständige Palette von Entwicklungsdienstleistungen anbieten. Der Bericht handelt von unserem internen Projekt, bei dem der Auftraggeber nicht ein externes Unternehmen, sondern unsere eigene Personalabteilung ist. Die Hauptaufgabe bestand darin, das Projekt fristgerecht mit begrenzter Verfügbarkeit von Personen, Ressourcen und Zeit abzuschließen und ein Produkt zu veröffentlichen.

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

Entwickler sind in der Regel introvertiert und reden nicht gerne, es ist viel einfacher, seine Fragen in einem elektronischen Chat zu stellen. Mit dem Bot muss man nicht überlegen, wen man fragen, wen man anrufen oder wohin man gehen soll und wo man Informationen sucht — und ob diese aktuell sind.

Das zweite Problem ist die Information — es gibt viele Informationen, sie stammt aus verschiedenen Quellen, ist nicht immer verfügbar und muss ständig ergänzt und aktualisiert werden.

Das Unternehmen beschäftigt fast 500 Mitarbeiter, die sich in verschiedenen Büros, Zeitzonen und Städten in Russland und sogar im Ausland befinden. Es gibt in der Regel viele Fragen, daher besteht auch die Aufgabe, die Belastung des HR-Personals durch die häufigsten Fragen, die von den Mitarbeitern gestellt werden, zu reduzieren.

Es war auch notwendig, die Prozesse zu automatisieren: den Eintritt neuer Mitarbeiter ins Unternehmen, die Versendung von Nachrichten an die Manager und Mentoren der neuen Mitarbeiter sowie das Senden automatischer Erinnerungen an Kurse und Prüfungen, die neue Mitarbeiter für eine erfolgreiche Einarbeitung absolvieren müssen.

Basierend auf den geschäftlichen Anforderungen wurden technische Anforderungen definiert.

Der Bot muss auf Skype basieren (historisch gesehen wird dieser in der Firma verwendet), daher wurde ein Service auf Azure gewählt.

Für den Zugriffsschutz haben wir ein Authentifizierungsverfahren über Skype implementiert.
Für die Texterkennung haben wir die Bibliothek ParlAI verwendet.

Ein administratives Webportal für die Konfiguration, Schulung, Fehlersuche, das Einrichten von Versandaktionen und andere Aufgaben ist ebenfalls erforderlich.

Der Bot wird uns helfen

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

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

Die schwierigste Phase war der Projektstart, als es darum ging, auszuwählen, was wir verwenden, welche Architektur wir wählen, wie und wo wir die Daten speichern und wie die Komponenten und Module des Systems miteinander interagieren werden.

In unserem Fall wurden die gewöhnlichen Startprobleme eines jeden Projekts zusätzlich durch den Personalmangel erschwert. Die Besonderheit unseres Geschäfts ist, dass im Gegensatz zu kommerziellen Projekten oft Entwickler an internen Projekten arbeiten, die nicht über ausreichende Kenntnisse in den erforderlichen Bereichen verfügen – sie befinden sich einfach aus schicksalhaften Gründen auf der Ersatzbank und warten auf das nächste große kommerzielle Projekt. Es ist logisch, dass die Motivation in einer solchen Situation auch nicht gerade hoch war. Die Produktivität fiel stark, im Team gab es oft Leerlauf, was dazu führte, dass man die Entwickler überzeugen (motivieren) oder ersetzen musste. Bei einem Wechsel des Entwicklers musste eine Schulung durchgeführt, Wissen übergeben und im Grunde das Projekt von neuem gestartet werden. Jeder neue Entwickler sah die Architektur anders und kritisierte die vorherigen Entscheidungen und den fremden Code. Das führte zu Neuenschreibungen von Grund auf.

Das dauerte etwa ein halbes Jahr. Wir kamen einfach nicht voran, refaktoren den Code und schrieben nichts Neues.

In internen Projekten gibt es in der Regel kaum Dokumentation, was es schwierig macht, jederzeit zu verstehen, was zu tun ist und welche Prioritäten gerade gelten. Es war notwendig, ein festes Team zu bilden, Prozesse zu etablieren, sowie eine Planung und Einschätzung für mindestens drei Monate durchzuführen. Doch wie soll man das anstellen, wenn das Projekt nicht kommerziell ist? Das bedeutet, dass man die personellen Ressourcen minimal einsetzen und trotzdem Ergebnisse erzielen muss, die nicht hinter denen für externe Auftraggeber zurückbleiben.

Wir haben eine Gruppe von Ressourcen festgelegt, die an der Entwicklung des Projekts beteiligt waren, mit ihm vertraut sind und bereit sind, daran zu arbeiten. Wir haben den Arbeitszeitplan der Mitarbeiter für die Projekte erstellt. Eine Bewertung und Abstimmung der Aufgaben wurde durchgeführt, und die Arbeiten wurden in die "Lücken" zwischen den Hauptprojekten eingetragen. Nach vier Monaten hatten wir einen funktionierenden Prototyp des Anwendungsprogramms.

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

Eine der Hauptanforderungen der Personalabteilung 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 in den Urlaub oder ich würde gerne in den Urlaub gehen, und er wird es verstehen und entsprechend antworten. Oder wenn plötzlich der Stuhl des Mitarbeiters kaputtgeht und er schreiben möchte – „der Stuhl ist kaputt“ oder „mein Stuhl hat einen Riss“ oder „die Rückenlehne des Stuhls ist abgefallen“, erkennt der Bot solche Anfragen bei entsprechender Schulung. Die Qualität der Texterkennung hängt natürlich von der Ausbildung des Bots ab, über die wir später sprechen werden.

Die nächste Anforderung und ein Teil der Funktionalität ist das Dialogsystem des Bots. Es wurde ein System entwickelt, bei dem der Bot Gespräche führen kann und den Kontext der aktuellen Frage versteht. Er kann auf Ihre Frage hin weitere уточняющие Fragen stellen und das Gespräch fortsetzen, wenn wir den Bot darauf trainiert haben. Skype unterstützt einfache Menüoptionen, um den Benutzern mögliche Fortsetzungen von Dialogen anzuzeigen. Wenn wir im Gespräch waren, aber plötzlich eine Frage zu einem anderen Thema stellen möchten, wird der Bot das ebenfalls verstehen.

Der Bot ermöglicht es, verschiedene Artefakte an den Benutzer zu senden, basierend auf seinen persönlichen Daten. Zum Beispiel seiner Position. Angenommen, jemand möchte eine Toilette finden, dann wird ihm eine Karte des Büros angezeigt, die ihn zur Toilette führt. Die Karte wird ausgewählt, je nachdem, in welchem Büro sich der Mitarbeiter des Unternehmens befindet.

Eine der wichtigsten Aufgaben besteht darin, die persönlichen Informationen der Benutzer zu schützen. Wir können es uns nicht leisten, dass jede Person Zugriff auf die 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 authentifizieren, bevor er einen Dialog führen kann. Dies geschieht beim ersten Kontakt des 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 der Skype-Nachricht einfügt. Wenn die Autorisierung erfolgreich ist, kann die Kommunikation mit dem Bot beginnen.

Der Bot wird uns helfen

Die Authentifizierung erfolgt über Skype – das Portal-authorization service, das Unternehmensnetzwerk und LDAP. Somit hängt die Authentifizierung von den aktuellen Benutzerdaten im Unternehmensnetzwerk ab.

Während der Entwicklung des Bots erkannten wir, dass ein System benötigt wird, das in die Funktionalität des Portals integriert ist und HR bei der schnellen Debugging des Bots unterstützen kann. Wir haben eine solche Seite im Portal hinzugefügt, auf der die HR-Mitarbeiter die Fehler sehen können, die von Benutzern bei der Arbeit mit dem Bot festgehalten wurden, und diese durch erneutes Training behoben oder zur Bearbeitung an die Entwickler weitergegeben können.

Die Möglichkeit, den Bot direkt im Portal zu trainieren, war von Anfang an nicht vorgesehen. Im Verlauf der Entwicklung wurde uns bewusst, dass das Training des Bots die häufigste Aufgabe sein wird, die die Mitarbeiter der HR-Abteilung bei der Nutzung des Bots durchführen werden, und es ist völlig inakzeptabel, Dateien mit Text an die Entwickler für das zusätzliche Training des Bots zu senden. Das kostet zu viel Zeit und führt zu vielen Fehlern und Problemen.

Der Bot wird uns helfen

Wir haben die Benutzeroberfläche des Portals für ein benutzerfreundliches Bot-Training entwickelt. Sie erlaubt es den HR-Mitarbeitern, das aktuelle Bot-Training zu beobachten, es weiter zu trainieren und Anpassungen am laufenden Training vorzunehmen. Das Training wird in einer baumartigen Struktur dargestellt, wobei die Knoten, also die Zweige, Fortsetzungen des Dialogs mit dem Bot sind. Es können einfache Fragen-Antworten erstellt werden, aber auch umfangreiche Dialoge, alles abhängig von den Bedürfnissen der HR.

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, und zwar:
• Skype-Bot-Dienst auf Azure — nimmt Benutzeranfragen entgegen und verarbeitet sie. Dies ist ein recht einfacher Dienst, der zunächst die Anfrage entgegennimmt und sie einer ersten Verarbeitung unterzieht.
• Admin-Portal — ein Dienst, der eine Web-Oberfläche zur Konfiguration des Portals und des Bots bereitstellt. Der Bot wendet sich immer zuerst an das Portal, und das Portal entscheidet dann, wie mit der Anfrage weiter verfahren wird.
• Authentifizierungsdienst — bietet Authentifizierungsmechanismen für den Bot und das Admin-Portal. Die Authentifizierung erfolgt über das Protokoll Oauth2. Bei erfolgreicher Authentifizierung führt der Dienst die Autorisierung im Unternehmensnetzwerk basierend auf gültigen Benutzerdaten durch, sodass das System Fehler im Zusammenhang mit Dateninkonsistenzen überwachen kann.
• KI-Modul zur Texterkennung, geschrieben in Python und verwendet das Framework ParlAI für die Texterkennung. Es handelt sich um ein neuronales Netz, zumindest in der aktuellen Implementierung. Wir verwenden den Algorithmus tfDiff, 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 und wir versucht haben, das System so einfach wie möglich, jedoch funktional zu gestalten, bei minimalem Aufwand. Ich denke, wir haben ein recht interessantes Produkt entwickelt. Mit einem eigenen Lernsystem, Fehlerprotokollierung, Benachrichtigungsversand kann es auch mit jedem anderen Messenger integriert werden.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster