Praktik terbaik desain agen umum

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 Dialogflow CX.

Saran umum

Membangun agen secara iteratif

Jika agen Anda akan berukuran besar atau kompleks, mulailah dengan membuat dialog yang hanya menangani permintaan tingkat atas. Setelah struktur dasar dibuat, lakukan iterasi pada jalur percakapan untuk memastikan Anda mencakup semua kemungkinan rute yang mungkin diambil pengguna akhir.

Saat agen Anda berkembang, pertimbangkan untuk menggunakan fitur kasus pengujian untuk pengembangan berbasis pengujian.

Agen bawaan

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 segera membangun agen yang berfungsi.

Integrasi dan menghubungkan layanan Anda

Ada beberapa cara untuk berintegrasi dengan agen Dialogflow CX. Bagian ini memberikan praktik terbaik untuk memilih cara berintegrasi.

Integrasi

Integrasi Dialogflow CX menyediakan antarmuka pengguna yang siap digunakan untuk agen Anda. Jika menggunakan integrasi, Anda tidak perlu memanggil Dialogflow CX API secara langsung, karena integrasi akan menanganinya untuk Anda. Integrasi ini dapat menyediakan agen teks yang dapat Anda sematkan di situs, hubungkan dengan platform pesan lain, atau menyediakan antarmuka telepon.

Dialogflow CX API

Jika tidak ada integrasi siap pakai yang sesuai, atau Anda ingin menyesuaikan antarmuka untuk sistem Anda, Anda dapat menggunakan 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 webhook untuk menghubungkan layanan dan menyediakan agen yang dapat menangani skenario dinamis. Hal ini berlaku baik jika Anda menggunakan integrasi maupun Dialogflow CX API.

Referensi agen

Resource agen Dialogflow CX dapat digunakan dalam berbagai 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 pada 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 yang kompleks hampir selalu lebih baik dirancang dengan 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 setelannya sendiri, dan dapat dimiliki oleh sebagian anggota tim, yang membantu membagi pekerjaan saat mendesain agen besar.

Saat mendesain agen yang 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 batas alur dan halaman, mungkin karena Anda memiliki terlalu banyak logika bisnis yang dibangun ke dalam agen itu sendiri. Pertimbangkan untuk memindahkan logika ini ke webhook.

Berikut adalah daftar perincian kontrol percakapan resource agen dalam urutan perincian yang meningkat:

  1. Agen (satu agen menangani semua percakapan)
  2. Alur (satu alur menangani satu atau beberapa topik percakapan terkait)
  3. Halaman (satu halaman menangani satu atau beberapa giliran percakapan terkait)
  4. Rute (satu rute menangani niat 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 untuk mengumpulkan informasi tertentu dari pengguna akhir. Misalnya, halaman dapat didesain 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 beralih dari satu halaman ke halaman lain. Misalnya, jika pengguna akhir meminta produk tertentu di awal percakapan, Anda ingin menangkap produk yang diinginkan sambil beralih ke halaman pesanan yang sesuai. Dalam hal ini, gunakan parameter intent sebagai bagian dari rute intent.

Ada juga situasi saat penggunaan parameter intent dan parameter formulir merupakan hal yang ideal. Misalnya, jika pengguna akhir meminta kemeja kecil di awal percakapan, Anda ingin menangkap parameter ukuran yang diinginkan (kecil) saat beralih ke halaman pesanan kemeja. Halaman pesanan kaus mungkin meminta informasi tambahan, seperti warna yang diinginkan. Halaman pemesanan kaus harus memiliki parameter formulir untuk ukuran dan warna. Dalam contoh ini, parameter ukuran telah diberikan dan disebarkan, sehingga agen hanya akan meminta warna. Namun, percakapan lain mungkin mengikuti jalur yang berbeda, yaitu pengguna akhir belum memberikan ukuran yang diinginkan saat halaman pesanan kemeja 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 beralih ke halaman lain, mengantrekan pesan respons, atau memanggil webhook saat intent dicocokkan atau kondisi terpenuhi, gunakan rute.

Jika Anda menggunakan serangkaian 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 mendapati diri Anda menentukan beberapa intent dengan frasa pelatihan yang mirip, 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 didefinisikan sebagai intent yang dapat digunakan kembali. Intent confirmation.yes dapat memiliki frasa pelatihan seperti:

  • ya
  • ya
  • yup
  • oke
  • iya
  • tentu saja
  • absolutely
  • iya, tolong ya

Intent confirmation.no dapat memiliki frasa pelatihan seperti:

  • tidak
  • nggak deh
  • tidak
  • tidak mungkin
  • saya tidak suka
  • 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:

  • pesanannya sudah benar
  • Saya menerima pesanan ini

Dan, 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 setiap konfirmasi umum atau spesifik dari pengguna akhir akan ditangani dengan tepat.

Intent negatif default

Anda harus mengisi default negative intent dengan frasa yang mungkin diucapkan oleh 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 akan dikirim ke pengguna akhir di akhir giliran percakapan. Bagian ini menjelaskan setiap opsi untuk membuat pesan individual.

  • Fulfillment entri halaman: Fulfillment ini dipanggil saat halaman pertama kali aktif. Hal ini berguna saat Anda menginginkan pesan yang menjelaskan tujuan halaman, dan hanya boleh diucapkan sekali saat halaman aktif. Misalnya:
    • Apa yang ingin Anda ketahui tentang rekening giro Anda?
    • Jenis produk apa yang ingin Anda beli?
    • Saya 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. (pencocokan intent)
    • Yakin ingin membeli 300 kaus? (kondisi perbandingan terpenuhi)
    • Oke, janji temu Anda dijadwalkan besok pagi pukul 07.00. (penyelesaian pengisian formulir)
    • Oke, sekarang mari kita bahas aardvark. (transisi)
  • Pengendali peristiwa: Fulfillment ini dipanggil saat peristiwa dipanggil. Hal ini berguna saat Anda menginginkan pesan yang merespons peristiwa. Misalnya:
    • Saham yang Anda pertimbangkan untuk dibeli baru saja naik nilainya sebesar 10%. (peristiwa kustom)
    • Bisakah Anda menyusun ulang pertanyaan Anda? (peristiwa tidak cocok)
  • Perintah awal untuk formulir: Fulfillment ini dipanggil saat agen melakukan pengisian formulir. Pesan ini harus mengajukan pertanyaan spesifik kepada pengguna akhir. Setiap parameter formulir memiliki fulfillment perintah awal sendiri. Misalnya:
    • Berapa ukuran kemeja yang Anda inginkan?
    • Apa warna kemeja yang Anda inginkan?
  • Pengendali reprompt untuk formulir: Fulfillment ini dipanggil saat agen melakukan pengisian formulir, dan tidak memahami pilihan pengguna akhir untuk parameter saat ini. Fulfillment ini hanya diperlukan jika Anda ingin pesan reprompt berbeda dengan pesan perintah awal. Jika tidak ada pengendali reprompt, agen hanya akan menggunakan perintah awal sebagai pesan reprompt. Misalnya:
    • Saya tidak mengerti. Can you please supply a valid color for the shirt?

Penamaan

Bagian ini memberikan saran untuk memberi nama resource agen.

Penamaan intent

Jika agen Anda memiliki banyak intent, sebaiknya pertimbangkan skema penamaan yang membantu Anda mengaturnya. Nama intent biasanya disegmentasikan dengan tanda baca, dengan tingkat spesifisitas 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 dalam pengendali status memberikan kontrol atas percakapan dengan mengubah halaman aktif. Bagian ini memberikan saran untuk mengatur transisi agen Anda.

Transisi gratis

Saat menentukan rute yang memicu transisi, pertimbangkan bahwa mungkin ada rute pelengkap atau inversi.

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.

Menentukan minimal 20 frasa pelatihan

Anda harus memiliki minimal 20 frasa pelatihan untuk setiap intent. Jika tidak, model NLU mungkin tidak memiliki cukup informasi untuk mencocokkan intent Anda dengan tepat. Ini adalah panduan minimum. Idealnya, Anda harus menentukan lebih banyak, terutama untuk intent utama agen besar, dengan jumlah yang diinginkan sekitar 50.

Waspadai bias niat

Jika satu atau beberapa intent memiliki frasa pelatihan yang jauh lebih banyak daripada intent lainnya, model NLU akan bias ke arah intent yang lebih besar akibat data yang tidak seimbang. Bias intent ini dapat terjadi jika kuantitas frasa pelatihan berbeda hingga satu tingkat besaran atau lebih.

Dalam beberapa kasus, perilaku ini diinginkan, karena Anda mungkin menentukan beberapa intent yang harus dicocokkan lebih sering daripada intent lainnya, karena sesuai dengan input pengguna akhir yang lebih sering diamati dalam traffic aktif.

Dalam kasus lain, perilaku ini mungkin tidak diinginkan karena Anda tidak menghendaki bias ke arah intent yang lebih besar itu. Jika benar demikian, kurangi jumlah frasa pelatihan untuk intent yang lebih besar tersebut agar memiliki tingkat besaran yang sama dengan intent lainnya. Contoh:

Frasa pelatihan Intent A Frasa pelatihan Intent B Bias untuk intent B
20 50 Tidak
20 200 Mungkin buka
20 2000 Ya

Penggunaan entity dan jumlah frasa pelatihan

Untuk semua jenis entity yang digunakan dalam intent:

  • Anotasikan setiap contoh jenis entity.
  • Untuk setiap jenis entity, berikan minimal lima frasa pelatihan yang berisi contoh yang dianotasi.
  • Berikan frasa pelatihan setidaknya tiga kali lebih banyak daripada jenis entity. Misalnya, jika Anda menggunakan 10 jenis entity yang berbeda untuk anotasi dalam sebuah intent, Anda harus memiliki setidaknya 30 frasa pelatihan.

Frasa pelatihan harus alami

Frasa pelatihan harus bersifat percakapan dan alami; frasa tersebut harus sesuai dengan apa yang sebenarnya diucapkan orang. Jika memungkinkan, gunakan input pengguna akhir yang telah terjadi dalam produksi sebagai data pelatihan Anda, dengan memberikan perhatian khusus pada input yang paling umum.

Variasi frasa pelatihan yang diperlukan

Sertakan variasi pertanyaan, perintah, kata kerja, dan sinonim untuk kata benda umum guna memastikan frasa Anda mencakup berbagai kemungkinan permintaan.

Sebaiknya sertakan beberapa frasa pendek seperti "bayar tagihan saya", juga frasa dan kalimat yang lebih panjang seperti "Saya baru menerima email yang menyatakan bahwa saya harus membayar saldo tagihan saya". Tidak ada rasio frasa pendek/frase panjang yang direkomendasikan, tetapi Anda harus mendasarkan proporsi ini pada input pengguna akhir sebenarnya yang dikirim ke agen dalam produksi.

Menentukan frasa pelatihan yang bervariasi dalam panjang, pemilihan kata, dan struktur kalimat penting untuk memastikan pelatihan yang baik bagi agen Anda. Anda tidak perlu menambahkan variasi hanya demi variasi, tetapi Anda perlu memberikan variasi yang cukup agar model NLU dapat berhasil mendeteksi intent pengguna akhir dari berbagai input pengguna akhir. Jika Anda tidak memiliki variasi yang memadai, ada risiko overfitting. Dengan kata lain, ada bahaya bahwa model akan terlalu terkait erat dengan contoh tertentu yang Anda berikan dan tidak akan digeneralisasi secara memadai ke contoh lain.

Variasi kapitalisasi

Sensitivitas penggunaan huruf kapital 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 hal kapitalisasi. Hal ini biasanya berlaku untuk situasi saat Anda mengharapkan pengguna akhir memberikan input teks dalam huruf besar semua.

Pendekatan alternatif dapat berupa:

  • Menurunkan batas klasifikasi ML
  • Mengubah input pengguna akhir menjadi huruf kecil sebelum mengirimkannya ke Dialogflow CX.

NLU Lanjutan

Tidak seperti model NLU standar, model NLU lanjutan peka terhadap huruf besar/kecil. Sebaiknya uji dan tambahkan data pelatihan yang relevan dengan huruf kapital untuk meningkatkan rasio kecocokan niat.

Variasi frasa pelatihan yang tidak perlu

Hindari variasi yang tidak penting dalam frasa pelatihan, karena variasi tersebut memberikan informasi duplikat ke model NLU. Misalnya, jangan sertakan varian yang hanya berbeda dalam hal:

  • Kapitalisasi: Jika Anda menggunakan model NLU standar, hindari frasa duplikat seperti "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 kecocokan intent. Lihat bagian variasi kapitalisasi untuk mengetahui detailnya.
  • Kata pengisi: Misalnya, "oke, pesan tiket" dan "pesan tiket".
  • Tanda baca: Misalnya, "bisa tolong bantu?" dan "bisa tolong bantu!?"

Konsistensi anotasi

Bagian frasa pelatihan yang dipilih untuk anotasi harus mencakup semua, dan tidak lebih dari, teks yang diperlukan untuk mencocokkan entity. 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:

Kondisi Buruk
Keberangkatan 7 September Keberangkatan 7 September
Berangkat pada 4 Juli Berangkat pada 4 Juli

Menggunakan anotasi yang bermakna secara semantik untuk entity sistem

Arti semantik dari bagian frasa pelatihan yang dipilih untuk anotasi dapat dipengaruhi oleh teks lainnya dalam frasa pelatihan. Contoh:

Frasa pelatihan yang dianotasi Makna semantik teks yang dianotasi
Saya berusia 7 tahun Usia seseorang
Kontrak ini berlaku selama 7 tahun Durasi waktu

Model machine learning Dialogflow CX mempertimbangkan makna semantik saat mencocokkan entity sistem. Makna semantik dari bagian frasa pelatihan harus cocok dengan makna semantik yang dimaksud dari entity sistem.

Misalnya, jangan gunakan entity sistem @sys.duration untuk anotasi contoh "7 tahun" pertama di atas. Makna semantik "7 tahun" tidak cocok dengan durasi waktu yang sederhana. Sebagai gantinya, Anda harus memilih "7" untuk anotasi dan menggunakan entity sistem @sys.number.

Menentukan intent untuk menangani jawaban pengisian formulir yang tidak sesuai

Pertimbangkan untuk menentukan intent guna menangani jawaban pengisian formulir yang tidak sesuai. 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 tersebut dengan baik.

Menghindari @sys.any

Hindari penggunaan jenis entity sistem @sys.any. Entity ini hanya boleh digunakan jika Anda telah benar-benar mencoba semua cara, termasuk membangun entity kustom. Jenis entity 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.

Penggunaan @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 entity dalam frasa tersebut. Anda tidak boleh secara konsisten menggunakan contoh entity yang sama untuk anotasi. Contoh berikut menunjukkan anotasi yang baik dan buruk untuk jenis entity produk:

Kondisi Buruk
Saya ingin membeli kemeja Saya ingin membeli kemeja
Pesan topi baru Memesan kemeja baru
Tambahkan jam tangan ke keranjang saya Tambahkan kaus ke keranjang saya

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 item yang memungkinkan.

Menghindari entitas yang cocok secara agresif

Jangan tentukan 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.

Entity peta dan daftar harus berfokus pada nilai yang berbeda

Jenis entity 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, mungkin karena frasa pelatihan intent lebih cocok untuk 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 tindakan Jenis entity rencana
"Bagaimana cara melakukan panggilan internasional" "Plan A"
"Menggunakan roaming data internasional" "Plan B"

Sebagai gantinya, Anda harus menggunakan frasa pelatihan dan pencocokan intent untuk menangkap tindakan dan entity untuk menangkap rencana.

Menggunakan entity ekspresi reguler untuk menangkap ID non-kata

Saat menangkap input pengguna akhir yang melibatkan ID non-kata, Anda harus menggunakan entity ekspresi reguler. Misalnya, untuk mengambil ID produk seperti "AA-256" atau "AC-436", gunakan entity ekspresi reguler seperti "[A-Z]{2}-\d{3}".

Menghindari penyusunan bertingkat entity gabungan

Jangan gunakan lebih dari satu tingkat penyusunan bertingkat dalam entity gabungan. Setiap tingkat penyusunan bertingkat akan menurunkan kualitas secara signifikan.

Menghindari intent yang serupa

Setiap intent harus menangkap niat pengguna akhir. Jika Anda menentukan intent yang berbeda dengan frasa pelatihan yang mirip, 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 maksud yang sama, keduanya harus termasuk dalam intent yang sama. Misalnya, "ubah tanggal jatuh tempo tagihan saat ini" dan "perpanjang waktu pembayaran" 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 termasuk dalam intent yang berbeda, karena pengguna akhir menginginkan hal yang berbeda dalam setiap kasus.

Menghindari jenis entity yang serupa

Sebaiknya hindari menentukan 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 pasti 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 menjadi opsi terbaik. Jika Anda melakukan ini berkali-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 tersebut.
  • Jika intent yang seharusnya tidak cocok 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 emotikon, yang berfungsi seperti yang diharapkan.

Hindari kata pengisi

Kata pengisi adalah kata yang dapat Anda abaikan dan Anda masih dapat memahami teksnya. Contoh:

  • memohon
  • bisa tolong
  • hmmm
  • bagaimana dengan

Penggunaan kata pengisi dalam frasa pelatihan tidak diperlukan, tetapi tidak berbahaya, karena kata-kata ini diabaikan oleh model NLU. Namun, Anda tidak boleh menentukan frasa pelatihan yang hanya bervariasi berdasarkan kata pengisi.

Jangan pernah menentukan entity yang terdiri dari kata pengisi.

Bereksperimen dengan setelan ML

Setelan ML dapat digunakan untuk menyesuaikan cara input pengguna akhir diproses. Pada umumnya, setelan default berfungsi dengan baik. Namun, Anda mungkin ingin menyesuaikan setelan untuk meningkatkan performa agen.

Merespons pengguna akhir

Bagian ini memberikan panduan untuk menggunakan fulfillment dalam merespons pengguna akhir.

Menyambut pengguna akhir

Agen yang baru dibuat memiliki rute intent yang dibuat secara otomatis untuk intent 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.

Menyatakan informasi pengguna akhir

Sebaiknya ulangi informasi yang diberikan oleh pengguna akhir dalam respons. Hal ini memberi tahu pengguna akhir 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: Oke, apa yang ingin Anda ketahui tentang rekening giro Anda?
Input pengguna akhir menghasilkan kecocokan intent, dan rute yang diikuti mencakup pesan fulfillment dan transisi ke halaman yang menangani pertanyaan rekening giro. Perhatikan bahwa agen mengonfirmasi bahwa pengguna akhir ingin mengetahui rekening gironya.

Setelah pengisian formulir selesai, ulangi data yang diberikan oleh pengguna akhir. Contoh:

Dialog Deskripsi
Pengguna akhir: Besok
Agen: Oke, potong rambut Anda dijadwalkan besok pukul 19.00. Ada hal lain yang dapat kami bantu?
Pengguna akhir memberikan parameter formulir tanggal, yang merupakan parameter formulir terakhir di halaman aktif. Agen mengonfirmasi waktu dan tanggal potong rambut yang dijadwalkan.

Pandu percakapan

Agen harus selalu memandu percakapan dengan pengguna akhir. Hal ini dapat dilakukan dengan mudah dengan mengakhiri setiap respons dengan pertanyaan seperti:

  • Ada hal lain yang dapat kami 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 menghindari pertanyaan ganda seperti:

  • Anda masih di sini? Layanan apa yang Anda tanyakan?
  • Apakah Anda masih menginginkan pesanan 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 cara menangani error dan input pengguna akhir yang tidak terduga.

Membuat pengendali peristiwa untuk peristiwa bawaan

Anda harus membuat pengendali peristiwa untuk peristiwa bawaan sebagaimana mestinya. Penanganan peristiwa ini mirip dengan menangkap pengecualian dalam pemrograman software. Bergantung pada situasinya, Anda mungkin ingin menangani peristiwa dengan handler peristiwa spesifik per parameter, handler peristiwa spesifik per halaman, atau handler peristiwa spesifik per alur.

Menangani error webhook

Jika layanan webhook Anda gagal, penting bagi agen Anda untuk menangani kegagalan tersebut dengan baik. Anda dapat melakukannya dengan menentukan pengendali peristiwa untuk peristiwa bawaan khusus webhook. Berikut adalah pendekatan yang direkomendasikan untuk menangani error webhook:

  • Jangan menyediakan target transisi dari pengendali status yang memicu panggilan webhook, jika tidak, pengendali 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 menginisialisasi 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 bagi pengguna akhir, dan harus meningkatkan 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 jumlah 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 jumlah 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 desain agen.

Menggunakan alat validasi

Anda harus selalu menggunakan alat validasi untuk memeriksa agen Anda. 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.