Bot akan membantu kita

Bot akan membantu kita

Setahun yang lalu, departemen SDM tercinta meminta kami untuk menulis bot obrolan yang akan membantu adaptasi pendatang baru di perusahaan.

Mari kita membuat reservasi bahwa kami tidak mengembangkan produk kami sendiri, tetapi kami menyediakan layanan pengembangan lengkap kepada klien. Ceritanya tentang proyek internal kami, yang pelanggannya bukan perusahaan pihak ketiga, melainkan SDM kami sendiri. Dan tugas utamanya, mengingat terbatasnya ketersediaan orang, sumber daya, dan waktu, adalah menyelesaikan proyek tepat waktu dan merilis produk.

Pertama, mari kita uraikan masalah yang harus dipecahkan.

Pengembang sebagian besar adalah orang-orang yang introvert dan tidak suka berbicara; lebih mudah untuk menulis pertanyaan Anda dalam obrolan email. Dengan bot, Anda tidak perlu memikirkan siapa yang harus ditanyakan, siapa yang harus dihubungi, ke mana harus pergi, dan secara umum, ke mana mencari informasi dan apakah informasi tersebut relevan.

Masalah kedua adalah informasi - jumlahnya banyak, tersedia di berbagai sumber, tidak selalu tersedia dan memerlukan penambahan dan pembaruan terus-menerus.

Perusahaan ini memiliki hampir 500 karyawan, mereka berlokasi di kantor yang berbeda, zona waktu, kota di Rusia bahkan di luar negeri, biasanya banyak pertanyaan, jadi tugas lainnya adalah mengurangi beban personel HR terkait dengan pertanyaan yang paling sering diajukan. oleh karyawan.

Hal ini juga diperlukan untuk mengotomatisasi proses: pendatang baru bergabung dengan perusahaan, mengirim pesan ke manajer dan mentor pendatang baru, mengirimkan pengingat otomatis tentang kursus dan ujian yang harus dilalui pendatang baru agar adaptasi berhasil.

Persyaratan teknis dibentuk berdasarkan kebutuhan bisnis.

Bot harus bekerja berdasarkan Skype (secara historis, mereka menggunakannya di perusahaan), jadi layanan di Azura dipilih.

Untuk membatasi aksesnya, kami mulai menggunakan mekanisme otorisasi melalui Skype.
Perpustakaan ParlAI digunakan untuk pengenalan teks

Portal web administratif juga diperlukan untuk konfigurasi, pelatihan, debugging, pengaturan surat dan tugas lainnya.

Bot akan membantu kita

Saat mengerjakan proyek ini, kami menemui sejumlah masalah dan kesulitan.

Misalnya, ada masalah teknis dengan akun Azure. Microsoft tidak ingin mengaktifkan langganan kami karena beberapa kesulitan teknis dalam layanan mereka. Selama hampir dua bulan kami tidak bisa berbuat apa-apa; dukungan Microsoft akhirnya angkat tangan dan mengirim kami ke mitra, yang berhasil mengatur semuanya dan memberi kami akun.

Tahap yang paling sulit adalah awal proyek, ketika kita harus memilih apa yang akan kita gunakan, apa arsitekturnya, bagaimana dan di mana menyimpan data, dan bagaimana komponen dan modul sistem akan berinteraksi satu sama lain.

Dalam kasus kami, masalah yang pada dasarnya biasa terjadi dalam memulai proyek apa pun menjadi semakin rumit karena penempatan staf. Kekhususan bisnis kami sedemikian rupa sehingga, tidak seperti proyek komersial, proyek internal sering kali dikerjakan oleh pengembang yang tidak memiliki pengetahuan yang cukup di bidang yang diperlukan - mereka, atas kehendak takdir, berakhir di bangku cadangan menunggu yang berikutnya. proyek komersial besar yang keren. Masuk akal bahwa segala sesuatunya juga menjadi sangat sulit dengan motivasi dalam situasi seperti itu. Produktivitas turun drastis, tim sering kali menganggur, dan akibatnya Anda harus membujuk (memotivasi) atau mengubah orang. Saat berganti pengembang, Anda perlu melakukan pelatihan, mentransfer pengetahuan, dan pada dasarnya memulai proyek lagi. Setiap pengembang baru melihat arsitektur dengan caranya sendiri dan memarahi pengembang sebelumnya atas keputusan yang mereka buat dan kode orang lain. Penulisan ulang dimulai dari awal.

Hal ini berlangsung sekitar enam bulan. Kami hanya menandai waktu, memfaktorkan ulang kode, dan tidak menulis sesuatu yang baru.

Selain itu, pada proyek internal, biasanya, hampir tidak ada dokumentasi, dan sulit untuk memahami apa yang perlu dilakukan pada setiap titik waktu, dan apa yang menjadi prioritas saat ini. Perlu dibentuk tim permanen, menetapkan proses, dan melakukan perencanaan dan evaluasi setidaknya selama tiga bulan. Tetapi bagaimana melakukan ini ketika proyek tersebut tidak komersial, yang berarti Anda perlu menginvestasikan minimal jam kerja, dan pada saat yang sama mendapatkan hasil yang tidak lebih buruk daripada pelanggan eksternal?

Kami telah mengidentifikasi kumpulan sumber daya yang berpartisipasi dalam pengembangan proyek, mengenalnya dan ingin mengerjakannya. Kami menyusun jadwal untuk mempekerjakan orang dalam proyek. Kami menilai dan mengoordinasikan pekerjaan tersebut, dan memasukkan pekerjaan-pekerjaan ini ke dalam β€œlubang” di antara proyek-proyek utama. Setelah 4 bulan kami menerima prototipe aplikasi yang berfungsi.

Sekarang mari kita bicara lebih detail tentang fungsionalitas bot, arsitektur, dan solusi teknis.

Salah satu persyaratan utama HR adalah mengenali teks yang ditulis oleh pengguna untuk menjawab pertanyaan dengan benar. Anda dapat menulis kepadanya - Saya ingin pergi berlibur, saya ingin pergi berlibur atau ingin pergi berlibur, dan dia akan memahami dan merespons dengan tepat. Atau tiba-tiba kursi seorang karyawan patah dan dia ingin menulis β€œkursinya patah” atau β€œKursi saya retak” atau β€œBagian belakang kursi terjatuh”; dengan pelatihan yang tepat, bot akan mengenali permintaan tersebut. Kualitas pengenalan teks itu sendiri tergantung pada pelatihan bot, yang akan kita bahas nanti.

Persyaratan berikutnya dan bagian dari fungsinya adalah sistem dialog bot. Sebuah sistem dikembangkan di mana bot dapat melakukan dialog dan memahami konteks masalah saat ini. Menanggapi pertanyaan Anda, dia mungkin mengajukan pertanyaan klarifikasi dan melanjutkan percakapan jika kami telah melatih bot untuk melakukan hal ini. Skype mendukung opsi menu sederhana untuk memberi tahu pengguna tentang opsi untuk melanjutkan percakapan. Selain itu, jika kita sedang berdialog, tetapi tiba-tiba memutuskan untuk mengajukan pertanyaan di luar topik, bot juga akan memahami hal ini.

Bot memungkinkan pengiriman berbagai artefak ke pengguna berdasarkan data pribadinya. Misalnya saja di lokasinya. Misalkan jika seseorang ingin mencari toilet, maka dia akan diperlihatkan peta kantor yang mengarahkannya ke toilet. Dan kartu tersebut akan dipilih tergantung di kantor perusahaan mana karyawan tersebut berada.

Salah satu tugas terpenting adalah melindungi informasi pribadi pengguna. Kami tidak dapat mengizinkan setiap orang memiliki akses ke data sensitif yang dioperasikan bot kami. Kebutuhan akan otorisasi untuk bot semacam itu merupakan bagian integral darinya. Bot meminta pengguna untuk mengautentikasi sebelum dia dapat melakukan dialog apa pun dengannya. Ini terjadi saat pertama kali seorang karyawan menghubungi bot. Otorisasi itu sendiri mengarahkan pengguna ke halaman yang sesuai, tempat pengguna menerima token, yang kemudian dia masukkan ke dalam pesan Skype. Jika otorisasi berhasil, Anda dapat mulai berkomunikasi dengan bot.

