De bot helpt ons

De bot helpt ons

Een jaar geleden vroeg onze geliefde HR-afdeling om een chatbot te ontwikkelen die nieuwe medewerkers helpt zich aan te passen binnen het bedrijf.

Laten we beginnen met te verduidelijken dat we geen eigen producten ontwikkelen, maar we bieden onze klanten een volledig scala aan ontwikkelingsdiensten. Dit verhaal gaat over ons interne project, waarvoor de opdrachtgever niet een externe onderneming is, maar onze eigen HR. De belangrijkste taak was om, gezien de beperkte beschikbaarheid van mensen, middelen en tijd, het project binnen de deadline te voltooien en een product uit te brengen.

Om te beginnen beschrijven we de taken die opgelost moesten worden.

Ontwikkelaars zijn over het algemeen introverte mensen en houden niet van praten; het is veel eenvoudiger om hun vraag in een digitale chat te stellen. Met de bot hoeft men niet na te denken over wie te vragen, wie te bellen, waarheen te gaan en waar informatie te vinden, en of deze informatie actueel is.

Een tweede probleem is de informatie zelf — er is veel informatie, deze bevindt zich in verschillende bronnen, is niet altijd beschikbaar en vereist constante aanvulling en actualisatie.

Het bedrijf heeft bijna 500 medewerkers, die zich in verschillende kantoren, tijdzones en steden in Rusland en zelfs in het buitenland bevinden. Er zijn vaak veel vragen, daarom is er nog een taak — de belasting voor de HR-afdeling te verlagen die gerelateerd is aan de meest voorkomende vragen van medewerkers.

Het was ook nodig om processen te automatiseren: het binnenkomen van nieuwe medewerkers in het bedrijf, het versturen van berichten naar managers en mentoren van nieuwe medewerkers, en het sturen van automatische herinneringen voor cursussen en tests die een nieuwkomer moet doorlopen voor een succesvolle aanpassing.

Op basis van de zakelijke vereisten werden de technische vereisten opgesteld.

De bot moet werken op basis van Skype (historisch gezien wordt dit door het bedrijf gebruikt), daarom werd de Azure-service gekozen.

Voor de toegangsbeperkingen hebben we het autorisatiemechanisme via Skype gebruikt.
Voor de tekstherkenning hebben we de bibliotheek ParlAI gebruikt.

Er is ook een administratief webportaal nodig voor configuratie, training, debugging, instellingen van meldingen en andere taken.

De bot helpt ons

Tijdens het werken aan het project zijn we met een aantal problemen en uitdagingen geconfronteerd.

Bijvoorbeeld, er waren technische problemen met het Azure-account. Microsoft wilde onze abonnementen om een of andere technische complicatie in hun dienst niet activeren. Bijna twee maanden konden we er niets aan doen, de support van Microsoft haalde uiteindelijk de schouders op en verwees ons naar partners die alles succesvol instelden en ons een account gaven.

De meest complexe fase was het starten van het project, waarbij we moesten kiezen wat we zouden gebruiken, wat de architectuur zou zijn, hoe en waar we gegevens zouden opslaan en hoe de componenten en modules van het systeem met elkaar zouden interageren.

In ons geval werden de gebruikelijke problemen van het starten van elk project nog verergerd door het stafprobleem. De aard van ons bedrijf is dusdanig dat, in tegenstelling tot commerciĆ«le projecten, interne projecten vaak worden uitgevoerd door ontwikkelaars die niet over voldoende kennis in de vereiste gebieden beschikken – ze waren simpelweg door de omstandigheden op de bank beland in afwachting van het volgende grote commerciĆ«le project. Het was logisch dat het in zo'n situatie ook vrij moeilijk was om de motivatie op peil te houden. De productiviteit daalde, er was vaak stilstand in het team, en uiteindelijk moesten we iemand overhalen (motiveren) of vervangen. Bij het vervangen van een ontwikkelaar moet training plaatsvinden, kennis moeten worden overgedragen en eigenlijk moet het project opnieuw worden gestart. Elke nieuwe ontwikkelaar zag de architectuur op zijn eigen manier en bekritiseerde de vorige beslissingen en de code van anderen. Het herschrijven begon vanaf nul.

Dit duurde ongeveer een half jaar. We stonden gewoon stil, refactoren de code en schreven niks nieuws.

Ook waren er op interne projecten doorgaans bijna geen documentatie, waardoor het moeilijk was om te begrijpen wat op elk moment moest gebeuren en wat de prioriteiten waren. Het was noodzakelijk om een vast team te creƫren, processen op te zetten, en planning en schatting ten minste voor drie maanden te doen. Maar hoe doe je dat als het project niet commercieel is, wat betekent dat je zoveel mogelijk moet minimaliseren van de arbeidsuren, en tegelijkertijd een resultaat moet behalen dat niet slechter is dan dat voor een externe klant?

We hebben een pool van middelen vastgesteld die betrokken waren bij de ontwikkeling van het project, bekend zijn met het project en willen werken. We hebben een planning gemaakt voor de inzet van mensen op projecten. We hebben de taken geƫvalueerd en goedgekeurd, en deze taken ingepland in de 'gaten' tussen de belangrijkste projecten. Na 4 maanden hadden we een werkend prototype van de applicatie.

Laten we nu dieper ingaan op de functionaliteit van de bot, de architectuur en de technische oplossingen.

