Panduan ini memberikan praktik terbaik umum untuk mendesain semua jenis agen.
Anda juga harus melihat panduan desain agen suara khusus untuk mendesain agen suara, dan panduan praktik terbaik untuk menggunakan layanan Agen Percakapan (Dialogflow CX).
Saran umum
Membangun agen secara berulang
Jika agen Anda akan berukuran besar atau kompleks, mulailah dengan membuat dialog yang hanya menangani permintaan tingkat teratas. Setelah struktur dasar ditetapkan, lakukan iterasi pada jalur percakapan untuk memastikan Anda mencakup semua kemungkinan rute yang dapat diambil pengguna akhir.
Saat agen Anda berkembang, pertimbangkan untuk menggunakan fitur kasus pengujian untuk pengembangan berbasis pengujian.
Agen bawaan
Agen Percakapan (Dialogflow CX) menawarkan template agen untuk membantu Anda memulai. Agen bawaan mencakup kasus penggunaan umum seperti layanan keuangan, telekomunikasi, dan perjalanan. Agen ini dilengkapi dengan intent dan entity untuk mencakup kueri pengguna yang paling umum. Tambahkan rute dan fulfillment khusus untuk bisnis Anda, dan Anda akan dengan cepat membuat agen yang berfungsi.
Integrasi dan menghubungkan layanan Anda
Ada beberapa cara untuk berintegrasi dengan agen Agen Percakapan (Dialogflow CX). Bagian ini memberikan praktik terbaik untuk memilih cara melakukan integrasi.
Integrasi
Integrasi Agen Percakapan (Dialogflow CX) menyediakan antarmuka pengguna yang siap digunakan untuk agen Anda. Jika menggunakan integrasi, Anda tidak perlu memanggil Conversational Agents (Dialogflow CX) API secara langsung, karena integrasi akan menanganinya untuk Anda. Integrasi ini dapat menyediakan agen teks yang dapat Anda sematkan di situs, terhubung dengan platform pesan lainnya, atau menyediakan antarmuka telefoni.
Conversational Agents (Dialogflow CX) API
Jika tidak ada integrasi siap pakai yang sesuai, atau Anda ingin menyesuaikan antarmuka untuk sistem, Anda dapat menggunakan Conversational Agents (Dialogflow CX) API secara langsung. Dengan pendekatan ini, Anda harus menerapkan antarmuka pengguna untuk agen, atau menggunakan antarmuka pengguna yang ada.
Webhook
Kecuali jika agen Anda dapat sepenuhnya ditentukan dengan data statis, Anda harus menggunakan webhooks untuk menghubungkan layanan dan menyediakan agen yang dapat menangani skenario dinamis. Hal ini berlaku baik jika Anda menggunakan integrasi maupun API Agen Percakapan (Dialogflow CX).
Referensi agen
Resource agen Agen Percakapan (Dialogflow CX) dapat digunakan dengan banyak cara untuk mencapai hasil yang diinginkan. Bagian ini memberikan saran untuk memilih resource yang tepat untuk skenario yang tepat.
Alur dan halaman
Alur dan halaman memberikan struktur ke agen Anda. Anda dapat menganggap halaman sebagai node dalam mesin status, dan alur sebagai grup halaman terkait. Anda mengontrol transisi antar-node dengan pengendali status, yang dipanggil saat intent dicocokkan, kondisi terpenuhi, atau peristiwa dipanggil.
Agen sederhana mungkin berfungsi dengan baik dengan satu alur, tetapi agen kompleks hampir selalu dirancang dengan lebih baik menggunakan beberapa alur. Setiap alur harus mewakili topik tingkat tinggi untuk agen Anda, dengan setiap halaman yang terkait dengan alur membantu menangani topik tersebut. Selain itu, setiap alur dapat memiliki beberapa setelan sendiri, dan dapat dimiliki oleh sebagian anggota tim, yang membantu membagi pekerjaan saat mendesain agen besar.
Saat mendesain agen besar dan kompleks, Anda perlu mempertimbangkan batas"alur per agen" dan "halaman per alur". Batasan ini membantu menjaga performa agen Anda.
Jika desain agen Anda memiliki terlalu banyak alur per agen, gabungkan topik terkait dalam satu alur. Misalnya, Anda dapat menggabungkan topik berikut ke dalam satu alur "Dapatkan saldo":
- Mendapatkan saldo rekening giro
- Mendapatkan saldo tabungan
- Mendapatkan saldo hipotek
- Mendapatkan saldo kredit
Jika desain agen Anda memiliki terlalu banyak halaman per alur, gabungkan halaman terkait dan gunakan banyak rute per halaman.
Jika Anda masih mengalami kesulitan dengan batasan alur dan halaman, hal ini mungkin karena Anda memiliki terlalu banyak logika bisnis yang di-build ke dalam agen itu sendiri. Pertimbangkan untuk memindahkan logika ini ke webhook.
Berikut adalah daftar tingkat perincian kontrol percakapan resource agen dalam urutan tingkat perincian yang meningkat:
- Agen (satu agen menangani semua percakapan)
- Alur (satu alur menangani satu atau beberapa topik percakapan terkait)
- Halaman (satu halaman menangani satu atau beberapa giliran percakapan terkait)
- Rute (satu rute menangani intent pengguna atau pemeriksaan kondisi)
Parameter intent versus parameter formulir
Cara utama sistem Anda mendapatkan data terstruktur dari pengguna akhir adalah dengan parameter. Anda dapat menggunakan parameter untuk intent (parameter intent) atau halaman (parameter formulir).
Tujuan utama beberapa halaman adalah mengumpulkan informasi tertentu dari pengguna akhir. Misalnya, halaman dapat dirancang untuk mengumpulkan informasi kontak pengguna akhir. Dalam hal ini, Anda harus selalu menggunakan parameter formulir untuk mengumpulkan informasi ini.
Dalam beberapa kasus, Anda mungkin ingin mengambil informasi pengguna akhir saat bertransisi dari satu halaman ke halaman lain. Misalnya, jika pengguna akhir meminta produk tertentu di awal percakapan, Anda ingin mengambil produk yang diinginkan saat bertransisi ke halaman pesanan yang sesuai. Dalam hal ini, gunakan parameter intent sebagai bagian dari rute intent.
Ada juga situasi saat menggunakan parameter intent dan parameter formulir adalah ideal. Misalnya, jika pengguna akhir meminta kemeja ukuran kecil di awal percakapan, Anda ingin mengambil parameter ukuran yang diinginkan (kecil) saat bertransisi ke halaman pemesanan kemeja. Halaman pemesanan kaos mungkin meminta informasi tambahan, seperti warna yang diinginkan. Halaman pemesanan kemeja harus memiliki parameter formulir untuk ukuran dan warna. Dalam contoh ini, parameter ukuran telah disediakan dan disebarkan, sehingga agen hanya akan meminta warna. Namun, percakapan lain mungkin mengikuti jalur yang berbeda, dengan pengguna akhir belum memberikan ukuran yang diinginkan saat halaman pemesanan kaos menjadi aktif. Dengan menentukan parameter ini dengan kedua cara tersebut, agen Anda akan lebih fleksibel dalam mengekstrak informasi.
Rute dan grup rute
Jika Anda ingin bertransisi ke halaman lain, antrekan pesan respons, atau panggil webhook saat intent cocok atau kondisi terpenuhi, gunakan rute.
Jika Anda menggunakan kumpulan rute yang sama di beberapa halaman, gunakan grup rute. Tindakan ini akan menghindari duplikasi yang tidak perlu dalam desain agen Anda.
Penggunaan kembali intent
Jika Anda menentukan beberapa intent dengan frasa pelatihan yang serupa, pertimbangkan untuk menggunakan kembali intent di beberapa halaman. Idealnya, Anda harus menentukan beberapa intent tujuan umum yang digunakan di banyak halaman, dan beberapa intent spesifik yang hanya digunakan di satu halaman. Tindakan ini akan menghindari duplikasi yang tidak perlu dalam desain agen Anda.
Misalnya,
intent konfirmasi biasanya paling baik ditentukan sebagai intent yang dapat digunakan kembali.
Intent confirmation.yes
dapat memiliki frasa pelatihan seperti:
- ya
- ya
- ya
- oke
- iya
- benar sekali
- tentu saja
- iya, tolong ya
Intent confirmation.no
dapat memiliki frasa pelatihan seperti:
- tidak
- nah
- tidak
- tidak mungkin
- bukan untuk saya
- sama sekali tidak
- tidak, terima kasih
Intent konfirmasi yang dapat digunakan kembali ini dapat digunakan dalam banyak skenario untuk agen Anda.
Dalam beberapa kasus,
Anda juga harus mempertimbangkan untuk membuat intent konfirmasi khusus.
Misalnya,
saat mengonfirmasi pesanan,
Anda mungkin ingin memiliki intent order.confirmation.yes
khusus
dengan frasa pelatihan seperti:
- urutan ini bagus
- Saya menyetujui pesanan ini
Selain itu, intent order.confirmation.no
khusus
dengan frasa pelatihan seperti:
- Saya tidak menginginkan pesanan ini
- Saya tidak menerima pesanan ini
Saat halaman konfirmasi pesanan Anda aktif, rute intent untuk keempat intent ini harus berada dalam cakupan. Hal ini memastikan bahwa konfirmasi umum atau khusus dari pengguna akhir akan ditangani dengan tepat.
Intent negatif default
Anda harus mengisi intent negatif default dengan frasa yang mungkin diucapkan pengguna akhir, tetapi tidak boleh cocok dengan intent apa pun di agen Anda.
Fulfillment
Ada banyak opsi untuk menggunakan fulfillment guna merespons pengguna akhir. Selama giliran percakapan, agen dapat menambahkan beberapa pesan ke antrean respons, dan antrean yang digabungkan dikirim ke pengguna akhir di akhir giliran percakapan. Bagian ini menjelaskan setiap opsi untuk membuat setiap pesan.
- Fulfillment entri halaman:
Fulfillment ini dipanggil saat halaman awalnya menjadi aktif.
Hal ini berguna jika Anda menginginkan pesan yang menjelaskan tujuan halaman,
dan pesan tersebut hanya boleh diucapkan sekali saat halaman aktif.
Misalnya:
- Apa yang ingin Anda ketahui tentang rekening giro Anda?
- Jenis produk apa yang ingin Anda beli?
- Kami perlu mengumpulkan beberapa informasi tentang kemeja yang ingin Anda pesan.
- Rute:
Fulfillment ini dipanggil saat rute intent atau rute kondisi
dengan fulfillment dipanggil.
Hal ini berguna jika Anda menginginkan pesan yang merespons pengguna akhir tentang
kecocokan intent,
kondisi yang terpenuhi (yang mungkin berupa
kondisi penyelesaian pengisian formulir),
atau transisi.
Contoh:
- Ya, paket internasional Anda mencakup Jepang. (kecocokan intent)
- Yakin ingin membeli 300 kemeja? (kondisi perbandingan terpenuhi)
- Baik, janji temu Anda adalah pukul 07.00 besok pagi. (penyelesaian pengisian formulir)
- Oke, sekarang mari kita bahas aardvark. (transisi)
- Pemroses peristiwa:
Fulfillment ini dipanggil saat peristiwa dipanggil.
Hal ini berguna jika Anda menginginkan pesan yang merespons peristiwa.
Misalnya:
- Saham yang Anda pertimbangkan untuk dibeli baru saja naik nilainya sebesar 10%. (peristiwa kustom)
- Bisakah Anda mengulanginya? (peristiwa tidak cocok)
- Perintah awal untuk formulir:
Fulfillment ini dipanggil saat agen melakukan pengisian formulir.
Pesan ini harus mengajukan pertanyaan tertentu kepada pengguna akhir.
Setiap parameter formulir memiliki fulfillment perintah awal sendiri.
Misalnya:
- Ukuran kemeja yang Anda inginkan?
- Warna kemeja apa yang Anda inginkan?
- Pemroses permintaan ulang untuk formulir:
Fulfillment ini dipanggil saat agen melakukan pengisian formulir,
dan tidak memahami pemilihan pengguna akhir untuk parameter saat ini.
Fulfillment ini hanya diperlukan jika Anda ingin pesan perintah ulang
berbeda dengan pesan perintah awal.
Jika tidak ada pengendali perintah ulang,
agen hanya akan menggunakan perintah awal sebagai pesan perintah ulang.
Misalnya:
- Saya tidak mengerti. Dapatkah Anda memberikan warna yang valid untuk kemeja?
Penamaan
Bagian ini memberikan saran untuk memberi nama resource agen.
Penamaan intent
Jika agen Anda memiliki banyak intent, Anda harus mempertimbangkan skema penamaan yang membantu Anda mengaturnya. Nama intent biasanya disegmentasikan dengan tanda baca, dengan tingkat kekhususan yang meningkat dari kiri ke kanan. Selain itu, nama intent harus mencerminkan niat pengguna akhir untuk giliran percakapan.
Ada banyak skema penamaan yang baik, tetapi berikut adalah salah satu contohnya:
- phone-service.order.cancel
- phone-service.order.create
- phone-service.order.change
- tv-service.order.cancel
- tv-service.order.create
- tv-service.order.change
- account.balance.get
- account.balance.pay
- account.address.get
- account.address.update
Transisi
Transisi yang ditentukan di pengendali status memberikan kontrol atas percakapan dengan mengubah halaman yang aktif. Bagian ini memberikan saran untuk mengatur transisi agen Anda.
Transisi pelengkap
Saat menentukan rute yang memicu transisi, pertimbangkan bahwa mungkin ada rute pelengkap atau terbalik.
Contoh:
- Jika Anda memiliki rute intent untuk confirmation.yes, pertimbangkan untuk menentukan rute lain untuk confirmation.no.
- Jika Anda menentukan rute kondisi dengan operator
=
boolean, pertimbangkan untuk menentukan rute lain yang menggunakan!=
.
Menangani input pengguna akhir
Bagian ini memberikan panduan untuk intent dan frasa pelatihan, sehingga agen Anda dapat menangani dan memproses input pengguna akhir secara optimal.
Tentukan minimal 20 frasa pelatihan
Anda harus memiliki minimal 20 frasa pelatihan untuk setiap intent. Jika tidak, model NLU mungkin tidak memiliki informasi yang cukup untuk mencocokkan intent Anda dengan tepat. Ini adalah panduan minimum. Idealnya, Anda harus menentukan lebih banyak, terutama untuk intent kepala agen besar, dengan jumlah sekitar 50.
Waspadai bias intent
Jika satu atau beberapa intent memiliki frasa pelatihan yang jauh lebih banyak daripada intent lainnya, hal ini menyebabkan model NLU bias mendukung intent yang lebih besar karena data yang tidak seimbang. Bias intent ini dapat terjadi jika jumlah frasa pelatihan berbeda dengan urutan magnitudo atau lebih.
Dalam beberapa kasus, ini adalah perilaku yang diinginkan, karena Anda mungkin menentukan beberapa intent yang harus lebih sering dicocokkan daripada yang lain, karena intent tersebut sesuai dengan input pengguna akhir yang lebih sering diamati dalam traffic live.
Dalam kasus lain, perilaku ini mungkin tidak diinginkan, karena Anda tidak menginginkan bias yang mendukung intent yang lebih besar ini. Jika demikian, kurangi jumlah frasa pelatihan untuk intent yang lebih besar ini agar memiliki urutan magnitudo yang sama dengan intent lainnya. Contoh:
Frasa pelatihan Intent A | Frasa pelatihan Intent B | Bias untuk intent B |
---|---|---|
20 | 50 | Tidak |
20 | 200 | Berbahaya |
20 | 2000 | Ya |
Penggunaan entitas dan jumlah frasa pelatihan
Untuk semua jenis entity yang digunakan dalam intent:
- Anotasikan setiap contoh jenis entity.
- Untuk setiap jenis entity, berikan setidaknya lima frasa pelatihan yang berisi contoh yang dianotasi.
- Berikan frasa pelatihan setidaknya tiga kali lebih banyak dari jenis entitas. Misalnya, jika Anda menggunakan 10 jenis entitas yang berbeda untuk anotasi dalam intent, Anda harus memiliki minimal 30 frasa pelatihan.
Frasa latihan harus alami
Frasa pelatihan harus bersifat percakapan dan alami; frasa tersebut harus cocok dengan apa yang sebenarnya diucapkan orang. Jika memungkinkan, gunakan input pengguna akhir yang telah terjadi dalam produksi sebagai data pelatihan Anda, dengan memperhatikan input yang paling umum.
Variasi frasa pelatihan yang diperlukan
Sertakan variasi pertanyaan, perintah, kata kerja, dan sinonim untuk kata benda umum untuk memastikan frasa Anda mencakup berbagai kemungkinan permintaan.
Sebaiknya sertakan beberapa frasa yang lebih pendek seperti "bayar tagihan saya", serta frasa dan kalimat yang lebih panjang seperti "Saya baru saja menerima surat yang menyatakan bahwa saya harus membayar saldo laporan mutasi". Tidak ada proporsi yang direkomendasikan untuk frasa pendek hingga panjang, tetapi Anda harus mendasarkannya pada input pengguna akhir sebenarnya yang dikirim ke agen Anda dalam produksi.
Menentukan frasa pelatihan yang bervariasi dalam hal panjang, frasa, dan struktur kalimat penting untuk memastikan pelatihan yang baik bagi agen Anda. Anda tidak perlu menambahkan variasi hanya untuk variasi, tetapi Anda perlu menyediakan variasi yang cukup agar model NLU berhasil mendeteksi intent pengguna akhir dari berbagai input pengguna akhir. Jika Anda tidak memiliki variasi yang memadai, ada bahaya overfitting. Dengan kata lain, ada bahaya bahwa model akan terlalu terikat dengan contoh tertentu yang Anda berikan dan tidak akan cukup digeneralisasi ke contoh lain.
Variasi kapitalisasi
Sensitivitas kapitalisasi bervariasi sesuai dengan model NLU yang digunakan agen Anda.
NLU Standar
Model NLU standar tidak peka huruf besar/kecil. Dalam kasus yang jarang terjadi, Anda mungkin perlu menambahkan frasa pelatihan yang hanya berbeda dalam kapitalisasi. Hal ini biasanya berlaku untuk situasi saat Anda mengharapkan pengguna akhir memberikan input teks dalam huruf besar semua.
Pendekatan alternatif dapat berupa:
- Menurunkan nilai minimum klasifikasi ML
- Mengubah input pengguna akhir menjadi huruf kecil sebelum mengirimkannya ke Agen Percakapan (Dialogflow CX).
NLU Lanjutan
Tidak seperti model NLU standar, model NLU lanjutan peka huruf besar/kecil. Sebaiknya uji dan tambahkan data pelatihan yang diawali dengan huruf besar yang relevan untuk meningkatkan tingkat kecocokan intent.
Variasi frasa pelatihan yang tidak perlu
Hindari variasi yang tidak penting dalam frasa pelatihan, karena memberikan informasi duplikat ke model NLU. Misalnya, jangan sertakan varian yang hanya berbeda berdasarkan:
- Huruf besar: Jika Anda menggunakan model NLU standar, hindari frasa duplikasi seperti kecuali "Pesan tiket" dan "pesan tiket" kecuali dalam kasus yang jarang terjadi. Namun, model NLU lanjutan peka huruf besar/kecil dan memerlukan lebih banyak frasa pelatihan untuk meningkatkan pencocokan intent. Lihat bagian variasi kapitalisasi untuk mengetahui detailnya.
- Kata pengisi: Misalnya, "oke, pesan tiket" dan "pesan tiket".
- Tanda baca: Misalnya, "bisakah Anda membantu?" dan "bisakah Anda membantu!?"
Konsistensi anotasi
Bagian frasa pelatihan yang dipilih untuk anotasi harus menyertakan semua, dan tidak lebih dari, teks yang diperlukan untuk mencocokkan entitas. Selain itu, pastikan bagian frasa pelatihan yang serupa dianotasi untuk seluruh intent.
Misalnya,
tabel berikut menunjukkan cara yang baik dan buruk
untuk menganotasi dengan entity sistem @sys.date
:
Baik | Buruk |
---|---|
Keberangkatan 7 September | Keberangkatan 7 September |
Berangkat pada 4 Juli | Berangkat pada 4 Juli |
Menggunakan anotasi yang bermakna secara semantik untuk entity sistem
Makna semantik bagian frasa pelatihan yang dipilih untuk anotasi dapat terpengaruh oleh teks lainnya dalam frasa pelatihan. Contoh:
Frasa pelatihan yang dianotasi | Makna semantik teks yang dianotasi |
---|---|
Saya berusia 7 tahun | Usia seseorang |
Kontrak berlaku selama 7 tahun | Durasi waktu |
Model machine learning Agen Percakapan (Dialogflow CX) mempertimbangkan makna semantik saat mencocokkan entity sistem. Makna semantik bagian frasa pelatihan harus cocok dengan makna semantik yang diinginkan dari entitas sistem.
Misalnya, jangan gunakan entitas sistem @sys.duration
untuk anotasi contoh "7 tahun" pertama di atas.
Makna semantik "7 tahun" tidak cocok dengan durasi waktu sederhana.
Sebagai gantinya, Anda harus memilih "7" untuk anotasi
dan menggunakan entitas sistem @sys.number
.
Menentukan intent untuk menangani jawaban pengisian formulir yang tidak mematuhi kebijakan
Pertimbangkan untuk menentukan intent guna menangani jawaban pengisian formulir yang tidak mematuhi kebijakan. Misalnya, agen Anda mungkin bertanya "kapan tanggal perjalanan Anda?", diikuti dengan jawaban pengguna akhir "Saya belum tahu". Jawaban ini tidak memenuhi perintah parameter formulir, tetapi jika agen Anda memiliki rute intent dalam cakupan yang dapat cocok dengan jawaban ini, agen Anda dapat menangani situasi dengan baik.
Menghindari @sys.any
Hindari penggunaan jenis entity sistem @sys.any
.
Metode ini hanya boleh digunakan jika Anda telah benar-benar mencoba semua cara,
termasuk membuat entity kustom.
Jenis entitas ini sangat luas dan dapat menyebabkan perilaku yang tidak diinginkan.
Jika Anda menggunakan jenis entity ini, hindari menganotasi beberapa bagian dari satu frasa pelatihan dengan jenis entity ini, karena hal ini akan menimbulkan ambiguitas, dan perilaku agen tidak akan ditentukan.
Menggunakan @sys.any
dengan parameter formulir tidak terlalu berbahaya,
karena agen mengharapkan informasi tertentu
saat meminta parameter formulir.
Anotasi harus menyertakan berbagai nilai entity
Saat menentukan frasa pelatihan yang dianotasi, Anda harus menggunakan berbagai contoh nilai entitas dalam frasa. Anda tidak boleh menggunakan contoh entity yang sama secara konsisten untuk anotasi. Contoh berikut menunjukkan anotasi yang baik dan buruk untuk jenis entity produk:
Baik | Buruk |
---|---|
Saya ingin membeli kaos | Saya ingin membeli kaos |
Memesan topi baru | Memesan kaos baru |
Menambahkan smartwatch ke keranjang | Menambahkan kaos ke keranjang |
Entity kustom harus menyertakan variasi
Entitas kustom harus mencakup berbagai contoh. Model NLU akan memberikan variasi untuk bentuk tata bahasa, tetapi Anda harus menyertakan semua kemungkinan item.
Menghindari entitas yang cocok secara agresif
Jangan menentukan entity yang cocok dengan hampir semua hal. Hal ini menurunkan performa dan kualitas ML. Hampir semua hal dalam setiap frasa pelatihan akan dievaluasi sebagai kemungkinan kecocokan.
Petakan dan cantumkan entitas yang harus berfokus pada nilai yang berbeda
Jenis entitas peta dan daftar harus memiliki cakupan terbatas yang menangkap nilai berbeda dari satu jenis informasi. Pastikan entitas Anda tetap fokus, singkat, dan sederhana.
Jika nilai entity Anda rumit, hal ini mungkin karena frasa pelatihan intent lebih sesuai dengan situasi Anda. Misalnya, pertimbangkan input pengguna akhir seperti:
- "Bagaimana cara melakukan panggilan internasional dengan Paket A?"
- "Menggunakan roaming data internasional dengan Paket B".
Jangan membuat jenis entity untuk tindakan dan rencana, seperti berikut:
Jenis entity Actions | Jenis entitas rencana |
---|---|
"Bagaimana cara melakukan panggilan internasional" | "Rencana A" |
"Menggunakan roaming data internasional" | "Rencana B" |
Sebagai gantinya, Anda harus menggunakan frasa pelatihan dan pencocokan intent untuk menangkap tindakan dan entitas untuk menangkap rencana.
Menggunakan entity ekspresi reguler untuk mengambil ID non-kata
Saat mengambil input pengguna akhir yang melibatkan ID non-kata, Anda harus menggunakan entity regexp. Misalnya, untuk mengambil ID produk seperti "AA-256" atau "AC-436", gunakan entity ekspresi reguler seperti "[A-Z]{2}-\d{3}".
Menghindari penyusunan bertingkat entitas gabungan
Jangan gunakan lebih dari satu tingkat bertingkat dalam entitas komposit. Setiap tingkat tingkatan menurunkan kualitas secara signifikan.
Menghindari intent serupa
Setiap intent harus menangkap niat pengguna akhir. Jika Anda menentukan intent yang berbeda dengan frasa pelatihan yang serupa, pencocokan mungkin tidak dapat diandalkan, karena model NLU tidak dapat menentukan dengan keyakinan yang memadai, intent mana yang akan dicocokkan.
Jika dua frasa pelatihan mewakili niat yang sama, frasa tersebut harus berasal dari intent yang sama. Misalnya, "ubah tanggal jatuh tempo tagihan saat ini" dan "lebih banyak waktu untuk membayar" harus termasuk dalam intent yang sama, karena keduanya meminta perubahan tanggal jatuh tempo. Namun, "Dapatkah saya melakukan panggilan internasional dengan Paket A?" dan "Dapatkah saya menggunakan roaming data internasional dengan Paket A?" dapat berasal dari intent yang berbeda, karena pengguna akhir menginginkan hal yang berbeda dalam setiap kasus.
Menghindari jenis entity yang serupa
Anda harus menghindari penentuan beberapa jenis entity yang memiliki entri entity serupa, karena hal ini dapat menyebabkan ambiguitas untuk model NLU.
Menggunakan peristiwa tidak cocok dalam produksi untuk meningkatkan intent Anda
Saat menjalankan agen dalam produksi, beberapa input pengguna akhir akan menghasilkan peristiwa tidak cocok. Anda dapat menggunakan peluang ini untuk meningkatkan kualitas agen dengan salah satu dari tiga cara berikut:
- Tambahkan input pengguna akhir sebagai frasa pelatihan ke intent yang diinginkan. Namun, hal ini tidak selalu merupakan opsi terbaik. Jika Anda melakukannya beberapa kali untuk intent, hal ini dapat menyebabkan bias intent.
- Bersihkan frasa pelatihan untuk intent yang diinginkan, sehingga semuanya mencerminkan niat secara akurat. Dalam beberapa kasus, intent dengan frasa pelatihan yang berbeda dapat mencegah pencocokan untuk intent.
- Jika intent yang tidak boleh dicocokkan untuk input pengguna akhir memiliki frasa pelatihan yang dapat cocok dengan input pengguna akhir, hapus frasa pelatihan ini.
Hindari karakter khusus
Karakter khusus dalam frasa pelatihan
({
, _
, #
, [
, dan sebagainya) akan diabaikan.
Pengecualian untuk hal ini adalah untuk emotikon,
yang berfungsi seperti yang diharapkan.
Hindari kata pengisi
Kata pengisi adalah kata yang dapat Anda abaikan dan tetap dapat memahami teks. Contoh:
- memohon
- bisakah Anda
- hmmm
- bagaimana dengan
Penggunaan kata pengisi dalam frasa pelatihan tidak diperlukan, tetapi tidak berbahaya, karena kata-kata tersebut diabaikan oleh model NLU. Namun, Anda tidak boleh menentukan frasa pelatihan yang hanya bervariasi menurut kata pengisi.
Jangan pernah menentukan entitas yang terdiri dari kata pengisi.
Bereksperimen dengan setelan ML
Setelan ML dapat digunakan untuk menyesuaikan cara pemrosesan input pengguna akhir. Pada umumnya, setelan default berfungsi dengan baik. Namun, Anda dapat menyesuaikan setelan untuk meningkatkan performa agen.
Merespons pengguna akhir
Bagian ini memberikan panduan untuk menggunakan fulfillment guna merespons pengguna akhir.
Menyambut pengguna akhir
Agen yang baru dibuat memiliki rute intent yang dibuat secara otomatis untuk niat sambutan. Anda harus mengedit rute ini untuk menyertakan pesan fulfillment yang menyambut pengguna akhir. Pesan ini harus menjelaskan agen dan memberi pengguna akhir gambaran tentang kemampuannya.
Mengonfirmasi informasi pengguna akhir
Sebaiknya ulangi informasi yang diberikan oleh pengguna akhir dalam respons. Hal ini memungkinkan pengguna akhir mengetahui bahwa agen memahami permintaan mereka.
Saat intent dicocokkan, dan transisi terjadi, beri tahu pengguna akhir bahwa percakapan sedang berlangsung berdasarkan permintaan mereka. Contoh:
Dialog | Deskripsi |
---|---|
Pengguna akhir: Saya memiliki pertanyaan tentang rekening giro saya. Agen: Baik, apa yang ingin Anda ketahui tentang rekening giro Anda? |
Input pengguna akhir menghasilkan kecocokan intent, dan rute diikuti yang menyertakan pesan fulfillment dan transisi ke halaman yang menangani pertanyaan tentang rekening giro. Perhatikan bahwa agen mengonfirmasi bahwa pengguna akhir ingin mengetahui tentang rekening gironya. |
Setelah pengisian formulir selesai, ulangi data yang diberikan oleh pengguna akhir. Contoh:
Dialog | Deskripsi |
---|---|
Pengguna akhir: Besok Agen: Baik, potong rambut Anda dijadwalkan besok pukul 19.00. Apakah ada hal lain yang bisa saya bantu? |
Pengguna akhir memberikan parameter formulir tanggal, yang merupakan parameter formulir terakhir di halaman aktif. Agen mengonfirmasi waktu dan tanggal potong rambut yang dijadwalkan. |
Memandu percakapan
Agen harus selalu memandu percakapan dengan pengguna akhir. Hal ini mudah dilakukan dengan mengakhiri setiap respons dengan pertanyaan seperti:
- Apakah ada hal lain yang bisa saya bantu?
- Apa yang ingin Anda ketahui tentang beagle?
- Apakah Anda ingin membatalkan atau mengirimkan pesanan tersebut?
- Ada yang bisa saya bantu?
- Apakah Anda bepergian sendiri atau bersama seseorang?
Saat menentukan pertanyaan ini, berhati-hatilah untuk tidak mengajukan beberapa pertanyaan seperti:
- Apakah Anda masih di sana? Layanan apa yang Anda tanyakan?
- Masih ingin memesan ini? Apakah Anda ingin menambahkan sesuatu?
Pengguna akhir mungkin hanya merespons salah satu pertanyaan, dan agen Anda mungkin tidak menangani situasi tersebut dengan benar.
Menangani error dan input pengguna akhir yang tidak terduga
Bagian ini memberikan saran tentang penanganan error dan input pengguna akhir yang tidak terduga.
Membuat pengendali peristiwa untuk peristiwa bawaan
Anda harus membuat pengendali peristiwa untuk peristiwa bawaan sebagaimana berlaku. Menangani peristiwa ini mirip dengan menangkap pengecualian dalam pemrograman software. Bergantung pada situasinya, Anda dapat menangani peristiwa dengan pengendali peristiwa khusus parameter, pengendali peristiwa khusus halaman, atau pengendali peristiwa khusus alur.
Menangani error webhook
Saat layanan webhook gagal, agen Anda harus dapat menangani kegagalan dengan baik. Anda dapat melakukannya dengan menentukan pengendali peristiwa untuk peristiwa bawaan khusus webhook. Berikut adalah pendekatan yang direkomendasikan untuk menangani error webhook:
- Jangan berikan target transisi dari pengelola status yang memicu panggilan webhook, jika tidak, pengelola peristiwa error webhook tidak akan dipanggil. Sebagai gantinya, tetapkan target transisi dalam respons webhook dari layanan webhook.
Pilih halaman tempat penghitung error dapat diinisialisasi ke nol. Halaman ini harus aktif sebelum halaman yang memicu panggilan webhook. Fulfillment entri untuk halaman ini harus melakukan inisialisasi penghitung error ke
0
menggunakan preset parameter fulfillment. Contoh:Parameter Nilai webhook-error-count
0
Buat halaman error webhook yang menangani peristiwa error webhook:
Fulfillment entri harus mengonfirmasi kegagalan untuk pengguna akhir, dan harus menambahkan parameter sesi penghitung error menggunakan preset parameter fulfillment. Contoh:
Parameter Nilai webhook-error-count
$sys.func.ADD($session.params.webhook-error-count, 1)
Tentukan rute kondisi yang memiliki kondisi bahwa jumlah error kurang dari maksimum yang diizinkan. (misalnya,
$session.params.webhook-error-count <= 3
). Rute ini harus memiliki fulfillment yang memberi tahu pengguna akhir bahwa agen akan mencoba lagi. Rute ini harus memiliki target transisi yang ditetapkan ke PREVIOUS_PAGE, atau ke halaman mana pun yang dapat melakukan upaya lain untuk memanggil webhook.Tentukan rute kondisi yang memiliki kondisi bahwa jumlah error lebih besar dari maksimum yang diizinkan (misalnya,
$session.params.webhook-error-count > 3
). Rute ini harus memiliki fulfillment yang memberi tahu pengguna akhir bahwa agen tidak akan mencoba lagi. Rute ini harus memiliki target transisi yang ditetapkan ke halaman yang tidak akan memicu percobaan ulang webhook.
Pengendali peristiwa webhook harus memiliki target transisi yang bertransisi ke halaman error webhook.
Alat
Bagian ini memberikan saran tentang penggunaan alat untuk meningkatkan kualitas desain agen.
Menggunakan alat validasi
Anda harus selalu menggunakan alat validasi untuk memeriksa agen. Alat ini menemukan beberapa masalah yang dijelaskan dalam panduan ini.
Menggunakan fitur kasus pengujian
Anda harus selalu menentukan kasus pengujian untuk agen Anda. Kasus pengujian ini dapat membantu mencegah regresi saat agen Anda berkembang untuk menangani lebih banyak skenario.