Hanya sebulan yang lalu, kami ingin mencoba membuat ekstensi untuk
keterampilan fungsional Alice. Dari pengalaman berkomunikasi dalam
obrolan dukungan Yandex.Dialog , saya mendapat kesan bahwa sudah ada sesuatu untuk dibagikan dengan fitur pemula bekerja pada antarmuka suara.
Dalam catatan itu saya ingin menceritakan kesan saya tentang tiga minggu
keterampilan Tahun Baru anak-anak kami
Snow Maiden dan tentang pertanyaan dan jawaban dalam obrolan pengembang dialog.

Untuk seorang profesional di
VUI , catatan itu tidak akan menjadi sesuatu yang baru, tetapi saran dan komentar yang baik dari yang berpengalaman dipersilahkan Saya menulis untuk pertama kalinya, tolong jangan menilai dengan ketat.
Kenapa memperhatikan Alice?Mengapa semua ini: suara, keterampilan?Bagaimana cara membuat skill?Pendekatan umum dan kesalahan umum.Kelemahan platform saat ini.Kenapa memperhatikan Alice?
Sementara asisten suara di luar negeri sudah menjadi hal yang biasa, banyak jam percakapan dengan robot sudah
bocor ke jaringan , maka kita masih memilikinya di tingkat interaksi dengan navigator, obrolan anak-anak dengan Alice, memanjakan para geek dengan rumah pintar. Beberapa teman saya memasukkan catatan dan pengingat menggunakan Siri, meskipun, menurut pendapat saya, ini adalah salah satu opsi paling nyaman untuk menggunakannya. Dengan probabilitas tinggi tahun ini situasinya akan berubah menjadi lebih baik, karena fondasinya telah diletakkan:
- Alice baru berusia satu tahun, dia sedang belajar, tetapi sudah tahu berapa banyak.
- Keluar dari stasiun Yandex - Saya pikir secara bertahap akan menjadi lebih pintar dan lebih fungsional.
- Penampilan yang dijual pada bulan Desember dari mini-speaker afiliasi berbiaya rendah pertama.
- Alice School Meluncurkan untuk Mengembangkan Keterampilan untuk Pengembang
- Peningkatan besar pada infrastruktur Yandex.Dialog diumumkan, khususnya, "keterampilan penemuan" - alat untuk pencarian yang mudah dan peringkat keterampilan dari pengembang pihak ketiga
Semua ini memberi tahu saya bahwa kami berada di awal pengembangan antarmuka suara di Rusia dan oleh karena itu kami memutuskan untuk mulai mempelajari teknologi ini.
Mengapa semua ini: suara, keterampilan?
Saya pikir banyak orang sudah memahami keuntungan dari antarmuka suara dalam beberapa kasus, tetapi itu tidak akan berlebihan untuk diingat: kadang-kadang ini adalah pilihan yang paling cocok. Misalnya, di mobil atau di dapur, memasak, dalam aktivitas lain di mana tangan Anda sibuk, akan lebih mudah untuk memberikan perintah dengan suara. Misalnya, untuk waktu yang lama ada
robot-perawat, dikendalikan oleh suara , membantu operasi bedah.
Suara adalah antarmuka yang akrab bagi orang untuk berinteraksi. Orang tua dan anak-anak mempelajari metode ini tanpa masalah untuk mendapatkan informasi dan mengelola gadget.
Bagi orang dengan gangguan penglihatan, suara dan pendengaran adalah saluran interaksi yang bahkan lebih penting dengan lingkungan. Dilihat oleh
obrolan Yandex.Station, kategori orang ini sangat menghargai penampilan perangkat seperti itu yang membuat hidup mereka lebih mudah.
Saya tidak akan melanjutkan membuat daftar kasus, jika menarik, maka Anda dapat mempelajari lebih lanjut tentang semua ini dari literatur khusus.
Skill adalah program yang mengimplementasikan dialog tertentu yang diluncurkan oleh perintah aktivasi yang diberikan di Alice dan memperluas kemampuan asisten suara dari Yandex.
Bagaimana cara membuat skill?
Sudah ada sejumlah
keterampilan pihak ketiga yang baik, tetapi ada banyak ceruk lain yang dapat Anda tempati dan buat keterampilan yang benar-benar menarik dan bermanfaat.
Ada beberapa artikel tentang cara membuatnya, termasuk di Habré. Ada
dokumentasi , ada
rekomendasi umum singkat. Saya tidak akan masuk jauh ke detail teknis implementasi, karena Saya ingin berbagi pendekatan umum untuk pemula.
Secara teknis, keterampilan ini sangat mirip dengan bot, dengan perbedaan bahwa itu tidak dapat mengirim pesan itu sendiri, tetapi hanya menjawab permintaan pengguna.
Berikut adalah daftar singkat sumber daya untuk membantu Anda memulai:
Perpustakaan dan sumber daya untuk Dialog Yandex
FAQ Tidak Resmi untuk bekerja dengan Dialog Yandex.
Dokumen tersebut berisi tautan dan pertanyaan serta jawaban yang sangat relevan dan tidak.
Dialog Yandex obrolan di atas.
Untuk memulai pengembangan, Anda memerlukan akun di Yandex, sebuah server tempat kode program kami akan ditempatkan dan dieksekusi, server web dan aplikasi itu sendiri, ditulis dalam bahasa apa pun yang nyaman bagi Anda yang dapat menyediakan pekerjaan melalui
protokol https .
Saya tidak akan memberikan detail implementasi keterampilan saya di sini, jika ada permintaan dari masyarakat, saya akan memperhatikan hal ini dalam artikel terpisah. Apalagi bahan-bahan tersebut sudah ada.
Saya hanya akan meninggalkan
contoh keterampilan sederhana dalam PHP dengan komentar yang, saya pikir, akan memungkinkan pemula untuk memulai dengan cepat.
Repositori berisi skrip untuk membuat lingkungan pengembangan sederhana yang menjalankan server web yang dibangun ke dalam PHP dan menggunakan layanan
serveo.net membuat port lokal dapat diakses dari Internet:

Simpan url https: //******.serveo.net - ini akan menjadi url webhook Anda. Tidak seperti
ngrok, URL ini tidak berubah seiring waktu, Anda tidak perlu mengubahnya di pengaturan dialog. Anda dapat memeriksa ketersediaan webhook dengan memasukkan URL ini di browser - json harus kembali dengan kesalahan. Ini normal, kami tidak mengirimkan parameter yang diperlukan ke skrip.
Selanjutnya, daftarkan keterampilan itu sendiri melalui
tautan :

Pilih item "Skill in Alice"

Kami mengisi semua bidang sesuai dengan petunjuk dan dokumentasi dialog:

Di bidang url webhook, masukkan URL yang diterima sebelumnya.
Kami mencoba menyimpannya, jika kami mengikuti instruksi yang diberikan, semuanya akan berhasil saat pertama kali.
Dalam artikel ini tentang implementasi, saya hanya akan menyarankan Anda untuk memberikan perhatian khusus pada sistem tindakan pengguna logging. Saya semua bidang masalah interaksi pengguna, misalnya, saya berharap "ya | tidak, tapi saya mendapatkan sesuatu yang lain, menulisnya ke log dan segera menyiarkan (sebagai proses terpisah untuk kecepatan webhook) ke saluran telegram untuk pelacakan dan tanggapan operasional.
Pendekatan umum dan kesalahan umum.
Seperti yang saya harapkan, pendekatan biasa untuk pengembangan web konvensional atau pengembangan bot telegram tidak cocok di sini. Perbedaan utama adalah seringnya jawaban yang tidak dapat diprediksi. Platform dialog memungkinkan Anda untuk menambahkan tombol dengan jawaban yang jelas untuk pertanyaan, tetapi pengguna sering menjawab sama sekali tidak seperti yang diharapkan oleh seorang programmer yang terbiasa mengikuti logika yang jelas.
Sebuah contoh
Apakah Anda ingin belajar puisi lain?
[ya] [tidak]
Kami berharap orang tersebut akan menjawab ya atau tidak, tetapi banyak pilihan lain datang kepada kami:
- Ya
- iya iya
- tentu saja aku mau
- Ya bu, apa yang harus kita makan?
- lelah
- Seperti apa cuaca di Novosibirsk?
Semua ini terjadi karena beberapa alasan. Seseorang dapat menggunakan berbagai ungkapan afirmatif: “tentu saja”, “ya,” “ya,” “ayolah,” dll. serta yang negatif. Kebetulan dia tidak mulai menjawab pertanyaan tepat waktu, Alice masih tidak mendengarkan jawabannya, dan orang itu sudah mulai berbicara, pada akhirnya kita mendengar bagian dari frasa. Atau sebaliknya, setelah seseorang menjawab, ia melanjutkan pembicaraan dengan lawan bicara lain "dalam kehidupan nyata." Juga, pengguna skill mungkin tidak mengerti apa yang ada di dalam dialog pihak ketiga, dan membuat permintaan aliso biasa tanpa meninggalkan perintah "cukup".
Jika kami hanya mengulangi pertanyaan yang sama tanpa mengenali jawaban yang benar, ini dapat mengganggu pengguna dan menyebabkan kekecewaan dalam keterampilan Anda dan antarmuka suara pada umumnya. Karena itu, Anda harus memberi perhatian khusus pada pesan-pesan kesalahan, kadang-kadang lebih baik merumuskan kembali pertanyaan, memperjelasnya, dan tidak menanyakannya lagi. Pengguna cenderung menjawab pertanyaan yang sama sama, hanya lebih keras.
Anda juga harus mencoba menyediakan berbagai opsi untuk respons pengguna, sorot bagian semantik. Bergantung pada situasinya, kadang-kadang lebih baik membuat kesalahan sekali demi pengakuan yang salah atas jawaban, dan tidak memaksa pengguna untuk merespons dengan jelas. Jika Anda menambahkan sesuatu dengan pola ke jawaban yang diharapkan (ya *), maka itu akan sering berfungsi sebagaimana mestinya, dan kasus-kasus ketika kami diberi tahu "tinggalkan aku sendiri" akan menjadi pengecualian dan tidak ada hal penting yang akan terjadi dalam logika program. Jika, tentu saja, kita membutuhkan jawaban yang akurat, karena pengakuan yang salah akan ada konsekuensi yang tidak dapat diubah dalam sistem, maka kita harus mendapatkan jawaban yang jelas dari pengguna. Atau jika kami tidak yakin dengan jawabannya, kami dapat meminta informasi tambahan yang hilang.
Setiap kasus interaksi harus dipertimbangkan secara terpisah.
Dalam contoh di atas, kita dihadapkan dengan fakta bahwa pengguna meminta puisi lebih pendek atau tentang beberapa karakter ("apakah ada yang lebih pendek?", "Mari kita bicara tentang gadis salju").
Di sini kami memiliki opsi - baik menambah level menu baru, tetapi jangan lupa tentang "kemanusiaan" dari dialog atau menanggapi permintaan tersebut sesuai dengan harapan pengguna, tetapi jelas tidak menawarkannya.
Tidak peduli bagaimana kami memikirkan bagian dialog ini di awal, kami menyadari bahwa penggunaan nyata akan lebih baik menunjukkan keinginan pengguna, karena kami memulai keterampilan pertama kami dengan fungsionalitas minimal, secara bertahap menambahkan kemampuan Snow Maiden kami, serta reaksi terhadap permintaan yang tidak kami tuntut sebelumnya.
Menggunakan API pihak ketigaKami memperhatikan bahwa untuk menyediakan beberapa fungsi yang berguna dalam keterampilan mereka, pengembang terkadang menggunakan berlebihan penggunaan API pihak ketiga. Namun, jangan lupa bahwa waktu respons webhook Anda tidak boleh lebih dari 1,5 detik. Terkadang ini dapat menyebabkan pengalaman pengguna negatif dengan keterampilan yang bisa menjawab dengan benar, atau menulis: "ada yang salah."
Fitur pengakuan entitas bernama : tidak semua nama, kota dikenali dengan benar, dan oleh karena itu disarankan untuk memberikan ini dalam keahlian Anda. Sejauh ini, agar tidak menghilangkan anak dari nama Yandex yang tidak dikenali dari berkomunikasi dengan Snow Maiden, kami harus menggunakan "kruk". Segera pertimbangkan ini saat berkembang, agar tidak membuat marah pengguna dengan nama Glory atau Hope, misalnya. Kami berharap Yandex akan segera memperbaikinya.
Pengucapan kata-kataAlat pengujian sintesis pidato yang ada tidak selalu cocok dengan apa yang sebenarnya Anda miliki dalam keterampilan Anda. Jangan malas memberikan mekanisme untuk menambahkan jawaban ke salah satu jawaban Anda. Kami mengandalkan mesin Yandex, dan beberapa frasa dalam keahlian kami sekarang sulit
dilabeli untuk pengucapan yang lebih baik (tanpa perubahan besar pada kode). Kami akan mempertimbangkan untuk masa depan.
Fungsi PHP sederhana namun efektif
untuk perbandingan kata fuzzy banyak membantu:
similar_text () ,
levenshtein () , bahasa lain juga memiliki alat serupa. Yah, dan, tentu saja, ekspresi reguler, di mana tanpa itu.
Fungsi-fungsi ini memungkinkan, misalnya, untuk menerima dengan benar jawaban teka-teki dengan jawaban yang benar sebagian - tidak dikenali dengan tepat, dalam berbagai deklarasi berbeda.
Ini, tentu saja, untuk spesialis di
NLP (Natural Language Processing) tidak akan terlihat serius, tetapi, sekali lagi, catatan - untuk pemula.
Kelemahan platform saat ini
Saya akan secara singkat menguraikan klaim utama pengembang untuk Dialog Yandex, yang saya perhatikan dalam obrolan.
Moderasi yang panjang, sering kali tampaknya tidak masuk akal. Kebetulan keahlian Anda tidak mengalami moderasi karena fakta bahwa, misalnya, Anda memiliki nama keahlian yang terlalu umum, misalnya, "cuaca di Crimea", meskipun Anda sudah memiliki keterampilan dengan nama yang sama - "Cuaca di Severodvinsk". Jadi saya mengerti bahwa ini disebabkan oleh fakta bahwa sebelumnya persyaratan untuk nama dan kata-kata aktivasi lebih sederhana dan
putra dari pacar ibunya beruntung untuk pria itu, dan Anda tidak akan berhasil. Cari frasa lain atau coba gunakan
merek .
Dokumentasi tidak selalu benar. Platform itu sendiri berkembang pesat, dokumentasi tidak mengikuti, kadang-kadang ditafsirkan berbeda oleh pengguna dan perwakilan Yandex.
Platform sejauh ini
hanya menyediakan
alat dasar untuk keterampilan debugging .
Saat Anda menambahkan keterampilan ke panel pengembang, webhook Anda seharusnya sudah merespons dengan benar, atau kesalahan validasi hanya akan terjadi. Kesalahan macam apa, JSON mana yang dikirim dan mana yang datang - kita tidak akan melihat. Jika Anda berhasil menambahkan keterampilan, maka Anda akan memiliki panel minimal dengan isi hanya permintaan-respons terakhir dan itu saja! Tidak ada cara untuk memeriksa bagaimana ini akan benar-benar berfungsi dan terdengar pada perangkat sebelum moderasi. Ada
emulator pihak ketiga yang berfungsi agak tidak stabil, tidak di semua browser, dan tidak mematuhi protokol saat ini.
Ada keinginan dan permintaan lain dari pengembang, seperti: integrasi dengan rumah pintar, menentukan lawan bicara dengan suaranya, kemampuan untuk memilih suara untuk keterampilan dengan generasi yang lebih baik, integrasi sistem pembayaran, integrasi dengan akun Yandex, termasuk untuk bekerja dengan keterampilan dengan perangkat berbeda di bawah satu pengguna, sistem keterampilan pribadi dipikirkan. Tetapi ini adalah fungsi yang memerlukan studi yang cermat dan, dari sudut pandang keamanan, kenyamanan. Saya pikir Yandex akan dapat memberikan peluang ini ketika menerapkannya pada tingkat yang tepat. Namun, masalah dengan moderasi, debug, dan terkadang dokumentasi yang tidak relevan dapat sangat mengganggu pemula untuk terbiasa dengan platform.
Ini membantu bahwa dalam
obrolan, dukungan terus merespons, komunitas yang kurang berpengalaman dan responsif juga telah diatur, yang telah banyak membantu saya, akan membantu Anda. Dukungan menanggapi banyak klaim dengan cukup cepat dengan pesan "perhatikan", "kami tahu tentang dokumentasi, kami akan memperbaikinya", "kami memutuskan tentang moderasi". Oke, kami menantikannya.
Untuk memulai lebih cepat, saya
menyarankan Anda untuk mempublikasikan keterampilan pribadi , mereka sekarang diperiksa dengan persyaratan minimum:
- Skill diperiksa untuk nama dan frasa aktivasi , karena basis umum untuk semua pengembang.
- Webhook harus menanggapi permintaan dengan benar .
- Keterampilan pribadi harus melaporkan bahwa keterampilan itu ditutup di alamat sambutannya. Sehingga pengguna yang secara tidak sengaja meluncurkannya diberitahu.
Kiat obrolan:
Setelah keterampilan yang diterbitkan dapat digunakan untuk menguji dialog lainnya untuk mengantisipasi moderasi dengan mem-proksi permintaan dari webhook yang diterbitkan ke yang dikembangkan, memfilter dengan user_id.
Kesimpulan
Secara umum, antarmuka suara itu sendiri tampaknya merupakan topik yang sangat menarik, semakin banyak diminati di masa depan, saya berencana untuk lebih mendalaminya, membaca literatur khusus, instruksi dan tips dari layanan serupa asing (Google, Amazon, Siri, dll.).
Biarkan saya mengingatkan Anda lagi tentang sekolah Yandex Alice, jika seseorang seperti saya tertarik dengan topik ini.
Beberapa tautan terkait lainnya:
Blog Dialog YandexSaluran Youtube Dialog YandexDialog yang mudahDesain Buku Antarmuka Pengguna SuaraNatasha: perpustakaan untuk mengekstraksi entitas bernamaSaluran Telegram menginformasikan tentang keterampilan baruKatalog Keterampilan Tidak Resmi