De bot zal ons helpen

De bot zal ons helpen

Een jaar geleden vroeg onze geliefde HR-afdeling ons om een ​​chatbot te schrijven die zou helpen bij de aanpassing van nieuwkomers in het bedrijf.

Laten we een voorbehoud maken dat we niet onze eigen producten ontwikkelen, maar dat we klanten een volledig scala aan ontwikkelingsdiensten bieden. Het verhaal gaat over ons interne project, waarbij de klant geen derde partij is, maar onze eigen HR. En de belangrijkste taak, gezien de beperkte beschikbaarheid van mensen, middelen en tijd, is om het project op tijd af te ronden en het product vrij te geven.

Laten we eerst de problemen beschrijven die moesten worden opgelost.

Ontwikkelaars zijn meestal introverte mensen en houden niet van praten; het is veel gemakkelijker om uw vraag in een e-mailchat te schrijven. Met een bot hoef je niet na te denken over wie je moet vragen, wie je moet bellen, waar je heen moet en in het algemeen waar je informatie moet zoeken en of deze relevant is.

Het tweede probleem is informatie: er is veel van, het staat in verschillende bronnen, het is niet altijd beschikbaar en moet voortdurend worden aangevuld en bijgewerkt.

Het bedrijf heeft bijna 500 medewerkers, ze zijn gevestigd in verschillende kantoren, tijdzones, steden in Rusland en zelfs in het buitenland. Er zijn meestal veel vragen, dus een andere taak is het verminderen van de last voor HR-personeel die verband houdt met de meest gestelde vragen door medewerkers.

Het was ook nodig om de processen te automatiseren van: nieuwkomers die bij het bedrijf kwamen, het sturen van berichten naar managers en mentoren van nieuwkomers, het sturen van automatische herinneringen over cursussen en tests die een nieuwkomer moet halen voor een succesvolle aanpassing.

Technische vereisten werden gevormd op basis van zakelijke vereisten.

De bot moet werken op basis van Skype (historisch gezien gebruiken ze dit in het bedrijf), dus werd gekozen voor de dienst op Azura.

Om de toegang daartoe te beperken, zijn we het autorisatiemechanisme via Skype gaan gebruiken.
De ParlAI-bibliotheek werd gebruikt voor tekstherkenning

Er is ook een administratief webportaal vereist voor configuratie, training, foutopsporing, het opzetten van mailings en andere taken.

De bot zal ons helpen

Tijdens het werken aan het project kwamen we een aantal problemen en moeilijkheden tegen.

Er waren bijvoorbeeld technische problemen met een Azure-account. Microsoft wilde ons abonnement niet activeren vanwege technische problemen binnen hun service. Bijna twee maanden lang konden we er niets aan doen; Microsoft-ondersteuning stak uiteindelijk de hand uit en stuurde ons naar partners, die alles met succes instelden en ons een account gaven.

De moeilijkste fase was de start van het project, waarin je moet kiezen wat we gaan gebruiken, wat de architectuur zal zijn, hoe en waar de gegevens moeten worden opgeslagen en hoe de componenten en modules van het systeem met elkaar zullen communiceren.

In ons geval werden de in wezen gewone problemen bij het starten van een project nog ingewikkelder door de personeelsbezetting. De specifieke kenmerken van ons bedrijf zijn zodanig dat, in tegenstelling tot commerciële projecten, aan interne projecten vaak wordt gewerkt door ontwikkelaars die niet over voldoende kennis beschikken op de vereiste gebieden - ze belandden eenvoudigweg, door de wil van het lot, op de bank in afwachting van de volgende groot cool commercieel project. Het is logisch dat het in zo'n situatie ook heel moeilijk was met de motivatie. De productiviteit daalt laag, het team is vaak inactief en als gevolg daarvan moet je de persoon overtuigen (motiveren) of veranderen. Wanneer u van ontwikkelaar verandert, moet u training geven, kennis overdragen en het project in wezen opnieuw starten. Elke nieuwe ontwikkelaar zag de architectuur op zijn eigen manier en schold de vorige uit vanwege de beslissingen die ze namen en de code van anderen. Het herschrijven begon helemaal opnieuw.

Dit duurde ongeveer zes maanden. We waren gewoon tijd aan het markeren, de code aan het herstructureren en niets nieuws aan het schrijven.

Ook is er bij interne projecten in de regel bijna geen documentatie en was het moeilijk te begrijpen wat er op elk moment moest gebeuren en wat de huidige prioriteiten zijn. Het was noodzakelijk om een ​​permanent team samen te stellen, processen op te zetten en de planning en evaluatie uit te voeren gedurende minimaal drie maanden. Maar hoe doe je dat als het project niet commercieel is, wat betekent dat je een minimum aan manuren moet investeren, en tegelijkertijd het resultaat niet slechter moet krijgen dan bij een externe klant?

We hebben een groep mensen geïdentificeerd die hebben deelgenomen aan de ontwikkeling van het project, er bekend mee zijn en eraan willen werken. We hebben een planning opgesteld voor de inzet van mensen op projecten. Wij beoordeelden en coördineerden de werkzaamheden en pasten deze werkzaamheden in de ‘gaten’ tussen de hoofdprojecten. Na 4 maanden ontvingen wij een werkend prototype van de applicatie.

Laten we nu meer in detail praten over de functionaliteit, architectuur en technische oplossingen van de bot.

Een van de belangrijkste vereisten van HR was het herkennen van de door de gebruiker geschreven tekst om de vraag correct te beantwoorden. Je kunt hem schrijven: ik wil op vakantie, ik wil op vakantie of wil graag op vakantie, en hij zal het begrijpen en dienovereenkomstig reageren. Of plotseling gaat de stoel van een medewerker kapot en wil hij schrijven ‘de stoel is kapot’ of ‘Mijn stoel is gebarsten’ of ‘De rugleuning van de stoel is eraf gevallen’; met de juiste training zal de bot dergelijke verzoeken herkennen. De kwaliteit van tekstherkenning zelf hangt af van de training van de bot, waarover we later zullen praten.

De volgende vereiste en onderdeel van de functionaliteit is het dialoogsysteem van de bot. Er is een systeem ontwikkeld waarin de bot een dialoog kan voeren en de context van het huidige vraagstuk kan begrijpen. Naar aanleiding van uw vraag kan hij eventuele verhelderende vragen stellen en het gesprek voortzetten, als wij de bot hiervoor hebben getraind. Skype ondersteunt eenvoudige menuopties om gebruikers te informeren over opties voor het voortzetten van gesprekken. En als we een dialoog voerden, maar plotseling besloten een vraag te stellen die buiten het onderwerp viel, zal de bot dit ook begrijpen.

De bot maakt het mogelijk om op basis van zijn persoonlijke gegevens verschillende artefacten naar de gebruiker te sturen. Op zijn locatie bijvoorbeeld. Stel dat als iemand een toilet wil vinden, hij een kantoorplattegrond te zien krijgt die hem naar het toilet leidt. En de kaart wordt geselecteerd afhankelijk van in welk bedrijfskantoor de werknemer zich bevindt.

Een van de belangrijkste taken is het beschermen van de persoonlijke gegevens van gebruikers. We kunnen niet toestaan ​​dat iedereen toegang heeft tot de gevoelige gegevens die onze bot beheert. De noodzaak van autorisatie voor zo’n bot is daar een integraal onderdeel van. De bot vraagt ​​de gebruiker om zich te authenticeren voordat hij een dialoog met hem kan voeren. Dit gebeurt de eerste keer dat een medewerker contact opneemt met de bot. De autorisatie zelf leidt de gebruiker door naar de juiste pagina, waar de gebruiker een token ontvangt, die hij vervolgens in een Skype-bericht invoegt. Als de autorisatie succesvol is, kunt u beginnen met communiceren met de bot.

De bot zal ons helpen

Autorisatie vindt plaats via Skype - portal-autorisatieservice, bedrijfsnetwerk en LDAP. De autorisatie is dus afhankelijk van de huidige gebruikersgegevens op het bedrijfsnetwerk.

Tijdens het ontwikkelingsproces van de bot realiseerden we ons dat we een soort systeem nodig hadden dat in de portalfunctionaliteit was ingebouwd en waarmee HR de bot snel kon debuggen. We hebben een portaalpagina toegevoegd waar HR fouten kan zien die door gebruikers zijn geregistreerd bij het werken met de bot en deze kan oplossen door middel van omscholing of deze aan ontwikkelaars kan overlaten.

De mogelijkheid om een ​​bot rechtstreeks op de portal te trainen was vanaf het begin niet inbegrepen. Tijdens het ontwikkelingsproces realiseerden we ons dat het trainen van de bot de meest voorkomende taak is die medewerkers van de HR-afdeling zullen uitvoeren als ze ermee werken, en het sturen van tekstbestanden naar ontwikkelaars voor aanvullende training van de bot is volkomen onaanvaardbaar. Dit kost te veel tijd en veroorzaakt te veel fouten en problemen.

De bot zal ons helpen

We hebben een gebruikersinterface op de portal geschreven voor gebruiksvriendelijke training van de bot. Hiermee kan HR de huidige training van de bot zien, deze verder trainen en aanpassingen maken aan de huidige training. Training wordt weergegeven door een boomstructuur waarin knooppunten, dat wil zeggen takken, een voortzetting zijn van de dialoog met de bot. U kunt eenvoudige vragen en antwoorden creëren, of u kunt stevige dialogen creëren, het hangt allemaal af van HR en hun behoeften.

Een paar woorden over de oplossingsarchitectuur.

De bot zal ons helpen

De oplossingsarchitectuur is modulair. Het omvat diensten die verantwoordelijk zijn voor verschillende taken, namelijk:
• Skype-botservice op Azure: accepteert en verwerkt gebruikersverzoeken. Dit is een vrij eenvoudige service die als eerste een verzoek ontvangt en de eerste verwerking ervan uitvoert.
• Beheerportaal - een dienst die een webinterface biedt voor het opzetten van het portaal en voor de bot zelf. De bot neemt altijd eerst contact op met de portal en de portal beslist wat er vervolgens met het verzoek wordt gedaan.
• Autorisatieservice - biedt authenticatiemechanismen voor de bot en voor het beheerportaal. Autorisatie vindt plaats via het Oauth2-protocol. Met positieve autorisatie voert de service autorisatie uit in het bedrijfsnetwerk op basis van geldige gebruikersgegevens, zodat het systeem fouten kan controleren die verband houden met niet-gesynchroniseerde gegevens.
• AI Tekstherkenningsmodule, geschreven in Python en gebruikt het ParlAI-framework voor tekstherkenning zelf. Dit is een neuraal netwerk, althans in de huidige implementatie. We gebruiken het tfDiff-algoritme om de vragen te begrijpen. De module biedt een API om ermee te communiceren en te leren.

Tot slot wil ik zeggen dat dit onze eerste ervaring is met het maken van een chatbot, en we hebben geprobeerd het systeem zo eenvoudig mogelijk te maken, maar tegelijkertijd functioneel, met minimale arbeidskosten. Ik denk dat we een heel interessant product hebben. Met een eigen trainingssysteem, foutregistratie en het verzenden van meldingen kan het ook met elke andere messenger worden geïntegreerd.

Bron: www.habr.com

Voeg een reactie