Pada 2016, di puncak popularitas chatbots, tim kami membuat asisten tombol untuk bisnis. Sampai sebuah pemikiran menarik muncul: "Bagaimana jika kita mengotomatiskan dukungan klien dengan jaringan saraf?" Kami ingin robot obrolan akhirnya belajar memahami bahasa alami dan menjadi nyaman.
Butuh empat ahli matematika, enam bulan kerja keras, satu bahasa pemrograman baru dan banyak kesalahan - dan kami menciptakan konstruktor di mana setiap orang dapat mengumpulkan asisten virtual dengan AI.
Dalam materi akan kami sampaikan
- Bagaimana asisten virtual berbeda dari bot obrolan biasa
- Benarkah asisten virtual memahami bahasa
- Bagaimana kami mengajarkan robot untuk memahami konteks dan menulis bahasa lialang
- Uji kasus: bagaimana kami mengotomatiskan dukungan di tiga bank
- Pembuatan Lia Platform dan engine untuk antarmuka
- Tiga langkah: bagaimana cara kerja platform untuk merakit asisten virtual (di mana siapa pun, bahkan yang bukan programmer, dapat merakit robot)
Bot obrolan vs asisten virtual
Obrolan canggih dapat menyorot kata kunci dan meniru dialog manusia kembali di tahun 60an. Hippies terjun ke LSD, The Beatles mengumpulkan stadion, dan Joseph Weizenbaum menciptakan Eliza, seorang psikoterapis yang akan memberi peluang bagi banyak bot modern, dan bahkan psikolog.
Misalnya, dalam kalimat "Ayahku membenciku", Eliza menanggapi kata kunci "ayah" dan bertanya: "Siapa lagi di keluarga yang membencimu?" Tetapi psikoterapis robo tidak memahami esensi dari masalah tersebut. Chatbot modern juga berfungsi: kata kunci, skrip linier, dan parodi dialog langsung.
Tetapi ada sesuatu yang berubah sejak tahun 60an: sekarang, berkat pembelajaran mesin dan teknologi NLP, kita dapat mengajarkan chat chat untuk memahami bahasa dan konteks alami. Ini masih tiruan, tetapi lebih bermakna.
Untuk melihat perbedaannya, mari kita bandingkan chatbot dan asistennya - bayangkan kita perlu membuat
sommelier virtual yang membantu pelanggan dengan pilihan anggur.
Tahap 1
Tahap pertama dari chatbot dan asisten virtual adalah satu: kami mencari tahu permintaan pengguna dan menghasilkan frasa yang dapat mereka tulis. Dan kemudian kita meresepkan bagaimana robot akan bertindak sebagai respons.
Permintaan dasar jelas - mengambil anggur. Tetapi permintaan ini dapat memiliki banyak parameter: alasan, harga, negara, warna, variasi anggur. Mungkin pengguna langsung menulis nama anggur yang akan ditemukan. Atau dia akan mengklarifikasi detail: "Di mana itu dibuat?" Atau mungkin karena penasaran, dia akan mulai melempar bot dengan pertanyaan: "Botol mana yang paling mahal di dunia?" Dan seterusnya. Selain itu, selain permintaan dalam kasus ini, ada "halo", "selamat tinggal", "apa kabar" dan frasa bicara kecil lainnya yang perlu ditanyakan.
Anda dapat berfantasi tanpa henti, tetapi tetap saja kami tidak akan dapat memprediksi semua pertanyaan pengguna. Ketika tampaknya bagi kami bahwa situasi yang dijelaskan akan cukup untuk menutup 98% dari permintaan, kami berhenti (meskipun kemudian kenyataan pahit terputus dan kami menemukan bahwa 80% akan tercakup paling baik).
Kemudian kami menyebarkan asumsi kami tentang kebutuhan pengguna untuk permintaan spesifik - niat. Niat menunjukkan apa yang diinginkan pengguna, tetapi membuang informasi tentang bagaimana ia menulis tentang itu. Tahap ini sama untuk chatbots dan asisten.
Daftar niat
Niat 1 - Saya ingin anggurFrase:
- Bantu aku memilih anggur
- Anggur apa yang akan Anda rekomendasikan?
- Saya ingin anggur terbaik
- ...
Apa yang harus dilakukan dengan itu: pilih secara acak salah satu anggur paling populer dan beri tahu pengguna.
Niat 2 - anggur yang lebih murahFrase:
- apakah ada anggur yang baik hingga 1000 rubel?
- Tapi tidak ada yang lebih murah?
- terlalu mahal untukku
- ...
Apa yang harus dilakukan: tambahkan filter harga ke permintaan dan pilih salah satu anggur paling populer.
Niat 3 - Saya ingin anggur untuk dagingFrase:
- Sarankan anggur ke steak
"Aku akan makan malam goulash." Apa yang harus diminum?
- ...
Apa yang harus dilakukan tentang itu: permintaan ke database dengan kriteria "untuk daging", pilih salah satu anggur paling populer dan beri tahu pengguna.
... (dan seterusnya ratusan niat berbeda)
Niat 290 - kami tidak memahami penggunaFrasa: lainnya
Apa yang harus dilakukan: mengeluarkan frasa rintisan: "Saya tidak tahu apa yang Anda maksud, tetapi Pinista menyenangkan setiap saat sepanjang tahun."
Tahap 2
Pada tahap ini, kita mulai membuat algoritma yang digunakan robot untuk bekerja. Di sini kesamaan chatbot dan asisten virtual berakhir.
Saat mengode chatbot, programmer secara manual menentukan kata kunci untuk setiap niat, dan ketika pengguna menulis, bot akan mencari kata kunci ini dalam frasa.
Ketika mengembangkan asisten, seorang programmer mengajarkan algoritma untuk membandingkan replika pengguna sesuai dengan makna leksikal. Ini memungkinkan Anda untuk menemukan niat terdekat.
Cara kerjanya: tabel yang membandingkan chatbots dan asisten virtual Benarkah asisten virtual memahami bahasa?
Algoritma dapat membedakan beberapa frasa dari yang lain - tetapi dapatkah kita mengatakan bahwa robot benar-benar memahami bahasa?
Untuk menjawab pertanyaan ini, mari kita kembali ke perbandingan makna leksikal dari frasa. Arti untuk sebuah komputer adalah tipe data yang dapat dimengerti: string, angka, dan kombinasinya. Oleh karena itu, programmer menghadapi tugas untuk mengubah teks sumber menjadi bentuk yang cocok untuk operasi matematika perbandingan - vektor.
vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize(" ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize(" ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982)
Untuk tugas-tugas kami, vektor frasa leksikal dekat harus secara matematis dekat satu sama lain, yang leksikal jauh harus jauh, vektor frasa dari opera lain harus sangat jauh. Misalnya, "Saya ingin anggur" lebih dekat dengan "Saya ingin anggur putih" daripada "Saya tidak ingin anggur". Dan jauh dari "serangan Mars".Jaringan saraf yang terlatih dengan baik akan dapat menyimpulkan makna leksikal dalam vektor-vektor ini. Ternyata, untuk membandingkan makna dua frasa, Anda perlu membandingkan vektornya.
Oleh karena itu, jawaban atas pertanyaan "Apakah robot mengerti bahasa?" Akan seperti ini: mereka tidak mengerti bagaimana seseorang, mereka hanya tahu bagaimana membandingkan makna leksikal dan tidak membingungkan antara yang hangat dengan yang lunak. Tetapi ketika algoritma dapat menawarkan perbaikan sugestif dan menarik kesimpulan, kami jujur mengatakan: ya, pemahaman telah tiba. Sementara itu, "memahami bahasa" hanyalah ungkapan pemasaran yang indah.
Faktanya, robot hanya bekerja dengan analogi, seperti anak berusia tiga tahun. Namun, jika Anda memberi anak cukup banyak contoh, ia akan bisa berpura-pura menjadi intelektual dan memimpin diskusi. Operator "langsung" dari garis dukungan pertama bekerja dengan cara yang sama - mereka menguraikan serangkaian situasi dan memberi tahu mereka bagaimana berperilaku di dalamnya. Oleh karena itu, asisten virtual sangat cocok untuk otomatisasi dukungan.
Bagaimana kami mengajarkan robot untuk memahami konteksnya: lialang
Untuk dukungan normal, robot perlu sedikit "memahami" bahasa alami - penting bahwa mereka dapat menjawab pertanyaan dan tetap dalam konteks. Untuk melakukan ini, kami menulis lialang, bahasa markup dialog tempat skrip dapat dijelaskan dan diteruskan ke robot.
Tugas utama seorang programmer lialang adalah untuk menggambarkan semua situasi yang dapat terjadi dalam dialog antara seseorang dan mesin. Untuk melakukan ini, dalam bahasa kami Anda dapat mengaitkan nama niat dan tindakan.
Pertimbangkan contoh sederhana - salam:
if intent() { reaction(_) }
Ini terlihat seperti kode biasa, tetapi sebuah neural grid bekerja di belakang maksud (...) construct - lialang menggambarkan dialog dalam pola umum ("jika Anda diminta untuk sesuatu") menggunakan konstruksi pemrograman yang biasa. Tentu saja, agar ini berfungsi, Anda perlu menerapkan pembelajaran mesin dan teknologi NLU, karena pengguna dapat menulis permintaannya sesuai keinginan.
Dan inilah cara menggambarkan situasi kontekstual.Kami memperkenalkan konstruksi “was” untuk menangkap salam yang tidak pantas di mana pun dalam dialog:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
Dikatakan: Lia, jika mereka menyapa Anda, katakan halo sebagai tanggapan. Dan jika setelah itu mereka kembali berkata "halo" - katakan bahwa Anda sudah mengatakan halo.
Reaksi adalah tindakan yang harus dilakukan Lia dalam menanggapi niat. Dalam 95% kasus, ini hanya teks. Tetapi juga robot dapat memanggil fungsi dalam kode, beralih komunikasi ke operator atau melakukan tindakan kompleks lainnya.
Kode untuk mengirim teks dan fungsi ada secara terpisah dari bahasa - bahasa menggambarkan situasi sesederhana mungkin.
Sekarang mari kita coba menulis hal yang lebih rumit - dalam obrolan dengan bank, pelanggan sering meminta detailnya. Mari belajar cara mengirim mereka ke chat dan email menggunakan lialang.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
Dua situasi dijelaskan di sini:
- Lia, jika Anda diminta untuk mengirim detailnya - kirim ke obrolan. Jika setelah mereka bertanya "perlu ke kantor pos", kemudian kirim ke kantor pos.
- Lia, jika Anda segera diminta untuk mengirim rincian ke surat - kirim rincian ke surat.
Jadi lialang melakukan tugasnya - bekerja dalam konteks. Bahkan jika seseorang menulis "melalui surat, tolong," robot akan mengerti bahwa kita berbicara tentang detail.
Lia telah belajar untuk mendukung skenario yang kompleks - pada saat diperlukan untuk pengguna, ia akan mendapatkan / memasukkan data dari / ke CRM, mengirim SMS, membantu pembayaran atau berbicara tentang kehidupan.
Secara bertahap, kami meningkatkan bahasa: kami menambahkan variabel, fungsi, entitas (tanggal, alamat, nomor telepon, nama, dll.), Status, dan konstruksi berguna lainnya. Jadi menjadi lebih nyaman untuk menulisnya.
Uji kasus: bagaimana kami mengotomatiskan dukungan di tiga bank
Segera setelah kami membuat teknologinya, itu harus diselesaikan secepatnya - kami memiliki pelanggan pertama kami. VTB perlu mengotomatiskan dukungan di bank Internet baru untuk pengusaha.
Kami memulai dengan cukup sukses - terutama untuk produk yang dibuat dalam empat bulan. Robot hibrida kami untuk VTB didasarkan pada jaringan saraf dan langsung efektif: ia menjawab lebih dari 800 pertanyaan, mendukung beberapa skenario kompleks (pernyataan, perubahan tarif, pengaturan pengguna) dan berbicara seperti manusia. Akibatnya, dalam dua bulan, Lia kami mengurangi beban dukungan sebesar 74%. Menjadi jelas: ide dengan dukungan otomasi bekerja.

Selanjutnya, berdasarkan Lia, kami mengotomatiskan FAQ di Rocketbank dan DeloBank - dan dalam dua minggu mereka menutup 32% aplikasi tanpa operator.
Tampaknya anak-anak itu mencapai kesuksesan. Namun, setelah pelanggan pertama menjadi jelas bahwa konsep tersebut perlu diubah. Itu adalah neraka - kami harus memodifikasi skrip secara manual, melakukan pengeditan, mengembangkan cabang. Hal yang sama dengan bot sederhana, hanya lebih keras dan membutuhkan lebih banyak kekuatan. Dalam situasi ini, sulit untuk mengukur.
Kemudian kami memutuskan untuk membuat alat di mana klien sendiri akan dapat mengumpulkan bahkan asisten yang kompleks. Dan kami hanya akan membantu dengan tutorial dan mendidik pengguna.
Lia Platform dan engine untuk antarmuka
Jadi, kami memutuskan untuk membuat
platform bagi mereka yang tidak mengerti perkembangannya. Meskipun lialang mengandung kurang dari sepuluh desain yang berbeda, tidak setiap manajer akan mengajarkannya untuk membuat bot sendiri. Manajer menyukai mouse.
Oleh karena itu, kami mulai berpikir tentang antarmuka seperti itu yang akan dapat melakukan semua yang dapat dilakukan lialang. Dia tidak akan memiliki masalah dengan cabang bersarang, transisi dari satu skrip ke skrip lain, dan yang paling penting - tidak hanya programmer kami, tetapi semua orang yang ingin dapat membuat skrip.
Lihat tampilannya:
Dialog adalah hal yang non-linear dan menulis mesin universal untuk semua jenis skema percakapan sangat sulit. Tetapi sebelum kita berpikir tentang skema, kita sudah memiliki lialang - itu menjadi mesin.Apa pun perancang antarmuka yang mungkin muncul, kami tidak membuat kode untuknya, tetapi hanya menulis sedikit penerjemah markup dari antarmuka ke kode lialang. Jika antarmuka redone, kita hanya perlu mengubah penerjemah - berkat perintah antarmuka dan perintah inti dapat ada secara terpisah.
Bagaimana cara kerja platform untuk membuat asisten virtual?
Untuk mengumpulkan asisten virtual Anda sendiri di Lia, pengguna harus melalui tiga tahap.
Langkah 1. Unduh riwayat obrolan dengan pengguna sehingga robot memahami dan menyoroti skenario utama
Jika klien memiliki riwayat percakapan dengan pengguna, ia dapat mengunggahnya ke sistem dan mendapatkan kelompok dari pertanyaan paling populer. Akan sangat mudah untuk membuat niat dari mereka.

Seiring waktu, efektivitas Lia akan meningkat. Pesan yang tidak dapat dijawab robot didistribusikan lagi ke dalam kelompok: misalnya, “siapa kamu?”, “Siapa kamu?”, “Siapa namamu?” Dan “apakah kamu robot?” Akan jatuh ke dalam satu kelompok. Jadi, platform belajar mandiri semi-otomatis: pengguna melihat di mana celah itu dan menutupnya, menambahkan skenario baru - sebagai akibatnya, persentase permintaan tertutup tumbuh dari 30% menjadi 70% dalam enam bulan.
Jika tidak ada riwayat korespondensi, kami lewati langkah ini dan segera mulai dengan langkah kedua: kami memperkirakan permintaan apa yang akan diberikan pengguna kepada asisten.
Langkah 2. Kami menuliskan maksudnya: 10-20 opsi untuk permintaan pengguna yang paling sering
Pada tahap kedua, kami meresepkan niat berdasarkan 10-20 pertanyaan paling populer: jumlah opsi ini cukup berkat jaringan saraf. Jadi frasa seperti "Saya ingin memesan anggur" mengajarkan bot untuk mengenali permintaan pengguna yang serupa: misalnya, "Dapatkan anggur" atau "Pesan anggur".

Asisten lain memahami dan mengekstrak esensi: nama kota, nomor telepon, alamat, stempel waktu, titik, tanggal, dan kutukan - bahkan jika Anda mengatakan "lelah, bawa sekotak anggur besok".
Selain itu, pengguna dapat menambahkan objek mereka sendiri dan secara manual menandai frasa pelatihan sehingga asisten belajar lebih cepat. Ini adalah salah satu fitur paling kuat dari platform, berkat itu dapat membuat robot yang bekerja tidak lebih buruk daripada operator manusia.
Langkah 3. Buat skenario: tentukan beberapa jawaban atau tindakan
Di sini pengguna harus memberikan jawaban atas permintaan pengguna. 95% dari rata-rata proyek biasanya menggunakan skenario Tanya Jawab sederhana - jawaban untuk pertanyaan populer.

Omong-omong, asisten dapat merespons dengan gambar, video, dan file audio, dan jika perlu, mengirim geolokasi.
Lompatan untuk membangun sangat berguna - berkat itu, Lia dapat beralih dari satu skenario ke skenario lain, dan kemudian kembali lagi, menyelesaikan beberapa masalah. Ini berguna jika Anda perlu minggir dalam dialog, tetapi kemudian kembali ke jalur yang benar: misalnya, ajukan pertanyaan klarifikasi.
Contoh lompatan dialog ke:Asisten: Kami perlu mengklarifikasi alamat pengiriman, karena penerima tidak merespons.
Klien: Dan tentang apa? Pesanan yang mana? (JumpTo untuk klarifikasi pesanan)
Asisten: Memesan 21 Agustus, Antigal, "Uno" Malbec.
Asisten: Jadi bisakah kita mengklarifikasi alamat pengiriman saat ini? (Kembali ke skrip utama)
Ketika pembuat menginginkan asistennya tidak hanya merespons dengan teks, tetapi untuk mengambil tindakan, ia akan dapat memanggil seorang programmer untuk menulis cuplikan JS untuk spesialis. Kami memungkinkan Anda untuk menjalankan JavaScript secara langsung selama skrip: mengakses API eksternal, mengirim email atau melakukan tindakan kompleks lainnya.
4. Ringkasan
Seorang asisten dapat berintegrasi dengan apa saja: berbicara dengan seseorang di telepon, dalam pesan instan atau widget yang akan dikirim oleh klien di situs.
Merakit asisten yang cerdas di platform membutuhkan waktu beberapa jam hingga sebulan. Kemudian robot belajar untuk memahami permintaan dan mengenali pola secara realistis - dibutuhkan sekitar enam bulan (selama ini orang yang hidup mengawasi permintaan itu). Bisnis dapat melakukan sebagian besar tugas rutin untuk gadis robot Lia: dari mengoordinasikan pengiriman dan memanggil taksi hingga berkonsultasi dengan klien.

Omong-omong, kami telah mentransfer proyek dengan bank ke platform. Mereka bekerja dengan baik, tetapi mereka lebih mudah dimoderasi.
Dalam waktu dekat, kami berencana untuk menambahkan ekstraktor, yang akan memungkinkan pengguna kami untuk mengekstrak data yang lebih kompleks (misalnya, robot akan memahami frasa "lusa setelah makan siang"). Kami juga akan menyelesaikan kontrol versi sehingga klien dapat dengan cepat memutar dan memutar kembali versi proyek. Dan juga kami akan melepaskan sistem peran organisasi.
Kami perkirakan
ramalan Gartner benar - dan pada tahun 2022, hingga 70% dari semua interaksi pelanggan akan melewati beberapa jenis AI. Menurut ide kami, desainer seperti Lia akan membantu mentransfer layanan klien ke robot lebih cepat.