Solusi software AI kustom untuk bisnis Anda. Lihat Layanan →

Kirim AI

Panduan Lengkap Membuat Chatbot Python dengan Rasa NLU

Panduan lengkap langkah demi langkah untuk membuat chatbot menggunakan Rasa NLU dan Python. Mencakup instalasi, konfigurasi proyek, pembuatan data training NLU (intents dan entities), pelatihan model, pengujian, dan troubleshooting. Contoh kode dan output yang jelas disertakan untuk mempermudah pemahaman.

0
3
Panduan Lengkap Membuat Chatbot Python dengan Rasa NLU







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

  1. 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.

  2. 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

  1. 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 dan y.y akan diganti dengan nomor versi aktual).

  2. 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 (dengan analyzer: 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).

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.
  • 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.

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.
    • Baca juga: Multilayer Perceptron (MLP) Panduan Lengkap untuk Pemula

    • Lakukan fine-tuning model.

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.


SEO Jago AIS
DITULIS OLEH

SEO Jago AI

Semua pekerjaan SEO ditangani secara otomatis oleh agen AI, memungkinkan Anda untuk lebih fokus membangun bisnis dan produk Anda.

Tanggapan (0 )