Een van de belangrijkste vereisten van HR was het herkennen van de tekst die door de gebruiker is geschreven om correct te antwoorden op vragen. Je kunt bijvoorbeeld schrijven - ik wil op vakantie, ik wil op vakantie of zou ik op vakantie gaan, en hij zal het begrijpen en dienovereenkomstig antwoorden. Of als een medewerker zijn stoel heeft gebroken en wil schrijven - 'stoel is gebroken' of 'mijn stoel heeft een scheur' of 'de rugleuning van de stoel is losgekomen', bij juiste training zou de bot dergelijke verzoeken herkennen. De kwaliteit van de herkenning van de tekst hangt vanzelfsprekend af van de training van de bot, waar we later op terugkomen.

Een volgende vereiste en onderdeel van de functionaliteit is het dialoogsysteem van de bot. Er is een systeem ontwikkeld waarbij de bot een gesprek kan voeren en de context van de huidige vraag kan begrijpen. Hij kan in antwoord op uw vraag aanvullende vragen stellen en het gesprek voortzetten, als we de bot hiervoor hebben getraind. Skype ondersteunt eenvoudige menu-items om gebruikers suggesties te geven voor mogelijke vervolgdialogen. Ook als we een gesprek hadden, maar plotseling een vraag stelden die niet relevant is, dan begrijpt de bot dit ook.

De bot biedt de mogelijkheid om verschillende artefacten naar de gebruiker te sturen, gebaseerd op zijn persoonlijke gegevens. Bijvoorbeeld, op basis van zijn locatie. Stel je voor dat iemand een toilet wil vinden, dan zal er een kaart van het kantoor worden weergegeven die hem naar het toilet leidt. En de kaart zal worden gekozen afhankelijk van welk kantoor van het bedrijf de medewerker zich bevindt.

Een van de belangrijkste taken is de bescherming van de persoonlijke informatie van gebruikers. We kunnen niet toelaten dat iedereen toegang krijgt tot de vertrouwelijke gegevens waarmee onze bot werkt. De noodzaak van autorisatie voor zo'n bot is een integraal onderdeel ervan. De bot vraagt de gebruiker om autorisatie voordat hij met hem kan communiceren. Dit gebeurt bij de eerste interactie van de medewerker met de bot. De autorisatie leidt de gebruiker naar de relevante pagina, waar de gebruiker een token ontvangt dat hij vervolgens in het Skype-bericht plaatst. Als de autorisatie succesvol is, kan de communicatie met de bot beginnen.

De bot helpt ons

De autorisatie verloopt via Skype — de autorisatiedienst, het bedrijfsnetwerk en LDAP. Zo hangt de autorisatie af van de actuele gegevens van de gebruiker in het bedrijfsnetwerk.

Tijdens de ontwikkeling van de bot realiseerden we ons dat er een systeem nodig was, geĆÆntegreerd in de functionaliteit van het portaal, dat HR in staat zou stellen om de bot snel te debuggen. We hebben zo'n pagina aan het portaal toegevoegd, waar HR-medewerkers de fouten kunnen zien die gebruikers hebben gerapporteerd tijdens het werken met de bot en deze kunnen oplossen door middel van hertraining of ze voor ontwikkelaars kunnen achterlaten.

De mogelijkheid om de bot direct op het portaal te trainen was niet vanaf het begin ingebouwd. Tijdens de ontwikkeling realiseerden we ons dat het trainen van de bot de meest voorkomende taak zou zijn die HR-medewerkers zouden uitvoeren tijdens hun werk met hem, en het is volkomen onaanvaardbaar om bestanden met tekst naar ontwikkelaars te sturen voor aanvullende training van de bot. Dit kost te veel tijd en leidt tot te veel fouten en problemen.

De bot helpt ons

We hebben een gebruikersinterface op het portaal geschreven voor gebruiksvriendelijke training van de bot. Het stelt HR in staat om de huidige training van de bot te zien, deze bij te schaven en aanpassingen te maken aan de actuele training. De training wordt gepresenteerd in een boomstructuur, waarin de knopen, dat wil zeggen de takken, voortzettingen zijn van de dialoog met de bot. Simpele vraag-en-antwoord combinaties kunnen worden gemaakt, maar ook uitgebreide dialogen, afhankelijk van de behoeften van HR.

Een paar woorden over de architectuur van de oplossing.

De bot helpt ons

De architectuur van de oplossing is modulair. Deze omvat diensten die verantwoordelijk zijn voor verschillende taken, namelijk:
• De Skype-botservice op Azure ontvangt en verwerkt gebruikersverzoeken. Dit is een vrij eenvoudige service die als eerste een verzoek ontvangt en de initiĆ«le verwerking uitvoert.
• Admin-portaal - een service die een webinterface biedt voor de configuratie van zowel het portaal als de bot. De bot wendt zich altijd eerst tot het portaal, en het portaal besluit vervolgens wat er met het verzoek moet gebeuren.
• Autorisatieservice - biedt authenticatiemechanismen voor zowel de bot als het admin-portaal. De autorisatie vindt plaats volgens het Oauth2-protocol. Bij een positieve autorisatie voert de service de autorisatie uit in het bedrijfsnetwerk op basis van geldige gebruikersgegevens, zodat het systeem fouten kan controleren die verband houden met desynchronisatie in de gegevens.
• AI-module voor tekstanalyse, geschreven in Python en gebruikt het ParlAI-framework voor de daadwerkelijke tekstherkenning. Dit is een neuraal netwerk, althans in de huidige implementatie. We gebruiken het tfDiff-algoritme om vragen te begrijpen. De module biedt een API voor communicatie en training.

Tot slot wil ik zeggen dat dit onze eerste ervaring is met het creëren van een chatbot, en we hebben geprobeerd om het systeem zo eenvoudig mogelijk te maken, maar toch functioneel, met minimale inspanning. Ik denk dat we een best interessant product hebben gecreëerd. Met ons eigen trainingssysteem, foutlogboek, meldingensystemen, kan het ook met elke andere messenger worden geïntegreerd.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster