Bot bize yardımcı olacak

Bot bize yardımcı olacak

Bir yıl önce sevgili İK departmanımız bizden şirkete yeni gelenlerin adaptasyonuna yardımcı olacak bir chat botu yazmamızı istedi.

Kendi ürünlerimizi geliştirmediğimiz, ancak müşterilerimize tam kapsamlı geliştirme hizmetleri sağladığımız için rezervasyon yaptıralım. Hikaye, müşterinin üçüncü taraf bir şirket değil, kendi İK'mız olduğu dahili projemizle ilgili olacak. İnsanların, kaynakların ve zamanın sınırlı olduğu göz önüne alındığında asıl görev, projeyi zamanında tamamlamak ve ürünü piyasaya sürmektir.

Öncelikle çözülmesi gereken sorunları tanımlayalım.

Geliştiriciler çoğunlukla içe dönük insanlardır ve konuşmayı sevmezler; sorunuzu bir e-posta sohbetine yazmak çok daha kolaydır. Bir botla kime soracağınızı, kimi arayacağınızı, nereye gideceğinizi ve genel olarak bilgiyi nerede arayacağınızı ve bilginin alakalı olup olmadığını düşünmenize gerek yoktur.

İkinci sorun bilgidir; çok fazla bilgi var, farklı kaynaklarda bulunuyor, her zaman mevcut değil ve sürekli olarak eklenmesi ve güncellenmesi gerekiyor.

Şirketin yaklaşık 500 çalışanı var, Rusya'nın farklı ofislerinde, saat dilimlerinde, şehirlerinde ve hatta yurtdışında bulunuyorlar, genellikle çok fazla soru var, bu nedenle başka bir görev de en sık sorulan sorularla ilgili İK personelinin üzerindeki yükü azaltmak. çalışanlar tarafından.

Aynı zamanda şu süreçlerin de otomatikleştirilmesi gerekiyordu: şirkete yeni katılanlar, yeni gelenlerin yöneticilerine ve mentorlarına mesaj göndermek, yeni gelenlerin başarılı bir adaptasyon için geçmesi gereken kurslar ve testler hakkında otomatik hatırlatmalar göndermek.

Teknik gereksinimler iş gereksinimlerine göre oluşturuldu.

Botun Skype temelinde çalışması gerekiyor (tarihsel olarak bunu şirkette kullanıyorlardı), bu nedenle Azura'daki hizmet seçildi.

Erişimi kısıtlamak için Skype üzerinden yetkilendirme mekanizmasını kullanmaya başladık.
Metin tanıma için ParlAI kütüphanesi kullanıldı

Yapılandırma, eğitim, hata ayıklama, postaları ayarlama ve diğer görevler için de bir yönetim web portalı gereklidir.

Bot bize yardımcı olacak

Proje üzerinde çalışırken bir takım sorun ve zorluklarla karşılaştık.

Örneğin bir Azure hesabında teknik sorunlar yaşandı. Microsoft, hizmetindeki bazı teknik aksaklıklar nedeniyle aboneliğimizi etkinleştirmek istemedi. Neredeyse iki ay boyunca bu konuda hiçbir şey yapamadık; sonunda Microsoft destek elini kaldırdı ve bizi ortaklara gönderdi, onlar da her şeyi başarıyla ayarlayıp bize bir hesap verdi.

En zor aşama, ne kullanacağımızı, mimarinin ne olacağını, verileri nasıl ve nerede saklayacağımızı ve sistem bileşenlerinin ve modüllerinin birbirleriyle nasıl etkileşime gireceğini seçmeniz gereken projenin başlangıcıydı.

Bizim durumumuzda, herhangi bir projeye başlamanın esasen sıradan sorunları, personel alımı nedeniyle daha da karmaşık hale geliyordu. İşimizin özellikleri öyle ki, ticari olanlardan farklı olarak, iç projeler genellikle gerekli alanlarda yeterli bilgiye sahip olmayan geliştiriciler tarafından üzerinde çalışılıyor - onlar sadece kaderin iradesiyle bir sonrakini beklemek için bankta kaldılar büyük harika ticari proje. Böyle bir durumda motivasyonla işlerin de çok zor olması mantıklı. Verimlilik düşer, ekip genellikle boşta kalır ve sonuç olarak kişiyi ikna etmeniz (motive etmeniz) veya değiştirmeniz gerekir. Geliştiricileri değiştirirken eğitim yapmanız, bilgi aktarmanız ve esasen projeye yeniden başlamanız gerekir. Her yeni geliştirici mimariyi kendi açısından gördü ve öncekileri aldıkları kararlar ve başkalarının kodları nedeniyle azarladı. Yeniden yazım sıfırdan başladı.

Bu yaklaşık altı ay devam etti. Sadece zamanı işaretliyorduk, kodu yeniden düzenliyorduk ve yeni bir şey yazmıyorduk.

Ayrıca iç projelerde kural olarak neredeyse hiç belge yoktu ve her noktada ne yapılması gerektiğini ve mevcut önceliklerin neler olduğunu anlamak zordu. En az üç ay boyunca kalıcı bir ekip oluşturmak, süreçler oluşturmak, planlama ve değerlendirme yapmak gerekiyordu. Ancak proje ticari olmadığında bunu nasıl yapabilirsiniz, bu da minimum çalışma saati yatırımı yapmanız ve aynı zamanda harici bir müşteriden daha kötü bir sonuç elde etmeniz gerektiği anlamına gelir?

Projenin geliştirilmesine katılan, projeye aşina olan ve üzerinde çalışmak isteyen bir kaynak havuzu belirledik. İnsanların projelerde istihdam edilmesiyle ilgili bir takvim hazırladık. Çalışmayı değerlendirip koordine ettik ve bu çalışmaları ana projeler arasındaki “boşluklara” yerleştirdik. 4 ay sonra uygulamanın çalışan bir prototipini aldık.

Şimdi botun işlevselliği, mimarisi ve teknik çözümleri hakkında daha detaylı konuşalım.

İK'nın temel gereksinimlerinden biri, soruyu doğru cevaplamak için kullanıcının yazdığı metni tanımaktı. Ona yazabilirsiniz - Tatile gitmek istiyorum, tatile gitmek istiyorum veya tatile gitmek istiyorum, o da anlayacak ve ona göre cevap verecektir. Veya bir çalışanın aniden sandalyesi kırılır ve "sandalyem kırıldı" veya "Sandalyem kırıldı" veya "Sandalyenin arkası düştü" yazmak ister; uygun eğitim ile bot bu tür istekleri tanıyacaktır. Metin tanımanın kalitesi doğal olarak daha sonra konuşacağımız botun eğitimine bağlıdır.

Bir sonraki gereksinim ve işlevselliğin bir kısmı botun diyalog sistemidir. Botun diyalog kurabileceği ve mevcut konunun içeriğini anlayabileceği bir sistem geliştirildi. Sorunuza yanıt olarak, eğer botu bunu yapacak şekilde eğitmişsek, açıklayıcı sorular sorabilir ve konuşmaya devam edebilir. Skype, kullanıcılara devam eden konuşmalara ilişkin seçenekler hakkında bilgi vermek için basit menü seçeneklerini destekler. Ayrıca, eğer diyalog halindeyken aniden konu dışı bir soru sormaya karar verirsek, bot da bunu anlayacaktır.

Bot, kullanıcıya kişisel verilerine göre çeşitli eserler göndermeyi mümkün kılar. Örneğin, bulunduğu yerde. Bir kişinin tuvalet bulmak istediğini varsayalım, o zaman kendisine tuvalete giden bir ofis haritası gösterilecektir. Kart, çalışanın hangi şirket ofisinde bulunduğuna bağlı olarak seçilecektir.

En önemli görevlerden biri kullanıcıların kişisel bilgilerinin korunmasıdır. Botumuzun işlettiği hassas verilere herkesin erişmesine izin veremeyiz. Böyle bir bot için yetkilendirme ihtiyacı bunun ayrılmaz bir parçasıdır. Bot, kullanıcıdan kendisiyle herhangi bir diyalog kurmadan önce kimlik doğrulamasını ister. Bu, bir çalışanın botla ilk iletişim kurduğunda gerçekleşir. Yetkilendirmenin kendisi kullanıcıyı uygun sayfaya yönlendirir; burada kullanıcı bir belirteç alır ve bunu bir Skype mesajına ekler. Yetkilendirme başarılı olursa botla iletişim kurmaya başlayabilirsiniz.

Bot bize yardımcı olacak

Yetkilendirme, Skype - portal yetkilendirme hizmeti, kurumsal ağ ve LDAP aracılığıyla gerçekleştirilir. Bu nedenle yetkilendirme, kurumsal ağdaki mevcut kullanıcı verilerine bağlıdır.

Botu geliştirme sürecinde, İK'nın botta hızlı bir şekilde hata ayıklamasına yardımcı olabilecek, portal işlevselliğine yerleştirilmiş bir tür sisteme ihtiyacımız olduğunu fark ettik. İK'nın botla çalışırken kullanıcılar tarafından kaydedilen hataları görebileceği ve bunları yeniden eğitim kullanarak çözebileceği veya geliştiricilere bırakabileceği bir portal sayfası ekledik.

Bir botu doğrudan portal üzerinde eğitme yeteneği en başından beri dahil edilmemişti. Geliştirme süreci sırasında, İK departmanı çalışanlarının botla çalışırken gerçekleştireceği en yaygın görevin botu eğitmek olduğunu ve botun ek eğitimi için geliştiricilere metin dosyaları göndermenin kesinlikle kabul edilemez olduğunu fark ettik. Bu çok fazla zaman tüketir ve çok fazla hata ve soruna neden olur.

Bot bize yardımcı olacak

Botun kullanıcı dostu eğitimi için portala bir kullanıcı arayüzü yazdık. İK'nın botun mevcut eğitimini görmesine, daha fazla eğitmesine ve mevcut eğitimde ayarlamalar yapmasına olanak tanır. Eğitim, düğümlerin yani dalların botla diyaloğun devamı olduğu bir ağaç yapısıyla temsil edilir. Basit sorular ve cevaplar oluşturabileceğiniz gibi ağır diyaloglar da oluşturabilirsiniz; bunların hepsi İK'ya ve onların ihtiyaçlarına bağlıdır.

Çözüm mimarisi hakkında birkaç söz.

Bot bize yardımcı olacak

Çözüm mimarisi modülerdir. Çeşitli görevlerden sorumlu hizmetleri içerir:
• Azure'da Skype bot hizmeti - kullanıcı isteklerini kabul eder ve işler. Bu, bir isteği ilk alan ve ilk işlemini gerçekleştiren oldukça basit bir hizmettir.
• Yönetici portalı - portalın kurulumu ve botun kendisi için bir web arayüzü sağlayan bir hizmet. Bot her zaman önce portalla iletişime geçer ve portal, istekle ilgili bundan sonra ne yapılacağına karar verir.
• Yetkilendirme hizmeti - bot ve yönetici portalı için kimlik doğrulama mekanizmaları sağlar. Yetkilendirme Oauth2 protokolü aracılığıyla gerçekleşir. Pozitif yetkilendirme ile hizmet, kurumsal ağda geçerli kullanıcı verilerine göre yetkilendirme gerçekleştirir, böylece sistem senkronize olmayan verilerle ilgili hataları kontrol edebilir.
• Python'da yazılmış ve metin tanıma için ParlAI çerçevesini kullanan AI Metin tanıma modülü. Bu, en azından mevcut uygulamasında bir sinir ağıdır. Soruları anlamak için tfDiff algoritmasını kullanıyoruz. Modül, onunla iletişim kurmak ve öğrenmek için bir API sağlar.

Sonuç olarak şunu söylemek isterim ki bu bizim chat bot oluşturma konusundaki ilk deneyimimiz ve sistemi olabildiğince basit ama aynı zamanda minimum işçilik maliyetiyle işlevsel hale getirmeye çalıştık. Çok ilginç bir ürünümüz olduğunu düşünüyorum. Kendi eğitim sistemi, hata kaydı, bildirim gönderimi ile diğer herhangi bir messenger ile de entegre edilebilir.

Kaynak: habr.com

Yorum ekle