Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

9. ünite / 10 · 4 saat

Servis ve maliyet: token bütçesi, önbellek, gecikme

İstek başı ve aylık maliyet, prompt önbelleği, toplu işleme, ilk token süresi, hız sınırları, yeniden deneme ve model seçimi.

Bu ünitenin sonunda

  • Bir uygulamanın aylık maliyetini token sayılarından hesaplamak
  • Prompt önbelleğinin maliyete ve ilk token süresine etkisini açıklamak
  • Acele olmayan işleri toplu işlemeye ayırmak
  • 429 ve 5xx hatalarına karşı üstel beklemeli yeniden deneme ve kuyruk tasarlamak

Ders notları

Bir prototipi binlerce kullanıcıya açınca üç soru öne çıkar: ayda ne tutar, kullanıcı ne kadar bekler, sağlayıcı sınırlarına takılınca ne olur?

Maliyet

Maliyet token sayısıyla doğru orantılıdır. Bir RAG uygulamasında giriş tokenının büyük kısmı her istekte aynı olan sistem promptu ve belgelerdir. Prompt önbelleği bu kararlı ön eki saklar: önbellekten okunan token, normal giriş tokenının küçük bir kesridir; ilk yazma biraz pahalıdır. Önbellek ön ek eşleşmesiyle çalışır: ön ekte tek bir bayt değişirse (örneğin sistem promptuna saat eklemek) sonrası yeniden hesaplanır.

aylık = günlük_istek × 30 × (taze_giriş × p_giriş + önbellek_okuma × p_okuma + çıkış × p_çıkış)

Gerçek zamanlı olması gerekmeyen işler (gece raporu, toplu sınıflandırma) toplu işleme (Batches) ile yarı fiyata gönderilebilir; sonuçlar saatler içinde ve rastgele sırada gelir, custom_id ile eşleştirilir.

Gecikme

Kullanıcının algıladığı süre iki parçadır: ilk token süresi (girişin işlenmesi; uzun prompt ve önbellek ıskası uzatır) ve üretim süresi (çıkış tokenı ÷ saniyedeki token). Akışlı cevap (10. ünite) toplam süreyi değiştirmez ama kullanıcı ilk kelimeyi hemen görür. Daha küçük bir model ya da daha düşük düşünme çabası basit işlerde hem ucuz hem hızlıdır; doğru seçim değerlendirme kümesiyle ölçülür.

Sınırlar ve hatalar

Sağlayıcılar dakikadaki istek ve token sayısını sınırlar; aşılınca 429 döner. SDK'lar 429 ve 5xx hatalarını üstel bekleyerek birkaç kez yeniden dener. Yeniden denemeler de biterse istek bir kuyruğa alınır ya da kullanıcıya anlaşılır bir mesaj gösterilir. Uygulama kendi tarafında da kullanıcı başına sınır koyar ki tek bir kullanıcı herkesin bütçesini tüketmesin. Simülasyondaki fiyatlar örnek liste fiyatıdır; güncel fiyat sağlayıcının sayfasından kontrol edilir.

Simülasyon

Öğretim modeli: bu sayfadaki simülasyonlar gerçek bir dil modeli değildir. Küçük, deterministik, tarayıcıda çalışan modellerdir; kavramı göstermek için yazıldılar. Site hiçbir dış LLM servisine istek göndermez.

Servis ve maliyet hesaplayıcı: token, gecikme, önbellek

Günlük istek sayısını, istek başına giriş ve çıkış tokenını, önbelleğe alınan payı ve fiyatları gir. İstek başı ve aylık maliyeti, ilk token süresi ile toplam gecikmeyi, önbelleğin ve toplu işlemenin kazandırdığını gör. Varsayılan fiyatlar örnek liste fiyatıdır; güncelini sağlayıcının sayfasından kontrol et.

Kendin dene

Maliyet hesaplayıcıda varsayılan ayarla aylık maliyeti not et. Önbelleklenebilir payı %0'a indir: maliyet ve ilk token süresi ne kadar değişti? Payı %80'e geri al ve isabeti %50'ye düşür; sonucu açıkla. Son olarak işlerin yarısını toplu işlemeye ayır ve kazancı hesapla. Bir sınıf için (30 öğrenci, günde 20 soru) kendi senaryonu kur.

