Το bot θα μας βοηθήσει

Το bot θα μας βοηθήσει

Πριν από ένα χρόνο, το αγαπημένο μας τμήμα HR μας ζήτησε να γράψουμε ένα chat bot που θα βοηθούσε στην προσαρμογή των νεοεισερχόμενων στην εταιρεία.

Ας κάνουμε κράτηση ότι δεν αναπτύσσουμε τα δικά μας προϊόντα, αλλά παρέχουμε στους πελάτες ένα πλήρες φάσμα υπηρεσιών ανάπτυξης. Η ιστορία θα αφορά το εσωτερικό μας έργο, για το οποίο ο πελάτης δεν είναι μια τρίτη εταιρεία, αλλά το δικό μας ανθρώπινο δυναμικό. Και το κύριο καθήκον, δεδομένης της περιορισμένης διαθεσιμότητας ανθρώπων, πόρων και χρόνου, είναι να ολοκληρωθεί το έργο εγκαίρως και να κυκλοφορήσει το προϊόν.

Αρχικά, ας περιγράψουμε τα προβλήματα που έπρεπε να λυθούν.

Οι προγραμματιστές είναι ως επί το πλείστον εσωστρεφή άτομα και δεν τους αρέσει να μιλάνε· είναι πολύ πιο εύκολο να γράψετε την ερώτησή σας σε μια συνομιλία μέσω email. Με ένα bot, δεν χρειάζεται να σκέφτεστε ποιον να ρωτήσετε, ποιον να καλέσετε, πού να πάτε και γενικά πού να αναζητήσετε πληροφορίες και αν είναι σχετικές.

Το δεύτερο πρόβλημα είναι οι πληροφορίες - υπάρχουν πολλές, βρίσκονται σε διαφορετικές πηγές, δεν είναι πάντα διαθέσιμες και χρειάζονται συνεχή προσθήκη και ενημέρωση.

Η εταιρεία έχει σχεδόν 500 υπαλλήλους, βρίσκονται σε διαφορετικά γραφεία, ζώνες ώρας, πόλεις της Ρωσίας και ακόμη και στο εξωτερικό, συνήθως υπάρχουν πολλές ερωτήσεις, επομένως ένα άλλο καθήκον είναι να μειώσετε το βάρος του προσωπικού ανθρώπινου δυναμικού που σχετίζεται με τις πιο συχνές ερωτήσεις από υπαλλήλους.

Ήταν επίσης απαραίτητο να αυτοματοποιηθούν οι διαδικασίες: νεοεισερχόμενοι στην εταιρεία, αποστολή μηνυμάτων σε διευθυντές και μέντορες νεοεισερχόμενων, αποστολή αυτόματων υπενθυμίσεων σχετικά με μαθήματα και τεστ που πρέπει να περάσει ένας νεοφερμένος για επιτυχή προσαρμογή.

Οι τεχνικές απαιτήσεις διαμορφώθηκαν με βάση τις επιχειρηματικές απαιτήσεις.

Το bot πρέπει να λειτουργεί με βάση το Skype (ιστορικά, το χρησιμοποιούν στην εταιρεία), έτσι επιλέχθηκε η υπηρεσία στο Azura.

Για να περιορίσουμε την πρόσβαση σε αυτό, αρχίσαμε να χρησιμοποιούμε τον μηχανισμό εξουσιοδότησης μέσω Skype.
Η βιβλιοθήκη ParlAI χρησιμοποιήθηκε για την αναγνώριση κειμένου

Απαιτείται επίσης μια διαδικτυακή πύλη διαχείρισης για τη διαμόρφωση, την εκπαίδευση, τον εντοπισμό σφαλμάτων, τη ρύθμιση των αλληλογραφιών και άλλες εργασίες.

Το bot θα μας βοηθήσει

Ενώ εργαζόμασταν στο έργο, αντιμετωπίσαμε μια σειρά από προβλήματα και δυσκολίες.

Για παράδειγμα, υπήρχαν τεχνικά προβλήματα με έναν λογαριασμό Azure. Η Microsoft δεν ήθελε να ενεργοποιήσει τη συνδρομή μας λόγω ορισμένων τεχνικών δυσκολιών στην υπηρεσία της. Για σχεδόν δύο μήνες δεν μπορούσαμε να κάνουμε τίποτα γι' αυτό· η υποστήριξη της Microsoft τελικά σήκωσε τα χέρια και μας έστειλε σε συνεργάτες, οι οποίοι έφτιαξαν με επιτυχία τα πάντα και μας έδωσαν έναν λογαριασμό.

