Ana SayfaAI 101™Chatbot Oluşturun
Başlangıç20 dk okumaAI 101™

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 İşlemeKullanıcı bir mesaj yazar ve bu metin olarak AI modeline gönderilir.
  • AI İşlemeDil modeli, bağlamı anlamak için mesajı konuşma geçmişiyle birlikte analiz eder.
  • Yanıt ÜretimiModel, anlayışına dayalı olarak doğal dilde bir yanıt üretir.
  • Hafıza YönetimiKonuş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.

1

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.

bash
pip install openai python-dotenv
2

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

text
# .env file
OPENAI_API_KEY=your-api-key-here

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

python
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:

python
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:

python
# 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:

python
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 APIChatbotunuzu 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.
Vionis Labs - Intelligent AI Solutions for Every Industry | Vionis Labs