Yapay zekanın hızla evrilen dünyasında, özel bir sohbet botu oluşturmak artık teknoloji devlerinin ayrıcalığı olmaktan çıktı. Büyük Dil Modelleri (LLM'ler) ve LangChain gibi modern orkestrasyon çerçevelerinin ortaya çıkmasıyla geliştiriciler artık gelişmiş, bağlam duyarlı konuşma ajanları inşa edebilir. Bu rehber, sağlam bir AI sohbet botu oluşturmak için gereken mimari desenleri ve kod uygulamalarını adım adım açıklar.
Ön Koşullar ve Mimari
Koda dalmadan önce, bir LLM destekli uygulamanın temel bileşenlerini anlamak hayati önem taşır. Geleneksel kural tabanlı sohbet botlarının aksine, modern AI sohbet botları olasılıksal üretime dayanır. Temel bileşenler şunları içerir:
1. **LLM Sağlayıcısı**: Altyapıdaki model (örneğin, OpenAI'nin GPT-4'ü, Anthropic'in Claude'u).
2. **İstem Şablonu (Prompt Template)**: Modelin davranışını yönlendiren talimatlar.
3. **Bellek Modülü**: Çoklu tur tutarlılığını sağlayan konuşma geçmişini depolamak ve almak için bir mekanizma.
4. **Zincir (Chain)**: Kullanıcı girdisini modele ve geriye bağlayan mantıksal akış.
Bu uygulama için Python, OpenAI API'si ve LangChain kullanacağız. Ortam değişkenlerinizde saklanan bir OpenAI API anahtarına sahip olduğunuzdan emin olun.
Ortamın Hazırlanması
İlk olarak, gerekli bağımlılıkları yükleyin. Orkestrasyon için `langchain` ve model etkileşimi için `openai` kullanacağız.
pip install langchain openai python-dotenv
Ardından, API anahtarınızı güvenli bir şekilde saklamak için bir `.env` dosyası oluşturun. Bu, kimlik bilgilerinizi kod tabanınızda ortaya çıkarmaktan kaçınmak için kritik bir güvenlik uygulamasıdır.
OPENAI_API_KEY=sk-gerçek-api-anahtarınız-burada
Sohbet Mantığının Uygulanması
Sohbet botumuzun kalbi, etkileşim döngüsüdür. Modeli başlatacak, bir bellek arabelleği kuracak ve kullanıcı girdisini işleyecek basit bir fonksiyon oluşturacağız.
import os
from dotenv import load_dotenv
from langchain.llms import OpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
# Ortam değişkenlerini yükle
load_dotenv()
def create_chatbot():
# Deterministik yanıtlar için sıcaklığı 0 olan LLM'i başlat
llm = OpenAI(
openai_api_key=os.getenv("OPENAI_API_KEY"),
temperature=0
)
# Önceki etkileşimleri hatırlaması için belleği ayarla
memory = ConversationBufferMemory()
# Konuşma zincirini oluştur
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=False
)
return conversation
def main():
bot = create_chatbot()
print("AI Sohbet Botu başlatıldı. Çıkmak için 'quit' yazın.")
while True:
user_input = input("Kullanıcı: ")
if user_input.lower() == 'quit':
print("Görüşürüz!")
break
# Yanıt oluştur
response = bot.predict(input=user_input)
print(f"AI: {response}")
if __name__ == "__main__":
main()
Yukarıdaki kodda, `OpenAI` LLM'ini 0 sıcaklığıyla başlatıyoruz. Bu ayar rastgeleliği azaltarak botun yanıtlarını daha tutarlı ve gerçekçi hale getirir. `ConversationBufferMemory` sınıfı, mesajları bağlam penceresine otomatik olarak ekleyerek yönetir ve modelin beş tur önce ne söylendiğini "hatırlamasını" sağlar.
Özel İstemlerle (Prompts) Geliştirme
Üretim seviyesindeki uygulamalar için varsayılan istemlere nadiren güvenmelisiniz. Bunun yerine, botun kişiliğini kısıtlamak için spesifik sistem talimatları tanımlayın. Bunu, `ConversationChain`'e bir `prompt` parametresi geçirerek yapabilirsiniz. Bu, alanına özgü bilgileri veya ton ayarlamalarını doğrudan bağlama enjektelemenize olanak tanır.
Sonuç
LangChain gibi çerçeveler tarafından sağlanan yüksek seviye soyutlamalar sayesinde, bir AI sohbet botu oluşturmak günümüzde çok daha kolay hale geldi. Ancak karmaşıklık altyapıdan istem mühendisliğine (prompt engineering) ve bellek yönetimine kayar. Ölçeklendirdikçe, sohbet botunuzu özel verilerde temellendirmek için geri çekime dayalı üretim (RAG) için vektör veritabanları uygulamayı düşünün. Bu temel kavramları ustalaşarak, zeki, duyarlı ve değerli AI asistanları oluşturmak için sağlam bir temel atarsınız.