Το πιο δύσκολο στάδιο ήταν η έναρξη του έργου, όταν πρέπει να επιλέξετε τι θα χρησιμοποιήσουμε, ποια θα είναι η αρχιτεκτονική, πώς και πού θα αποθηκεύονται δεδομένα και πώς τα στοιχεία και οι μονάδες του συστήματος θα αλληλεπιδρούν μεταξύ τους.

Στην περίπτωσή μας, τα ουσιαστικά συνηθισμένα προβλήματα έναρξης οποιουδήποτε έργου περιπλέκονταν περαιτέρω από τη στελέχωση. Οι ιδιαιτερότητες της επιχείρησής μας είναι τέτοιες που, σε αντίθεση με τα εμπορικά, τα εσωτερικά έργα εργάζονται συχνά από προγραμματιστές που δεν έχουν επαρκείς γνώσεις στους απαιτούμενους τομείς - απλώς, με τη θέληση της μοίρας, κατέληξαν στον πάγκο περιμένοντας το επόμενο μεγάλο κουλ εμπορικό έργο. Είναι λογικό ότι τα πράγματα ήταν και πολύ δύσκολα με κίνητρο σε μια τέτοια κατάσταση. Η παραγωγικότητα πέφτει χαμηλά, η ομάδα είναι συχνά αδρανής και ως αποτέλεσμα πρέπει να πείσετε (να παρακινήσετε) ή να αλλάξετε το άτομο. Όταν αλλάζετε προγραμματιστές, πρέπει να πραγματοποιήσετε εκπαίδευση, να μεταφέρετε γνώσεις και ουσιαστικά να ξεκινήσετε ξανά το έργο. Κάθε νέος προγραμματιστής έβλεπε την αρχιτεκτονική με τον δικό του τρόπο και επέπληξε τους προηγούμενους για τις αποφάσεις που έπαιρναν και τον κώδικα άλλων ανθρώπων. Η επανεγγραφή ξεκίνησε από την αρχή.

Αυτό συνεχίστηκε για περίπου έξι μήνες. Απλώς σημειώναμε την ώρα, ανακατασκευάζαμε τον κώδικα και δεν γράφαμε τίποτα νέο.

Επίσης, για τα εσωτερικά έργα, κατά κανόνα, δεν υπάρχει σχεδόν καμία τεκμηρίωση και ήταν δύσκολο να καταλάβουμε τι πρέπει να γίνει σε κάθε χρονική στιγμή και ποιες είναι οι τρέχουσες προτεραιότητες. Ήταν απαραίτητο να δημιουργηθεί μια μόνιμη ομάδα, να δημιουργηθούν διαδικασίες και να διεξαχθεί σχεδιασμός και αξιολόγηση για τουλάχιστον τρεις μήνες. Αλλά πώς να το κάνετε αυτό όταν το έργο δεν είναι εμπορικό, πράγμα που σημαίνει ότι πρέπει να επενδύσετε ελάχιστες ανθρωποώρες και ταυτόχρονα να έχετε το αποτέλεσμα όχι χειρότερο από ό,τι για έναν εξωτερικό πελάτη;

Έχουμε εντοπίσει μια ομάδα πόρων που συμμετείχαν στην ανάπτυξη του έργου, είναι εξοικειωμένοι με αυτό και θέλουν να εργαστούν σε αυτό. Καταρτίσαμε χρονοδιάγραμμα για την απασχόληση ατόμων σε έργα. Αξιολογήσαμε και συντονίσαμε τις εργασίες και χωρέσαμε αυτές τις εργασίες στις «τρύπες» μεταξύ των κύριων έργων. Μετά από 4 μήνες λάβαμε ένα λειτουργικό πρωτότυπο της εφαρμογής.

Τώρα ας μιλήσουμε λεπτομερέστερα για τη λειτουργικότητα, την αρχιτεκτονική και τις τεχνικές λύσεις του bot.

Μία από τις βασικές απαιτήσεις του HR ήταν να αναγνωρίζει το κείμενο που έγραψε ο χρήστης για να απαντήσει σωστά στην ερώτηση. Μπορείτε να του γράψετε - Θέλω να πάω διακοπές, θέλω να πάω διακοπές ή θα ήθελα να πάω διακοπές, και θα καταλάβει και θα απαντήσει ανάλογα. Ή ξαφνικά σπάει η καρέκλα ενός υπαλλήλου και θέλει να γράψει "η καρέκλα είναι σπασμένη" ή "Η καρέκλα μου είναι ραγισμένη" ή "Η πλάτη της καρέκλας έχει πέσει"· με την κατάλληλη εκπαίδευση, το bot θα αναγνωρίσει τέτοια αιτήματα. Η ίδια η ποιότητα της αναγνώρισης κειμένου εξαρτάται από την εκπαίδευση του bot, για την οποία θα μιλήσουμε αργότερα.

Η επόμενη απαίτηση και μέρος της λειτουργικότητας είναι το σύστημα διαλόγου του bot. Αναπτύχθηκε ένα σύστημα στο οποίο το bot μπορεί να διεξάγει διάλογο και να κατανοεί το πλαίσιο του τρέχοντος ζητήματος. Σε απάντηση στην ερώτησή σας, μπορεί να κάνει τυχόν διευκρινιστικές ερωτήσεις και να συνεχίσει τη συνομιλία εάν έχουμε εκπαιδεύσει το bot να το κάνει αυτό. Το Skype υποστηρίζει απλές επιλογές μενού για να προτρέπει τους χρήστες σχετικά με επιλογές για τη συνέχιση των συνομιλιών. Επίσης, αν κάναμε διάλογο, αλλά ξαφνικά αποφασίσαμε να κάνουμε μια ερώτηση εκτός θέματος, θα το καταλάβει και το bot.

Το bot δίνει τη δυνατότητα αποστολής διαφόρων τεχνουργημάτων στον χρήστη με βάση τα προσωπικά του δεδομένα. Για παράδειγμα, στην τοποθεσία του. Ας υποθέσουμε ότι εάν ένα άτομο ήθελε να βρει μια τουαλέτα, τότε θα του έδειχνε έναν χάρτη γραφείου που τον οδηγεί στην τουαλέτα. Και η κάρτα θα επιλεγεί ανάλογα με το γραφείο της εταιρείας στο οποίο βρίσκεται ο υπάλληλος.

Ένα από τα πιο σημαντικά καθήκοντα είναι η προστασία των προσωπικών πληροφοριών των χρηστών. Δεν μπορούμε να επιτρέψουμε σε κάθε άτομο να έχει πρόσβαση στα ευαίσθητα δεδομένα που λειτουργεί το bot μας. Η ανάγκη για εξουσιοδότηση για ένα τέτοιο bot είναι αναπόσπαστο μέρος του. Το bot ζητά από τον χρήστη να πραγματοποιήσει έλεγχο ταυτότητας πριν μπορέσει να πραγματοποιήσει οποιοδήποτε διάλογο μαζί του. Αυτό συμβαίνει την πρώτη φορά που ένας υπάλληλος επικοινωνεί με το bot. Η ίδια η εξουσιοδότηση ανακατευθύνει τον χρήστη στην κατάλληλη σελίδα, όπου ο χρήστης λαμβάνει ένα διακριτικό, το οποίο στη συνέχεια εισάγει σε ένα μήνυμα Skype. Εάν η εξουσιοδότηση είναι επιτυχής, μπορείτε να ξεκινήσετε την επικοινωνία με το bot.

Το bot θα μας βοηθήσει

Η εξουσιοδότηση πραγματοποιείται μέσω Skype - υπηρεσία εξουσιοδότησης πύλης, εταιρικό δίκτυο και LDAP. Έτσι, η εξουσιοδότηση εξαρτάται από τα τρέχοντα δεδομένα χρήστη στο εταιρικό δίκτυο.

Στη διαδικασία ανάπτυξης του bot, συνειδητοποιήσαμε ότι χρειαζόμασταν κάποιο είδος συστήματος ενσωματωμένο στη λειτουργικότητα της πύλης που θα μπορούσε να βοηθήσει το HR να εντοπίσει γρήγορα τα σφάλματα του bot. Προσθέσαμε μια σελίδα πύλης όπου το HR μπορεί να δει σφάλματα που καταγράφονται από τους χρήστες κατά την εργασία με το bot και να τα λύσει χρησιμοποιώντας επανεκπαίδευση ή να τα αφήσει στους προγραμματιστές.

Η δυνατότητα εκπαίδευσης ενός bot απευθείας στην πύλη δεν συμπεριλήφθηκε από την αρχή. Κατά τη διαδικασία ανάπτυξης, συνειδητοποιήσαμε ότι η εκπαίδευση του bot είναι η πιο συνηθισμένη εργασία που εκτελούν οι υπάλληλοι του τμήματος HR όταν εργάζονται με αυτό και η αποστολή αρχείων κειμένου σε προγραμματιστές για πρόσθετη εκπαίδευση του bot είναι εντελώς απαράδεκτη. Αυτό τρώει πάρα πολύ χρόνο και δημιουργεί πάρα πολλά σφάλματα και προβλήματα.

Το bot θα μας βοηθήσει

Γράψαμε ένα UI στην πύλη για φιλική προς το χρήστη εκπαίδευση του bot. Επιτρέπει στο HR να δει την τρέχουσα εκπαίδευση του bot, να το εκπαιδεύσει περαιτέρω και να κάνει προσαρμογές στην τρέχουσα εκπαίδευση. Η εκπαίδευση αντιπροσωπεύεται από μια δομή δέντρου στην οποία οι κόμβοι, δηλαδή οι κλάδοι, αποτελούν συνέχεια του διαλόγου με το bot. Μπορείτε να δημιουργήσετε απλές ερωτήσεις και απαντήσεις ή μπορείτε να δημιουργήσετε σημαντικούς διαλόγους, όλα εξαρτώνται από το HR και τις ανάγκες τους.

Λίγα λόγια για την αρχιτεκτονική λύση.

Το bot θα μας βοηθήσει

Η αρχιτεκτονική λύσης είναι αρθρωτή. Περιλαμβάνει υπηρεσίες υπεύθυνες για διάφορες εργασίες, και συγκεκριμένα:
• Υπηρεσία bot Skype στο Azure - δέχεται και επεξεργάζεται αιτήματα χρηστών. Πρόκειται για μια αρκετά απλή υπηρεσία που είναι η πρώτη που λαμβάνει ένα αίτημα και εκτελεί την αρχική του επεξεργασία.
• Πύλη διαχειριστή - μια υπηρεσία που παρέχει μια διεπαφή ιστού για τη ρύθμιση της πύλης και για το ίδιο το bot. Το bot πάντα επικοινωνεί πρώτα με την πύλη και η πύλη αποφασίζει τι θα κάνει στη συνέχεια με το αίτημα.
• Υπηρεσία εξουσιοδότησης - παρέχει μηχανισμούς ελέγχου ταυτότητας για το bot και την πύλη διαχειριστή. Η εξουσιοδότηση πραγματοποιείται μέσω του πρωτοκόλλου Oauth2. Με θετική εξουσιοδότηση, η υπηρεσία εκτελεί εξουσιοδότηση στο εταιρικό δίκτυο σύμφωνα με έγκυρα δεδομένα χρήστη, έτσι ώστε το σύστημα να μπορεί να ελέγχει σφάλματα που σχετίζονται με δεδομένα εκτός συγχρονισμού.
• Μονάδα αναγνώρισης κειμένου AI, γραμμένη σε Python και χρησιμοποιώντας το πλαίσιο ParlAI για την ίδια την αναγνώριση κειμένου. Αυτό είναι ένα νευρωνικό δίκτυο, τουλάχιστον στην τρέχουσα εφαρμογή του. Χρησιμοποιούμε τον αλγόριθμο tfDiff για να κατανοήσουμε τις ερωτήσεις. Η ενότητα παρέχει ένα API για επικοινωνία μαζί της και εκμάθηση.

Εν κατακλείδι, θέλω να πω ότι αυτή είναι η πρώτη μας εμπειρία στη δημιουργία ενός chat bot και προσπαθήσαμε να κάνουμε το σύστημα όσο το δυνατόν πιο απλό, αλλά ταυτόχρονα λειτουργικό, με ελάχιστο κόστος εργασίας σε αυτό. Νομίζω ότι έχουμε ένα πολύ ενδιαφέρον προϊόν. Με το δικό του σύστημα εκπαίδευσης, καταγραφή σφαλμάτων, αποστολή ειδοποιήσεων, μπορεί επίσης να ενσωματωθεί με οποιοδήποτε άλλο messenger.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο