Membuat AI Chatbot dengan Python: Integrasi OpenAI dan Gemini
Artificial Intelligence semakin mudah diakses berkat API dari OpenAI dan Google Gemini. Dalam tutorial ini, kita akan membangun AI chatbot yang bisa digunakan untuk customer support, content generation, dan lainnya.
Persiapan Environment
mkdir ai-chatbot && cd ai-chatbot
python -m venv venv
source venv/bin/activate # Linux/Mac
# atau: venv\Scripts\activate # Windows
pip install openai google-generativeai python-dotenv fastapi uvicorn
Setup API Keys
Buat file .env:
OPENAI_API_KEY=sk-...your-key...
GEMINI_API_KEY=AIzaSy...your-key...
Tool 1: Content Generator dengan Gemini
# content_generator.py
import google.generativeai as genai
from dotenv import load_dotenv
import os
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
class ContentGenerator:
def __init__(self):
self.model = genai.GenerativeModel(
"gemini-2.0-flash",
system_instruction="""Kamu adalah content writer profesional
berbahasa Indonesia. Buat konten yang informatif, engaging,
dan SEO-friendly."""
)
def generate_article(self, topic: str, word_count: int = 500) -> str:
prompt = f"""Buatkan artikel tentang: {topic}
Panjang: sekitar {word_count} kata
Format: Markdown dengan heading, subheading, dan bullet points
Bahasa: Indonesia
Gaya: Profesional tapi mudah dipahami"""
response = self.model.generate_content(prompt)
return response.text
def generate_social_post(self, topic: str, platform: str) -> str:
prompt = f"""Buatkan post {platform} tentang: {topic}
Format yang sesuai untuk {platform}.
Sertakan emoji dan hashtag yang relevan."""
response = self.model.generate_content(prompt)
return response.text
# Contoh penggunaan
if __name__ == "__main__":
gen = ContentGenerator()
article = gen.generate_article("Tips optimasi performa Next.js")
print(article)
Tool 2: AI Chatbot dengan OpenAI
# chatbot.py
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
class AIChatbot:
def __init__(self, system_prompt: str = None):
self.system_prompt = system_prompt or (
"Kamu adalah asisten AI yang helpful dan cerdas. "
"Jawab dalam bahasa Indonesia yang baik dan sopan."
)
self.conversation_history = [
{"role": "system", "content": self.system_prompt}
]
def chat(self, message: str) -> str:
self.conversation_history.append(
{"role": "user", "content": message}
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=self.conversation_history,
max_tokens=1024,
temperature=0.7,
)
reply = response.choices[0].message.content
self.conversation_history.append(
{"role": "assistant", "content": reply}
)
return reply
def reset(self):
self.conversation_history = [
{"role": "system", "content": self.system_prompt}
]
# Contoh penggunaan
if __name__ == "__main__":
bot = AIChatbot("Kamu adalah customer support untuk toko online.")
print(bot.chat("Bagaimana cara melacak pesanan saya?"))
print(bot.chat("Pesanan nomor ORD-12345"))
Tool 3: REST API dengan FastAPI
# main.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from content_generator import ContentGenerator
from chatbot import AIChatbot
app = FastAPI(title="AI Tools API")
generator = ContentGenerator()
chatbots: dict[str, AIChatbot] = {}
class ChatRequest(BaseModel):
session_id: str
message: str
class ContentRequest(BaseModel):
topic: str
word_count: int = 500
@app.post("/api/chat")
async def chat(req: ChatRequest):
if req.session_id not in chatbots:
chatbots[req.session_id] = AIChatbot()
reply = chatbots[req.session_id].chat(req.message)
return {"reply": reply, "session_id": req.session_id}
@app.post("/api/generate/article")
async def generate_article(req: ContentRequest):
content = generator.generate_article(req.topic, req.word_count)
return {"content": content, "topic": req.topic}
@app.post("/api/generate/social")
async def generate_social(topic: str, platform: str = "instagram"):
content = generator.generate_social_post(topic, platform)
return {"content": content, "platform": platform}
Jalankan: uvicorn main:app --reload
Tool 4: Analisis Sentimen
# sentiment.py
import google.generativeai as genai
class SentimentAnalyzer:
def __init__(self):
self.model = genai.GenerativeModel("gemini-2.0-flash")
def analyze(self, text: str) -> dict:
prompt = f"""Analisis sentimen teks berikut. Jawab dalam format JSON:
{{"sentiment": "positive/negative/neutral",
"confidence": 0.0-1.0,
"keywords": ["kata1", "kata2"],
"summary": "ringkasan singkat"}}
Teks: {text}"""
response = self.model.generate_content(prompt)
return response.text
Tips Keamanan
- Jangan hardcode API key — selalu gunakan environment variables
- Rate limit API endpoint Anda
- Validasi semua input pengguna sebelum kirim ke AI
- Filter output AI untuk konten yang tidak sesuai
- Simpan log interaksi untuk audit
- Gunakan HTTPS untuk semua komunikasi API
Kesimpulan
Dengan Python, OpenAI, dan Gemini, Anda bisa membangun berbagai tools AI yang powerful. Dari chatbot customer support hingga content generator otomatis, kemungkinannya sangat luas.
Butuh solusi AI custom untuk bisnis Anda? Hubungi kami untuk konsultasi.