Claude veya OpenAI API ile Kendi AI Uygulamanı Yazma: Başlangıç Rehberi
LLM API'lerinin temel çalışma mantığı, ilk API isteğini gönderme, system prompt kullanımı ve basit bir Python örneğiyle kendi AI aracını kodlama.
Neden Sohbet Arayüzü Değil de API?
ChatGPT veya Claude'un web arayüzü, günlük kullanım için harika, ama kendi uygulamana AI entegre etmek istediğinde (bir müşteri destek botu, bir içerik üretim aracı, bir veri analiz sistemi) API'ye ihtiyacın oluyor. API, modelin yeteneklerini kendi kodunun içinden programatik olarak çağırmanı sağlıyor.
Temel Çalışma Mantığı
Bir LLM API'si temelde basit: kod tarafından bir HTTP isteği gönderiyorsun (genelde bir "mesajlar" listesiyle), model bir cevap üretip geri döndürüyor. Bu döngü, sohbet arayüzünde gördüğün etkileşimin arka planda nasıl çalıştığının ta kendisi.
İlk API İsteğini Göndermek
Basit bir Python örneği (Anthropic'in Claude API'si için):
import anthropic
client = anthropic.Anthropic(api_key="API_ANAHTARIN")
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Python'da bir liste nasıl ters çevrilir?"}
]
)
print(message.content[0].text)
Bu kod, modele bir soru gönderip cevabını alıyor. max_tokens parametresi, cevabın en fazla ne kadar uzun olabileceğini sınırlıyor — daha uzun cevaplar için bu değeri artırman gerekiyor.
System Prompt: Asistanın "Kişiliğini" Belirleme
Çoğu API, bir "system prompt" (sistem talimatı) belirlemene izin veriyor — bu, kullanıcının her mesajında tekrar açıklamak zorunda kalmayacağın, sabit bir bağlam/davranış kuralı:
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="Sen bir Python öğretmenisin. Cevaplarını her zaman basit bir örnek kodla destekle, karmaşık jargon kullanma.",
messages=[
{"role": "user", "content": "Decorator nedir?"}
]
)
Bu sayede, uygulamanın her kullanıcı sorgusunda aynı "kişiliği" ve davranış kalıbını koruyor — bu, tutarlı bir kullanıcı deneyimi için kritik.
Konuşma Geçmişini Yönetmek
API'ler varsayılan olarak "hafızasız" — her istek bağımsız. Bir sohbet deneyimi (önceki mesajları hatırlayan) oluşturmak istiyorsan, konuşma geçmişini kendi kodunda tutup her istekte tekrar göndermen gerekiyor:
conversation = [
{"role": "user", "content": "Merhaba, adım Ahmet."},
{"role": "assistant", "content": "Merhaba Ahmet! Nasıl yardımcı olabilirim?"},
{"role": "user", "content": "Adımı hatırlıyor musun?"}
]
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=conversation
)
Bu listeyi her yeni mesajda güncelleyip tekrar göndermek, modelin "hafızası" varmış gibi davranmasını sağlıyor — aslında her seferinde tüm geçmişi yeniden okuyor.
Streaming: Cevabı Parça Parça Almak
Uzun cevaplarda, kullanıcının tüm cevabın tamamlanmasını beklemek yerine, kelimeler üretildikçe ekranda görmesi (ChatGPT/Claude arayüzlerindeki "yazıyor" efekti) çok daha iyi bir deneyim sunuyor. Çoğu API bunu streaming ile destekliyor — cevap, tek seferde değil, küçük parçalar halinde geliyor ve uygulaman bu parçaları geldikçe ekrana yazdırabiliyor.
Maliyet Yönetimi
API kullanımı, model boyutuna ve işlenen token (kelime parçası) sayısına göre ücretlendiriliyor. Pratik ipuçları:
- Doğru model boyutunu seç: Basit görevler için küçük/hızlı modeller yeterli olabilir, en pahalı/güçlü modeli her şey için kullanmak gereksiz maliyet yaratır
- max_tokens'ı gereksiz yüksek tutma: Kısa bir cevap bekliyorsan, bu limiti düşük tutmak hem maliyeti hem gecikmeyi azaltır
- Prompt'u optimize et: Gereksiz uzun system prompt'lar veya tekrar eden bağlam, her istekte ekstra token maliyeti demek
Basit Bir Uygulama Fikri: Metin Özetleyici
Yukarıdaki parçaları birleştirerek, kullanıcının yapıştırdığı bir metni özetleyen basit bir araç kurulabilir: kullanıcı arayüzü (web formu) → metni al → API'ye "bu metni 3 cümlede özetle" system prompt'uyla gönder → cevabı ekrana bas. Bu, API tabanlı bir AI uygulamasının en temel iskeleti — buradan RAG, agent mimarisi gibi daha karmaşık yapılara genişletilebilir (bkz. ilgili yazılarım).
Özet
LLM API'leri, sohbet arayüzünün arkasındaki gücü kendi uygulamana taşımanı sağlıyor. Temel istek/cevap döngüsünü, system prompt kullanımını ve konuşma geçmişi yönetimini anladıktan sonra, kendi AI destekli aracını kodlamak aslında oldukça erişilebilir bir başlangıç noktası.
İlgili yazılar