Chatbot Oluşturun
Doğal dil anlama, bağlamsal hafıza ve özelleştirilebilir kişilikle sıfırdan kendi AI chatbotunuzu oluşturun.
Giriş
Chatbotlar, AI'ın en popüler uygulamalarından biridir. Müşteri desteğinden kişisel asistanlara kadar, konuşmacı AI her yerdedir. Bu rehberde, Python ve OpenAI API kullanarak sıfırdan tam işlevsel bir chatbot oluşturacaksınız.
Bu eğitimin sonunda, doğal konuşmalar yapabilen, mesajlar arasında bağlamı hatırlayan ve hataları zarif bir şekilde yöneten bir chatbotunuz olacak.
Chatbotlar Nasıl Çalışır
Modern bir AI chatbot, basit ama güçlü bir döngüyle çalışır:
- Girdi İşleme — Kullanıcı bir mesaj yazar ve bu metin olarak AI modeline gönderilir.
- AI İşleme — Dil modeli, bağlamı anlamak için mesajı konuşma geçmişiyle birlikte analiz eder.
- Yanıt Üretimi — Model, anlayışına dayalı olarak doğal dilde bir yanıt üretir.
- Hafıza Yönetimi — Konuşma geçmişi kaydedilir ve bağlamı korumak için her yeni mesajla birlikte gönderilir.
💡 Chatbot Türleri
Kural tabanlı chatbotlar (önceden tanımlanmış senaryoları takip eden) ve AI destekli chatbotlar (dinamik yanıtlar üretmek için dil modellerini kullanan) vardır. Bu rehber, çok daha esnek ve doğal olan AI destekli chatbotlara odaklanır.
Ortamınızı Kurun
Geliştirme ortamını adım adım kuralım.
Bağımlılıkları Yükleyin
OpenAI Python kütüphanesi ve ortam değişkeni yönetimi için python-dotenv'e ihtiyacınız var.
pip install openai python-dotenvAPI Anahtarınızı Yapılandırın
API anahtarınızı güvenli bir şekilde saklamak için proje kök dizininizde bir .env dosyası oluşturun. API anahtarlarını asla kaynak kodunuzda doğrudan yazmayın.
# .env file
OPENAI_API_KEY=your-api-key-hereBasit Bir Chatbot Oluşturma
Mümkün olan en basit chatbotla başlayalım — bir mesaj alan ve yanıt döndüren, ancak önceki mesajlar için hafızası olmayan biri.
import openai
from dotenv import load_dotenv
import os
load_dotenv()
client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def chat(user_message):
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": user_message}
],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
# Main loop
print("Chatbot ready! Type 'quit' to exit.")
while True:
user_input = input("You: ")
if user_input.lower() == 'quit':
break
response = chat(user_input)
print(f"Bot: {response}")Konuşma Hafızası Ekleme
Basit chatbot, mesajlar arasında her şeyi unutur. Onu konuşmacı yapmak için, tüm konuşma geçmişini her istekle birlikte kaydetmemiz ve göndermemiz gerekir. İşte sınıf tabanlı bir yaklaşım:
class ChatBot:
def __init__(self, system_prompt="You are a helpful assistant."):
self.client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
self.conversation_history = [
{"role": "system", "content": system_prompt}
]
def chat(self, user_message):
self.conversation_history.append(
{"role": "user", "content": user_message}
)
response = self.client.chat.completions.create(
model="gpt-4",
messages=self.conversation_history,
temperature=0.7,
max_tokens=500
)
assistant_message = response.choices[0].message.content
self.conversation_history.append(
{"role": "assistant", "content": assistant_message}
)
# Keep only last 20 messages to manage token usage
if len(self.conversation_history) > 21:
self.conversation_history = (
[self.conversation_history[0]] # Keep system prompt
+ self.conversation_history[-20:]
)
return assistant_message✅ Token Limitlerini Yönetme
Dil modellerinin maksimum bağlam penceresi vardır (ör. 8K veya 128K token). Konuşmalar uzadığında, eski mesajları kısaltmanız gerekir. Yukarıdaki kod, basit bir strateji olarak sistem promptunu ve son 20 mesajı tutar.
Kişilik Özelleştirme
Sistem promptu, chatbotunuzun kişiliğini, uzmanlığını ve davranış kurallarını tanımlar. İşte farklı kişilik örnekleri:
# Customer support bot
support_bot = ChatBot(
system_prompt="""You are a friendly customer support agent
for a tech company. You are patient, empathetic, and always
try to resolve issues step by step. If you don't know something,
say so honestly and offer to escalate to a human agent."""
)
# Coding tutor bot
tutor_bot = ChatBot(
system_prompt="""You are a Python programming tutor.
Explain concepts clearly using simple language and examples.
When the user makes a mistake, guide them to the answer
instead of giving it directly. Use code examples frequently."""
)Hata Yönetimi
Üretim ortamında API çağrıları, hız sınırları, ağ sorunları veya sunucu hataları nedeniyle başarısız olabilir. Her zaman üstel geri çekilme ile yeniden deneme mantığı uygulayın:
import time
def chat_with_retry(self, user_message, max_retries=3):
for attempt in range(max_retries):
try:
return self.chat(user_message)
except openai.RateLimitError:
wait_time = 2 ** attempt
print(f"Rate limited. Waiting {wait_time}s...")
time.sleep(wait_time)
except openai.APIError as e:
print(f"API error: {e}")
if attempt == max_retries - 1:
return "Sorry, I'm having trouble right now."
return "Please try again later."Dağıtım Seçenekleri
Chatbotunuz yerel olarak çalıştığında, birkaç dağıtım seçeneğiniz var:
- REST API — Chatbotunuzu bir Flask veya FastAPI sunucusuna sarın ve herhangi bir bulut sağlayıcısına dağıtın.
- Web Arayüzü — React veya Next.js ile bir frontend oluşturun ve chatbot API'nize bağlayın.
- Mesajlaşma Platformları — Bot API'leri aracılığıyla Slack, Discord, WhatsApp veya Telegram ile entegre edin.
⚠️ Güvenlik Uyarısı
API anahtarınızı asla istemci tarafına açıklamayın. İstekleri her zaman kendi backend sunucunuz üzerinden yönlendirin. Kötüye kullanımı önlemek için hız sınırlama ve girdi doğrulama uygulayın.
Özet
Hafızalı ve kişilikli eksiksiz bir chatbot oluşturdunuz. Önemli çıkarımlar:
- AI chatbotlar, her istekle birlikte konuşma geçmişini bir dil modeline göndererek çalışır.
- Konuşma hafızası doğal diyalog için esastır — mesajları kaydedin ve token limitlerini yönetin.
- Sistem promptları chatbotunuzun kişiliğini, uzmanlığını ve davranış sınırlarını tanımlar.
- Üretim uygulamaları için her zaman hata yönetimi ve yeniden deneme mantığı uygulayın.