Kod

Bunları kendi bilgisayarında çalıştır. Anahtar ANTHROPIC_API_KEY ortam değişkeninden okunur; koda asla yazma.

Python: token say, önbelleğe al, kullanımı ölç
import anthropic

client = anthropic.Anthropic(max_retries=4)  # 429 ve 5xx hatalarında üstel bekleme ile yeniden dener
MODEL = "claude-sonnet-5-5"
NOTES = open("ders_notlari.md", encoding="utf-8").read()  # her istekte aynı, uzun ön ek
SYSTEM = [{"type": "text", "text": f"Yalnız şu notlara dayanarak cevap ver:\n{NOTES}",
           "cache_control": {"type": "ephemeral"}}]  # kararlı içerik önde, önbellek noktası sonunda

count = client.messages.count_tokens(model=MODEL, system=SYSTEM,
                                     messages=[{"role": "user", "content": "test"}])
print("giriş tokenı:", count.input_tokens)

def ask(question: str):
    try:
        r = client.messages.create(model=MODEL, max_tokens=1024, system=SYSTEM,
                                   messages=[{"role": "user", "content": question}])
    except anthropic.RateLimitError:
        return None  # yeniden denemeler de bitti: kuyruğa al ya da kullanıcıya bildir
    u = r.usage
    # Ekim 2026 liste fiyatı (Sonnet 5.5, milyon token başına): giriş 2 $, çıkış 10 $, önbellek okuma 0,20 $; güncelini kontrol et
    cost = (u.input_tokens * 2 + u.output_tokens * 10 + (u.cache_read_input_tokens or 0) * 0.2
            + (u.cache_creation_input_tokens or 0) * 2.5) / 1_000_000
    print(u.input_tokens, u.cache_read_input_tokens, u.cache_creation_input_tokens, u.output_tokens, f"{cost:.5f} $")
    return r
Python: acele olmayan işler için toplu işleme (yarı fiyat)
import time
import anthropic

client = anthropic.Anthropic()

questions = open("sorular.txt", encoding="utf-8").read().splitlines()
batch = client.messages.batches.create(requests=[
    {"custom_id": f"q-{i}",
     "params": {"model": "claude-sonnet-5-5", "max_tokens": 512,
                "messages": [{"role": "user", "content": q}]}}
    for i, q in enumerate(questions)
])

while client.messages.batches.retrieve(batch.id).processing_status != "ended":
    time.sleep(60)  # sonuçlar 24 saat içinde gelir; gerçek zamanlı değil

for item in client.messages.batches.results(batch.id):
    # sonuçlar herhangi bir sırada gelir: custom_id ile eşleştir
    if item.result.type == "succeeded":
        text = item.result.message.content[0].text
        print(item.custom_id, text[:60])

Sık yapılan hatalar

  • Sistem promptuna tarih ya da istek kimliği gibi değişen bir şey koyup önbelleği her istekte bozmak.
  • Yalnız istek başı maliyete bakmak: yeniden denemeler ve uzun sohbet geçmişi de token tüketir.
  • Hız sınırı hatasını yakalamamak: kullanıcı boş bir ekranla kalır.
  • Her işe en büyük modeli seçmek: basit sınıflandırmada küçük model ya da düşük çaba yeter.

Yazılım mühendisliği bağlantısı

Maliyet ve gecikme, işlevsel olmayan gereksinimlerdir: yazılır, ölçülür, alarm kurulur.

  • "95. yüzdelik ilk token süresi 1,5 s altında", "aylık bütçe 300 $" gibi hedefleri belgeye yaz ve panoda izle.
  • API cevabındaki usage alanlarını (giriş, önbellek okuma, önbellek yazma, çıkış) her istek için kaydet; önbellek okuması sıfırsa sessiz bir bozucu arıyorsun demektir.

Kendini sına

  1. Prompt önbelleği neden sistem promptuna saat eklenince işe yaramaz hâle gelir?

  2. Gece çalışan ve sonucu ertesi sabah gereken 10 000 sınıflandırma işi için en uygun yol hangisidir?

  3. Akışlı cevap neyi iyileştirir?

  4. 429 hatası alındığında doğru davranış hangisidir?

Macademia'da ilgili

Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç