OgrenmeIzci
Kayıtlı Üye
Basit bir yapay zekâ sohbet botu hazırlamanın en kısa yolu, Python ile bir komut satırı uygulaması yazıp bir dil modeli API’sine istek göndermektir. Kullanıcıdan metin alır, önceki mesajları konuşma geçmişinde tutar ve modelin ürettiği yanıtı ekrana yazdırırsınız. Aşağıdaki örnek, bu temel döngüyü çalışır hâle getirir; daha sonra aynı arka ucu web arayüzüne, Telegram botuna veya n8n akışına bağlayabilirsiniz.
Bir sohbet botunun temelinde dört parça bulunur: kullanıcı girdisi, konuşma geçmişi, model isteği ve model yanıtı. Bot yalnızca son mesajı gönderirse önceki konuşmayı hatırlamaz. Bu nedenle her turda kullanıcı mesajını geçmişe eklemek ve modelden gelen yanıtı da geçmişte saklamak gerekir.
Bu örnekte bot belirli bir bilgi tabanına bağlı değildir. Dolayısıyla genel metin üretir; şirket içi belgeleri, güncel verileri veya özel hesap bilgilerini kendiliğinden bilemez. Böyle bir ihtiyaç için daha sonra RAG, veritabanı sorgusu veya harici API bağlantısı eklenmelidir.
Ön koşul olarak Python kurulumu, API erişimi ve kullanılabilir bir model adı gerekir. API anahtarını doğrudan kodun içine yazmayın; ortam değişkeninde saklayın. Anahtarı tarayıcıda, mobil uygulamada veya herkese açık depoda bulundurmak yetkisiz kullanıma ve beklenmeyen maliyete yol açabilir.
Dosyayı çalıştırın. Aynı klasörde
Konuşmayı test edin. Önce “Benim adım Deniz.”, ardından “Benim adım ne?” yazın. Bot önceki mesajı kullanarak Deniz yanıtını vermelidir. İlk yanıtı hatırlamıyorsa
Botun yanıt üretmesi, bağlantı ve kimlik doğrulama aşamasının çalıştığını gösterir; yanıtın doğru olduğu anlamına gelmez. Dil modelleri ikna edici fakat hatalı bilgiler üretebilir. Önemli işlemlerde yanıtı doğrudan uygulamak yerine doğrulama, izin kontrolü ve gerektiğinde insan onayı ekleyin.
Bir istek her seferinde hata veriyorsa önce hata metnini ayırın. Kimlik doğrulama hatası anahtarın eksik, yanlış veya süresi dolmuş olabileceğini; model bulunamadı hatası
Konuşma geçmişi büyüdükçe her isteğin içeriği uzar ve uygulamanın maliyeti, yanıt süresi veya modelin bağlam sınırı etkilenebilir. Uzun süre çalışan bir botta eski mesajları özetleyebilir, yalnızca son mesajları saklayabilir veya geçmişi bir veritabanında kullanıcıya göre ayırabilirsiniz.
Komut satırı örneği, model çağrısını doğrulamak için yeterlidir. Kullanıcıların erişeceği bir uygulamada API anahtarını tarayıcıdaki JavaScript koduna koymayın. Tarayıcı isteği kendi sunucunuza, sunucunuz da model API’sine gitmelidir. Böylece anahtar sunucu tarafında kalır; ayrıca kullanıcı doğrulama, istek sınırı, günlükleme ve kötüye kullanım koruması ekleyebilirsiniz.
Bir sonraki pratik geliştirme, botun belirli bir işi yapmasını sağlamaktır. Örneğin destek botu için önce kullanıcının sorusunu alıp ilgili belge aramasını çalıştırabilir, bulunan metni modele bağlam olarak gönderebilir ve yanıtın yalnızca bu kaynaklara dayanmasını isteyebilirsiniz. Bu yaklaşım botun kendi bilgisini artırmaz; yalnızca yanıt üretirken sağlanan belgeleri kullanmasını sağlar.
Botun çalışma mantığı
Bir sohbet botunun temelinde dört parça bulunur: kullanıcı girdisi, konuşma geçmişi, model isteği ve model yanıtı. Bot yalnızca son mesajı gönderirse önceki konuşmayı hatırlamaz. Bu nedenle her turda kullanıcı mesajını geçmişe eklemek ve modelden gelen yanıtı da geçmişte saklamak gerekir.
Bu örnekte bot belirli bir bilgi tabanına bağlı değildir. Dolayısıyla genel metin üretir; şirket içi belgeleri, güncel verileri veya özel hesap bilgilerini kendiliğinden bilemez. Böyle bir ihtiyaç için daha sonra RAG, veritabanı sorgusu veya harici API bağlantısı eklenmelidir.
Python ile en küçük çalışan bot
Ön koşul olarak Python kurulumu, API erişimi ve kullanılabilir bir model adı gerekir. API anahtarını doğrudan kodun içine yazmayın; ortam değişkeninde saklayın. Anahtarı tarayıcıda, mobil uygulamada veya herkese açık depoda bulundurmak yetkisiz kullanıma ve beklenmeyen maliyete yol açabilir.
- Bir proje klasörü oluşturun. Terminalde yeni bir klasör açıp içine girin; örneğin
ai-sohbet-botuadlı klasör kullanabilirsiniz. - Python paketini kurun. Proje klasöründe
pip install openaikomutunu çalıştırın. Kurulum tamamlanınca Python kodu API istemcisini kullanabilir. - API anahtarını ortam değişkenine ekleyin. Windows Komut İstemi’nde
setx OPENAI_API_KEY "ANAHTARINIZ", Linux veya macOS terminalinde iseexport OPENAI_API_KEY="ANAHTARINIZ"komutunu kullanın. Windows’ta komuttan sonra yeni bir terminal açın. - Kullanacağınız model adını ayrıca tanımlayın.
OPENAI_MODELadlı ortam değişkenine hesabınızda kullanılabilen bir model adını yazın. Model adı geçersizse botun kodu doğru olsa bile istek hata verir. - dosyasını oluşturun. Dosyaya aşağıdaki kodu yapıştırın.
instructionsalanı botun davranışını,historylistesi ise konuşma geçmişini belirler.
Python:
import os
from openai import OpenAI
api_key = os.environ.get("OPENAI_API_KEY")
model = os.environ.get("OPENAI_MODEL")
if not api_key:
raise RuntimeError("OPENAI_API_KEY ortam değişkeni bulunamadı.")
if not model:
raise RuntimeError("OPENAI_MODEL ortam değişkeni bulunamadı.")
client = OpenAI(api_key=api_key)
history = []
instructions = (
"Sen kısa, açık ve Türkçe yanıt veren bir yardımcı botsun. "
"Bilmediğin bilgiyi kesinmiş gibi sunma."
)
print("Bot hazır. Çıkmak için q yazın.")
while True:
user_text = input("Siz: ").strip()
if user_text.lower() in {"q", "quit", "exit", "çıkış"}:
print("Bot kapatıldı.")
break
if not user_text:
continue
history.append({"role": "user", "content": user_text})
try:
response = client.responses.create(
model=model,
instructions=instructions,
input=history,
)
answer = response.output_text.strip()
except Exception as error:
history.pop()
print(f"İstek başarısız oldu: {error}")
continue
print(f"Bot: {answer}")
history.append({"role": "assistant", "content": answer})
Dosyayı çalıştırın. Aynı klasörde
python bot.py komutunu verin. Ekranda “Bot hazır” mesajı görünürse bot kullanıcı girdisi bekliyor demektir.Konuşmayı test edin. Önce “Benim adım Deniz.”, ardından “Benim adım ne?” yazın. Bot önceki mesajı kullanarak Deniz yanıtını vermelidir. İlk yanıtı hatırlamıyorsa
history listesinin her turda güncellenip güncellenmediğini kontrol edin.Sonuçları nasıl yorumlamalısınız?
Botun yanıt üretmesi, bağlantı ve kimlik doğrulama aşamasının çalıştığını gösterir; yanıtın doğru olduğu anlamına gelmez. Dil modelleri ikna edici fakat hatalı bilgiler üretebilir. Önemli işlemlerde yanıtı doğrudan uygulamak yerine doğrulama, izin kontrolü ve gerektiğinde insan onayı ekleyin.
Bir istek her seferinde hata veriyorsa önce hata metnini ayırın. Kimlik doğrulama hatası anahtarın eksik, yanlış veya süresi dolmuş olabileceğini; model bulunamadı hatası
OPENAI_MODEL değerinin hesabınızda kullanılmadığını; bağlantı veya zaman aşımı hatası ise ağ erişimini ya da geçici servis durumunu kontrol etmeniz gerektiğini gösterir. Anahtarı kod içine yapıştırmayın ve hata çıktısını herkese açık biçimde paylaşırken gizli değerleri silin.Konuşma geçmişi büyüdükçe her isteğin içeriği uzar ve uygulamanın maliyeti, yanıt süresi veya modelin bağlam sınırı etkilenebilir. Uzun süre çalışan bir botta eski mesajları özetleyebilir, yalnızca son mesajları saklayabilir veya geçmişi bir veritabanında kullanıcıya göre ayırabilirsiniz.
Botu gerçek bir otomasyona dönüştürme
Komut satırı örneği, model çağrısını doğrulamak için yeterlidir. Kullanıcıların erişeceği bir uygulamada API anahtarını tarayıcıdaki JavaScript koduna koymayın. Tarayıcı isteği kendi sunucunuza, sunucunuz da model API’sine gitmelidir. Böylece anahtar sunucu tarafında kalır; ayrıca kullanıcı doğrulama, istek sınırı, günlükleme ve kötüye kullanım koruması ekleyebilirsiniz.
Bir sonraki pratik geliştirme, botun belirli bir işi yapmasını sağlamaktır. Örneğin destek botu için önce kullanıcının sorusunu alıp ilgili belge aramasını çalıştırabilir, bulunan metni modele bağlam olarak gönderebilir ve yanıtın yalnızca bu kaynaklara dayanmasını isteyebilirsiniz. Bu yaklaşım botun kendi bilgisini artırmaz; yalnızca yanıt üretirken sağlanan belgeleri kullanmasını sağlar.