Bot akan membantu kita

Otorisasi dilakukan melalui Skype - layanan otorisasi portal, jaringan perusahaan, dan LDAP. Jadi, otorisasi bergantung pada data pengguna saat ini di jaringan perusahaan.

Dalam proses pengembangan bot, kami menyadari bahwa kami memerlukan semacam sistem yang dibangun ke dalam fungsionalitas portal yang dapat membantu HR men-debug bot dengan cepat. Kami telah menambahkan halaman portal di mana HR dapat melihat kesalahan yang dicatat oleh pengguna saat bekerja dengan bot dan menyelesaikannya menggunakan pelatihan ulang atau menyerahkannya kepada pengembang.

Kemampuan untuk melatih bot langsung di portal tidak disertakan sejak awal. Selama proses pengembangan, kami menyadari bahwa melatih bot adalah tugas paling umum yang dilakukan karyawan departemen SDM saat bekerja dengannya, dan mengirimkan file teks ke pengembang untuk pelatihan bot tambahan sama sekali tidak dapat diterima. Hal ini memakan terlalu banyak waktu dan menimbulkan terlalu banyak kesalahan dan masalah.

Bot akan membantu kita

Kami menulis UI di portal untuk pelatihan bot yang ramah pengguna. Hal ini memungkinkan HR untuk melihat pelatihan bot saat ini, melatihnya lebih lanjut, dan melakukan penyesuaian pada pelatihan saat ini. Pelatihan diwakili oleh struktur pohon di mana node, yaitu cabang, merupakan kelanjutan dari dialog dengan bot. Anda bisa membuat pertanyaan dan jawaban sederhana, atau Anda bisa membuat dialog yang berbobot, semua tergantung HR dan kebutuhannya.

Beberapa kata tentang arsitektur solusi.

Bot akan membantu kita

Arsitektur solusinya bersifat modular. Ini mencakup layanan yang bertanggung jawab atas berbagai tugas, yaitu:
β€’ Layanan bot Skype di Azure - menerima dan memproses permintaan pengguna. Ini adalah layanan yang cukup sederhana yang menerima permintaan terlebih dahulu dan melakukan pemrosesan awalnya.
β€’ Portal Admin - layanan yang menyediakan antarmuka web untuk menyiapkan portal dan untuk bot itu sendiri. Bot selalu menghubungi portal terlebih dahulu, dan portal memutuskan apa yang harus dilakukan selanjutnya dengan permintaan tersebut.
β€’ Layanan otorisasi - menyediakan mekanisme otentikasi untuk bot dan portal admin. Otorisasi terjadi melalui protokol Oauth2. Dengan otorisasi positif, layanan melakukan otorisasi di jaringan perusahaan sesuai dengan data pengguna yang valid, sehingga sistem dapat mengontrol kesalahan yang terkait dengan data yang tidak sinkron.
β€’ Modul pengenalan teks AI, ditulis dengan Python dan menggunakan kerangka ParlAI untuk pengenalan teks itu sendiri. Ini adalah jaringan saraf, setidaknya dalam implementasinya saat ini. Kami menggunakan algoritma tfDiff untuk memahami pertanyaan. Modul ini menyediakan API untuk berkomunikasi dengannya dan belajar.

Sebagai kesimpulan, saya ingin mengatakan bahwa ini adalah pengalaman pertama kami membuat bot obrolan, dan kami mencoba membuat sistem sesederhana mungkin, tetapi pada saat yang sama berfungsi, dengan biaya tenaga kerja minimal. Saya pikir kami memiliki produk yang sangat menarik. Dengan sistem pelatihannya sendiri, pencatatan kesalahan, pengiriman notifikasi, juga dapat diintegrasikan dengan messenger lain.

Sumber: www.habr.com

Tambah komentar