Chatbot adalah program komputer yang dirancang untuk mensimulasikan percakapan dengan manusia, baik melalui teks maupun suara. Chatbot banyak digunakan dalam berbagai aplikasi, seperti layanan pelanggan, pemesanan tiket, asisten virtual, dan banyak lagi. Dengan chatbot, interaksi antara manusia dan sistem menjadi lebih alami dan intuitif.
NLU, singkatan dari Natural Language Understanding, adalah cabang dari kecerdasan buatan (AI) yang berfokus pada pemahaman bahasa manusia. NLU memungkinkan komputer untuk “mengerti” maksud di balik teks atau ucapan manusia. Dua komponen kunci dalam NLU adalah intent classification (klasifikasi maksud) dan entity extraction (ekstraksi informasi spesifik).
Rasa NLU adalah framework open-source yang sangat populer untuk membangun chatbot dengan kemampuan NLU yang canggih. Rasa menawarkan fleksibilitas tinggi, mudah dikustomisasi, dan didukung oleh komunitas pengembang yang besar dan aktif. Karena sifatnya yang open-source, Rasa menjadi pilihan menarik bagi banyak pengembang chatbot.
Baca juga: Panduan Lengkap Membuat Chatbot Sederhana dengan Dialogflow
Python adalah bahasa pemrograman yang sangat cocok untuk pengembangan chatbot, terutama jika menggunakan Rasa. Python memiliki sintaks yang mudah dibaca dan dipelajari, serta dilengkapi dengan berbagai library yang kuat untuk pemrosesan bahasa alami (NLP) dan machine learning. Komunitas Python yang besar juga berarti banyak sumber daya dan dukungan yang tersedia. Kirim.ai, sebagai penyedia solusi digital berbasis AI, juga memanfaatkan Python dalam berbagai layanannya, termasuk pengembangan platform dan solusi AI.
Instalasi Rasa NLU dan Dependensinya di Python
Prasyarat
-
Pastikan Python Sudah Terinstal: Rasa NLU membutuhkan Python versi 3.7, 3.8, atau 3.9. Jika Anda belum memiliki Python, unduh dan instal dari situs resmi Python (https://www.python.org/downloads/). Ikuti petunjuk instalasi yang sesuai dengan sistem operasi Anda.
-
Rekomendasikan Penggunaan Virtual Environment: Menggunakan virtual environment sangat disarankan untuk mengisolasi proyek Python Anda dan dependensinya. Ini mencegah konflik antar library dan memudahkan pengelolaan versi. Untuk membuat virtual environment, buka terminal atau command prompt dan jalankan:
python3 -m venv ./venv
Perintah ini akan membuat folder bernama
venv
di direktori saat ini. Untuk mengaktifkan virtual environment:-
Linux/macOS:
source venv/bin/activate
-
Windows:
venv\Scripts\activate
Setelah diaktifkan, prompt terminal Anda akan berubah, menunjukkan bahwa Anda berada di dalam virtual environment.
-
Langkah-langkah Instalasi
-
Instalasi Rasa: Setelah virtual environment aktif, instal Rasa menggunakan
pip
:pip install rasa
Output yang diharapkan:
Collecting rasa Downloading rasa-x.x.x-py3-none-any.whl (y.y MB) ... (proses download dan instalasi) ... Successfully installed rasa-x.x.x ... (daftar dependensi yang terinstal) ...
(Catatan:
x.x.x
dany.y
akan diganti dengan nomor versi aktual). -
Instalasi Spacy (Opsional, tapi Direkomendasikan): Spacy adalah library NLP yang sangat powerful dan sering digunakan bersama Rasa. Instal Spacy dan model bahasa Inggris:
pip install spacy python -m spacy download en_core_web_sm
Output yang diharapkan:
Collecting spacy ... (proses download dan instalasi) Successfully installed spacy-x.x.x ... (proses download model en_core_web_sm) ... ✔ Download and installation successful ✔ Linking successful
Konfigurasi Proyek Rasa
Membuat Proyek Baru
Cara termudah untuk memulai proyek Rasa adalah dengan menggunakan perintah rasa init
. Ini akan membuat struktur proyek dasar dengan file-file konfigurasi yang diperlukan. Jalankan perintah berikut di terminal:
rasa init --no-prompt
Output:
Created project directory at '...'. # Path folder project
Finished creating project structure.
Training an initial model...
... (proses training model awal) ...
Your project is ready to go! ✨
Type 'rasa train' to train a new model.
Opsi --no-prompt
akan membuat proyek dengan konfigurasi default tanpa interaksi pengguna.
Struktur Direktori Proyek
Setelah menjalankan rasa init
, Anda akan mendapatkan struktur direktori seperti ini:
├── actions
│ ├── __init__.py
│ └── actions.py
├── data
│ ├── nlu.yml
│ ├── rules.yml
│ └── stories.yml
├── models
│ └── <nama_model>.tar.gz
├── tests
│ └── test_stories.yml
├── config.yml
├── domain.yml
├── credentials.yml
├── endpoints.yml
actions
: Berisi kode untuk custom actions. Custom actions adalah kode Python yang dapat dijalankan oleh chatbot sebagai respons terhadap input pengguna (misalnya, memanggil API eksternal, melakukan kueri database, dll.).data
: Berisi data training untuk NLU (nlu.yml
), rules (rules.yml
), dan stories (stories.yml
).models
: Tempat model yang telah dilatih disimpan.tests
: Berisi file untuk menguji chatbot.config.yml
: File konfigurasi utama yang menentukan pipeline NLU dan konfigurasi lainnya.domain.yml
: Mendefinisikan intents, entities, slots, responses, dan actions yang digunakan oleh chatbot.credentials.yml
: Berisi informasi kredensial untuk menghubungkan chatbot dengan channel lain (misalnya, Slack, Facebook Messenger, dll.).endpoints.yml
: Berisi konfigurasi untuk endpoints eksternal (misalnya, server action, server NLU, dll.).
File Konfigurasi Utama (config.yml)
File config.yml
adalah tempat Anda menentukan pipeline NLU yang akan digunakan oleh Rasa. Berikut adalah contoh konfigurasi pipeline dasar:
language: en
pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizer
analyzer: char_wb
min_ngram: 1
max_ngram: 4
- name: DIETClassifier
epochs: 100
- name: EntitySynonymMapper
- name: ResponseSelector
epochs: 100
- name: FallbackClassifier
threshold: 0.3
ambiguity_threshold: 0.1
policies:
- name: MemoizationPolicy
- name: RulePolicy
- name: TEDPolicy
max_history: 5
epochs: 100
language
: Menentukan bahasa yang digunakan (dalam contoh ini,en
untuk bahasa Inggris).pipeline
: Mendefinisikan urutan komponen yang digunakan untuk memproses input pengguna. Setiap komponen melakukan tugas tertentu, seperti tokenisasi, ekstraksi fitur, klasifikasi intent, dan ekstraksi entity.WhitespaceTokenizer
: Memisahkan teks menjadi token berdasarkan spasi.RegexFeaturizer
: Membuat fitur berdasarkan pola ekspresi reguler.LexicalSyntacticFeaturizer
: Menambahkan fitur leksikal dan sintaktis.CountVectorsFeaturizer
: Mengubah teks menjadi vektor frekuensi kata.CountVectorsFeaturizer
(kedua): Sama seperti di atas, tetapi menggunakan karakter n-gram (dengananalyzer: char_wb
).DIETClassifier
: Model utama untuk klasifikasi intent dan ekstraksi entity.EntitySynonymMapper
: Memetakan sinonim entity.ResponseSelector
: Memilih respons terbaik berdasarkan intent yang terdeteksi.FallbackClassifier
: Menangani kasus di mana model tidak yakin dengan intent yang terdeteksi.
policies
: Menentukan kebijakan yang digunakan untuk memprediksi tindakan selanjutnya.
Membuat Data Training NLU (data/nlu.yml)
Format Data NLU
Rasa menggunakan format YAML untuk data training NLU. File nlu.yml
berisi contoh-contoh kalimat latihan yang dikelompokkan berdasarkan intent dan dilengkapi dengan informasi entity.
Intents
Intent adalah maksud atau tujuan di balik ucapan pengguna. Contoh intent yang umum:
greet
: Salam (misalnya, “Halo”, “Hai”).goodbye
: Perpisahan (misalnya, “Selamat tinggal”, “Sampai jumpa”).ask_name
: Menanyakan nama (misalnya, “Siapa namamu?”).inform_product
: Memberikan Informasi (misalnya “Saya ingin tahu tentang produk A”).
Contoh definisi intent dalam nlu.yml
:
version: "3.1"
nlu:
- intent: greet
examples: |
- Halo
- Hai
- Selamat pagi
- Selamat siang
- Pagi
- Siang
- intent: goodbye
examples: |
- Selamat tinggal
- Sampai jumpa
- Dadah
- Bye
- intent: ask_name
examples: |
- Siapa namamu?
- Nama kamu siapa?
- Boleh tahu namamu?
Entities
Entity adalah informasi spesifik yang relevan dalam intent. Contoh entity:
product
: Nama produk (misalnya, “Laptop X”, “Smartphone Y”).location
: Lokasi (misalnya, “Jakarta”, “Surabaya”).-
date
: Tanggal (misalnya, 18 Mei 2025)
Contoh definisi entity dalam nlu.yml
:
version: "3.1"
nlu:
- intent: inform_product
examples: |
- Saya ingin tahu tentang [Laptop X](product)
- Berapa harga [Smartphone Y](product)?
- Apakah [Tablet Z](product) tersedia di [Jakarta](location)?
- Kapan [Laptop X](product) tersedia di [Surabaya](location) tanggal [18 Mei 2025](date)?
- intent: greet
examples: |
- Halo
- Hai
- Selamat pagi
- Selamat siang
- Pagi
- Siang
- intent: goodbye
examples: |
- Selamat tinggal
- Sampai jumpa
- Dadah
- Bye
- intent: ask_name
examples: |
- Siapa namamu?
- Nama kamu siapa?
- Boleh tahu namamu?
Dalam contoh di atas, entity ditandai dengan kurung siku []
dan nama entity di dalam kurung biasa ()
.
Contoh Data yang Cukup
Penting untuk menyediakan data training yang cukup dan bervariasi untuk setiap intent dan entity. Sebagai aturan umum, usahakan minimal 10-15 contoh kalimat latihan untuk setiap intent. Semakin banyak dan bervariasi data, semakin baik model NLU Anda dalam mengenali berbagai macam input pengguna.
Melatih Model NLU Rasa
Perintah Training
Untuk melatih model NLU, gunakan perintah rasa train nlu
. Perintah ini akan membaca data training dari data/nlu.yml
dan konfigurasi dari config.yml
, kemudian melatih model dan menyimpannya di direktori models
.
rasa train nlu
Output:
2025-05-18 14:00:00 INFO rasa.model_training - Training NLU model...
2025-05-18 14:00:05 INFO rasa.nlu.model - Finished training component 'WhitespaceTokenizer'.
... (output training untuk setiap komponen) ...
2025-05-18 14:01:00 INFO rasa.model_training - NLU model training completed.
2025-05-18 14:01:00 INFO rasa.model_training - Model trained.
2025-05-18 14:01:00 INFO rasa.model - Model saved at 'models/nlu-20250518-140100.tar.gz'. # Path tempat model tersimpan
Parameter Training (Opsional)
Anda dapat menambahkan beberapa parameter opsional saat training, seperti:
--num-threads <jumlah_thread>
: Mengatur jumlah thread yang digunakan saat training. Ini dapat mempercepat proses training pada mesin dengan banyak core.--augmentation <faktor_augmentasi>
: Mengaktifkan augmentasi data, yang dapat membantu meningkatkan generalisasi model.
Contoh:
rasa train nlu --num-threads 4 --augmentation 50
Menguji Chatbot Rasa
Berinteraksi dengan Chatbot
Setelah model NLU dilatih, Anda dapat berinteraksi dengan chatbot melalui command-line interface menggunakan perintah rasa shell
:
rasa shell
Output:
2025-05-18 14:15:00 INFO root - Connecting to channel 'cmdline' which was specified by the '--connector' argument.
2025-05-18 14:15:00 INFO root - Rasa server is up and running.
Bot loaded. Type a message and press enter (use '/stop' to exit):
Your input ->
Anda dapat mengetikkan pesan dan menekan Enter untuk melihat respons chatbot.
Contoh Percakapan
Berikut adalah beberapa contoh percakapan dengan chatbot:
Contoh 1:
Your input -> Halo
Bot: Halo! Ada yang bisa saya bantu?
Contoh 2:
Your input -> Berapa harga Laptop X?
Bot: Sebentar, saya cek dulu harga Laptop X.
Contoh 3:
Your input -> Apakah Smartphone Y tersedia di Jakarta?
Bot: Ya, Smartphone Y tersedia di Jakarta.
Contoh 4 (di luar data training):
Your input -> Pagi!
Bot: Halo! Ada yang bisa saya bantu? (model berhasil menggeneralisasi "Pagi" sebagai salam)
Mengatasi Masalah Umum (Troubleshooting)
Error saat Instalasi
-
Masalah:
ERROR: Could not find a version that satisfies the requirement ...
Solusi:
- Pastikan Anda menggunakan versi Python yang didukung (3.7, 3.8, atau 3.9).
- Periksa koneksi internet Anda.
- Coba upgrade
pip
:pip install --upgrade pip
. - Jika menggunakan virtual environment, pastikan virtual environment sudah aktif.
-
Masalah:
ERROR: Failed building wheel for ...
Solusi:
- Beberapa library mungkin memerlukan compiler C++. Pastikan Anda memiliki build tools yang sesuai untuk sistem operasi Anda (misalnya, Visual Studio Build Tools untuk Windows, Xcode untuk macOS,
build-essential
untuk Linux).
- Beberapa library mungkin memerlukan compiler C++. Pastikan Anda memiliki build tools yang sesuai untuk sistem operasi Anda (misalnya, Visual Studio Build Tools untuk Windows, Xcode untuk macOS,
Error saat Training
-
Masalah:
rasa.shared.exceptions.FileIOException: Failed to read file ...
Solusi:
- Periksa apakah file yang disebutkan (misalnya,
nlu.yml
,config.yml
) ada di lokasi yang benar. - Periksa apakah file tersebut memiliki format YAML yang valid. Anda dapat menggunakan online YAML validator untuk memeriksa.
- Periksa apakah file yang disebutkan (misalnya,
-
Masalah:
rasa.engine.exceptions.GraphComponentException: Error running graph component for node train_...
Solusi:
- Pastikan
config.yml
anda benar, cek kembali pipeline yang anda gunakan. - Hapus folder
models
, lalu lakukan training ulang.
- Pastikan
Chatbot Tidak Merespon dengan Benar
-
Masalah: Chatbot tidak mengenali intent atau entity dengan benar.
Solusi:
- Periksa kembali data training Anda (
nlu.yml
). Pastikan intent dan entity sudah didefinisikan dengan benar dan memiliki contoh yang cukup. - Tambahkan lebih banyak data training yang bervariasi.
- Sesuaikan parameter pada pipeline NLU di
config.yml
. Anda mungkin perlu mencoba berbagai kombinasi komponen dan parameter untuk mendapatkan hasil terbaik. - Lakukan fine-tuning model.
Baca juga: Multilayer Perceptron (MLP) Panduan Lengkap untuk Pemula
- Periksa kembali data training Anda (
Kesimpulan
Anda telah mempelajari cara membuat chatbot sederhana dengan Rasa NLU dan Python, mulai dari instalasi, konfigurasi, pembuatan data training, melatih model, hingga menguji chatbot. Ini adalah langkah awal dalam membangun chatbot yang lebih kompleks. Anda dapat mengembangkan kemampuan chatbot lebih lanjut dengan:
- Menambahkan stories untuk mengelola alur percakapan yang lebih panjang.
- Menggunakan custom actions untuk berinteraksi dengan sistem eksternal.
- Mengintegrasikan chatbot dengan channel lain seperti Slack, Facebook Messenger, dll.
- Menggunakan Rasa X untuk debugging, testing, dan deployment yang lebih mudah.
Untuk informasi lebih lanjut, kunjungi dokumentasi resmi Rasa: https://rasa.com/docs/rasa/.
Baca juga: Panduan Lengkap Karir AI 2025: Tips, Trik, dan Lowongan
Kirim.ai menawarkan solusi lengkap untuk kebutuhan pengembangan chatbot dan solusi AI lainnya. Dari pengembangan aplikasi mobile (iOS & Android) hingga pengembangan website dan strategi pemasaran digital, Kirim.ai siap membantu Anda. Pelajari lebih lanjut tentang bagaimana Kirim.ai dapat membantu bisnis Anda.
Tanggapan (0 )