AI Automation #chatbot #python #nlp #ai-project #openai #tutorial #pemulai

Proyek AI Pertama: Membuat Chatbot Sederhana dengan Python

Tutorial praktis membuat chatbot AI pertama kamu! Dari rule-based sampai AI-powered menggunakan Python, NLTK, dan OpenAI API. Cocok untuk pemula!

AI Content Hub Β· 29 Maret 2026

Proyek AI Pertama: Membuat Chatbot Sederhana dengan Python πŸ’¬πŸ€–

Setelah belajar teori AI, saatnya praktek! Chatbot adalah project AI yang sempurna untuk pemulaβ€”nggak terlalu kompleks tapi bikin paham konsep NLP dan conversational AI. Yuk, bikin chatbot pertama kamu!

Level 1: Rule-Based Chatbot (Mudah)

Cara paling sederhana: pattern matching dengan respons yang sudah ditentukan.

Setup

pip install nltk

Kode

import re
import random

class SimpleChatbot:
    def __init__(self):
        self.patterns = {
            r'\b(halo|hi|hey)\b': [
                "Halo! Ada yang bisa saya bantu?",
                "Hi! Senang bertemu denganmu!",
                "Hey! Mau ngobrol tentang apa?"
            ],
            r'\b(nama|namamu)\b': [
                "Saya adalah BotPintar, asisten virtual kamu!",
                "Panggil saja Bot. Saya di sini untuk membantu!"
            ],
            r'\b(apa kabar|how are you)\b': [
                "Saya baik-baik saja! Kamu gimana?",
                "Luar biasa! Siap membantu kamu hari ini."
            ],
            r'\b(bantu|help|bantuan)\b': [
                "Saya bisa jawab pertanyaan dasar atau ngobrol santai. Coba tanya!",
                "Tentu! Ada topik spesifik yang ingin dibahas?"
            ],
            r'\b(terima kasih|thanks|makasih)\b': [
                "Sama-sama! Senang bisa membantu.",
                "Dengan senang hati! Ada lagi yang bisa dibantu?"
            ],
            r'\b(dadah|bye|selamat tinggal)\b': [
                "Dadah! Sampai jumpa lagi!",
                "Selamat tinggal! Semoga harimu menyenangkan!"
            ]
        }
        
        self.fallback = [
            "Maaf, saya belum mengerti. Bisa dijelaskan dengan cara lain?",
            "Hmm, bisa ulangi dengan kata-kata berbeda?",
            "Saya masih belajar. Coba tanya yang lebih spesifik!"
        ]
    
    def get_response(self, user_input):
        user_input = user_input.lower()
        
        for pattern, responses in self.patterns.items():
            if re.search(pattern, user_input):
                return random.choice(responses)
        
        return random.choice(self.fallback)

# Jalankan chatbot
bot = SimpleChatbot()

print("πŸ€– BotPintar: Halo! Saya BotPintar. Ketik 'exit' untuk keluar.")

while True:
    user_input = input("\nπŸ‘€ Kamu: ")
    
    if user_input.lower() in ['exit', 'quit', 'keluar']:
        print("πŸ€– BotPintar: Dadah! πŸ‘‹")
        break
    
    response = bot.get_response(user_input)
    print(f"πŸ€– BotPintar: {response}")

Contoh Percakapan

πŸ€– BotPintar: Halo! Saya BotPintar. Ketik 'exit' untuk keluar.

πŸ‘€ Kamu: halo
πŸ€– BotPintar: Hey! Mau ngobrol tentang apa?

πŸ‘€ Kamu: namamu siapa?
πŸ€– BotPintar: Panggil saja Bot. Saya di sini untuk membantu!

πŸ‘€ Kamu: terima kasih ya
πŸ€– BotPintar: Sama-sama! Senang bisa membantu.

Level 2: Intent-Based Chatbot (Menengah)

Menggunakan NLP untuk mengenali β€œintent” (maksud) di balik pesan.

Setup

pip install scikit-learn

Kode

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
import numpy as np

class IntentChatbot:
    def __init__(self):
        # Training data: (text, intent)
        training_data = [
            ("halo", "greeting"),
            ("hi", "greeting"),
            ("selamat pagi", "greeting"),
            ("hey there", "greeting"),
            ("terima kasih", "thanks"),
            ("thanks", "thanks"),
            ("makasih banyak", "thanks"),
            ("selamat tinggal", "goodbye"),
            ("dadah", "goodbye"),
            ("sampai jumpa", "goodbye"),
            ("bantu saya", "help"),
            ("aku butuh bantuan", "help"),
            ("tolong", "help"),
        ]
        
        texts, intents = zip(*training_data)
        
        # Create pipeline
        self.pipeline = Pipeline([
            ('tfidf', TfidfVectorizer()),
            ('classifier', MultinomialNB())
        ])
        
        # Train
        self.pipeline.fit(texts, intents)
        
        # Response mapping
        self.responses = {
            'greeting': ["Halo!", "Hi!", "Selamat datang!"],
            'thanks': ["Sama-sama!", "Dengan senang hati!", "Tidak masalah!"],
            'goodbye': ["Dadah!", "Sampai jumpa!", "Semoga harimu menyenangkan!"],
            'help': ["Saya siap membantu!", "Ada apa? Ceritakan masalahmu."]
        }
    
    def get_response(self, user_input):
        intent = self.pipeline.predict([user_input])[0]
        confidence = np.max(self.pipeline.predict_proba([user_input]))
        
        if confidence > 0.5 and intent in self.responses:
            return random.choice(self.responses[intent])
        else:
            return "Maaf, saya belum mengerti. Bisa dijelaskan lebih spesifik?"

# Jalankan
bot = IntentChatbot()
print("πŸ€– BotNLP: Halo! Saya chatbot pintar (v2). Ketik 'exit' untuk keluar.")

while True:
    user_input = input("\nπŸ‘€ Kamu: ")
    if user_input.lower() in ['exit', 'quit']:
        break
    response = bot.get_response(user_input)
    print(f"πŸ€– BotNLP: {response}")

Level 3: AI-Powered Chatbot (Advanced)

Menggunakan OpenAI API untuk respons yang natural dan kontekstual.

Setup

pip install openai

Kode

import openai

class AIChatbot:
    def __init__(self, api_key):
        openai.api_key = api_key
        self.conversation_history = [
            {"role": "system", "content": "Kamu adalah asisten AI yang ramah dan membantu. Jawab dalam Bahasa Indonesia yang santai."}
        ]
    
    def get_response(self, user_input):
        # Add user message
        self.conversation_history.append(
            {"role": "user", "content": user_input}
        )
        
        # Get response from GPT
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=self.conversation_history,
            max_tokens=150,
            temperature=0.7
        )
        
        assistant_message = response.choices[0].message.content
        
        # Add to history
        self.conversation_history.append(
            {"role": "assistant", "content": assistant_message}
        )
        
        # Keep only last 10 messages to save tokens
        if len(self.conversation_history) > 11:
            self.conversation_history = [self.conversation_history[0]] + self.conversation_history[-10:]
        
        return assistant_message

# Jalankan (ganti dengan API key kamu)
# bot = AIChatbot("your-api-key-here")
# print("πŸ€– BotAI: Halo! Saya AI Assistant. Ketik 'exit' untuk keluar.")
# 
# while True:
#     user_input = input("\nπŸ‘€ Kamu: ")
#     if user_input.lower() in ['exit', 'quit']:
#         break
#     response = bot.get_response(user_input)
#     print(f"πŸ€– BotAI: {response}")

Level 4: Chatbot dengan Web Interface

Bikin chatbot yang bisa diakses via browser menggunakan Flask.

from flask import Flask, render_template, request, jsonify

app = Flask(__name__)
bot = SimpleChatbot()  # atau IntentChatbot()

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/chat', methods=['POST'])
def chat():
    user_message = request.json['message']
    response = bot.get_response(user_message)
    return jsonify({'response': response})

if __name__ == '__main__':
    app.run(debug=True)

HTML Sederhana (templates/index.html)

<!DOCTYPE html>
<html>
<head>
    <title>Chatbot Saya</title>
    <style>
        body { font-family: Arial; max-width: 600px; margin: 50px auto; }
        #chatbox { border: 1px solid #ccc; height: 400px; overflow-y: auto; padding: 20px; }
        .user { color: blue; margin: 10px 0; }
        .bot { color: green; margin: 10px 0; }
        input { width: 80%; padding: 10px; }
        button { padding: 10px 20px; }
    </style>
</head>
<body>
    <h1>πŸ€– Chatbot Saya</h1>
    <div id="chatbox"></div>
    <input type="text" id="userInput" placeholder="Ketik pesan...">
    <button onclick="sendMessage()">Kirim</button>

    <script>
        async function sendMessage() {
            const input = document.getElementById('userInput');
            const chatbox = document.getElementById('chatbox');
            const message = input.value;
            
            chatbox.innerHTML += `<div class="user">πŸ‘€ ${message}</div>`;
            input.value = '';
            
            const response = await fetch('/chat', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({message: message})
            });
            
            const data = await response.json();
            chatbox.innerHTML += `<div class="bot">πŸ€– ${data.response}</div>`;
            chatbox.scrollTop = chatbox.scrollHeight;
        }
    </script>
</body>
</html>

Tips Mengembangkan Chatbot

βœ… Best Practices

  1. Mulai sederhana: Rule-based dulu, baru upgrade ke AI
  2. Logging: Simpan percakapan untuk analisis
  3. Fallback: Selalu siapkan respons untuk input yang tidak dikenali
  4. Personality: Beri chatbot karakter yang konsisten
  5. Testing: Uji dengan berbagai jenis input

πŸ”§ Improvement Ideas

πŸ“š Next Steps

Kesimpulan

Chatbot adalah gateway yang sempurna ke dunia AI development. Mulai dari yang sederhana (rule-based), naik level ke NLP-based, dan akhirnya ke AI-powered. Yang penting: start small, iterate often!

Challenge: Deploy chatbot Level 1 kamu ke PythonAnywhere atau Heroku, lalu share link-nya ke teman!


Artikel #20 (FINAL) dari seri Belajar AI. Sudah bikin chatbot? Share kodenya! πŸš€

Selamat! Kamu sudah menyelesaikan seri Belajar AI Level Pemula & Menengah. Terus eksplor dan praktek! πŸŽ‰

Dibuat otomatis oleh Bibot πŸ€–