Ayarlar

Dil

Modelleri Değiştirmeden AI API Maliyetlerinizi %30 Nasıl Azaltırsınız?

L
LemonData
·26 Şubat 2026·421 görüntüleme
Modelleri Değiştirmeden AI API Maliyetlerinizi %30 Nasıl Azaltırsınız?

Çoğu ekip AI API çağrıları için gereğinden fazla ödeme yapıyor. Bunun nedeni yanlış modeli seçmeleri değil; prompt caching, akıllı model yönlendirme (smart model routing) ve toplu işleme (batch processing) gibi minimum kod değişikliği gerektiren üç optimizasyonu göz ardı etmeleridir.

İşte gerçek rakamlarla her bir tekniğin dökümü.

Mevcut sağlayıcı karışımınızın sorun olup olmadığına hala karar veremiyorsanız, önce fiyatlandırma karşılaştırmasını okuyun. En büyük sorununuz ham harcamadan ziyade retry fırtınaları veya sağlayıcı sınırlamalarıysa (throttling), bu sayfayı rate limiting kılavuzu ile birlikte değerlendirin.

1. Prompt Caching: En Büyük Kazanım

Uygulamanız her istekte aynı system prompt içeriğini gönderiyorsa, sağlayıcının zaten işlemiş olduğu token'lar için tam ücret ödüyorsunuz demektir.

Nasıl Çalışır?

OpenAI, 1.024 token üzerindeki girdiler için prompt'ları otomatik olarak cache'ler. Cache'lenen token'lar, standart girdi fiyatının %50'sine mal olur. Kodunuzda herhangi bir değişiklik yapmanıza gerek yoktur.

Anthropic, cache_control kesme noktaları aracılığıyla açık caching kullanır. Yazma maliyeti standart girdiden %25 daha yüksektir, ancak okuma maliyeti %90 daha düşüktür. Cache TTL süresi 5 dakikadır ve her hit durumunda uzatılır.

Yeni OpenAI fiyatlandırmasında, pratik indirim ekiplerin beklediğinden daha iyi olabilir. GPT-4.1 cache'lenmiş girdisi, standart girdinin dörtte biri fiyatına sunulur; bu da tutarlı prefix'lerin, eski "olsa iyi olur" yaklaşımının önerdiğinden çok daha büyük tasarruflar sağladığı anlamına gelir.

Matematiksel Hesaplama

Tipik bir müşteri destek botunu ele alalım:

  • System prompt: 2.000 token
  • Kullanıcı mesajı: Ortalama 200 token
  • Claude Sonnet 4.6 kullanarak günde 5.000 istek

Caching olmadan:

Günlük girdi maliyeti = 5.000 × 2.200 token × $3.00/1M = $33.00

Anthropic prompt caching ile (%95 cache hit oranı varsayımıyla):

Cache yazma: 250 × 2.200 × $3.75/1M = $2.06
Cache okuma:  4.750 × 2.200 × $0.30/1M = $3.14
Kullanıcı token'ları:  5.000 × 200 × $3.00/1M = $3.00
Günlük toplam = $8.20 (Girdi maliyetlerinde %75 tasarruf)

Uygulama

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc"
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are a customer support agent for Acme Corp...",
            "cache_control": {"type": "ephemeral"}  # Bu, caching'i etkinleştirir
        }
    ],
    messages=[{"role": "user", "content": user_message}]
)

# Yanıt header'larında cache performansını kontrol edin
# cache_creation_input_tokens vs cache_read_input_tokens

OpenAI modelleri için caching otomatiktir. Sadece prompt'larınızın 1.024 token'ı geçtiğinden ve statik prefix'in istekler arasında tutarlı kaldığından emin olun.

Ekiplerin hata yaptığı noktalar:

  • Her prompt'un başına timestamp veya request ID koymak
  • Her çağrıda system instruction'ların sırasını değiştirmek
  • Değişken kullanıcı bağlamını (context) sabit prefix'ten önce yerleştirmek

Prefix her seferinde değişirse, cache asla işe yaramaz. Prompt yapısını sadece bir prompt engineering detayı olarak değil, bir maliyet unsuru olarak görün.

2. Akıllı Model Yönlendirme: Her Görev İçin Doğru Modeli Kullanın

Her istek en pahalı modelinize ihtiyaç duymaz. GPT-4.1'in 2,00 $/1M girdi token'ı karşılığında hallettiği bir sınıflandırma görevi, 0,40 $/1M fiyatındaki GPT-4.1-mini ile de aynı derecede iyi çalışır; bu da 5 kat maliyet düşüşü demektir.

Yönlendirme Stratejisi

Görev Türü Önerilen Model Girdi Maliyeti/1M
Karmaşık muhakeme Claude Opus 4.6 / GPT-4.1 $5.00 / $2.00
Genel sohbet Claude Sonnet 4.6 / GPT-4.1 $3.00 / $2.00
Sınıflandırma, veri çıkarma GPT-4.1-mini / Claude Haiku 4.5 $0.40 / $1.00
Embeddings text-embedding-3-small $0.02
Basit formatlama DeepSeek V3 $0.28

Uygulama

from openai import OpenAI

client = OpenAI(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

def route_request(task_type: str, messages: list) -> str:
    """Bu görevi iyi halleden en ucuz modeli seçin."""
    model_map = {
        "classification": "gpt-4.1-mini",
        "extraction": "gpt-4.1-mini",
        "summarization": "gpt-4.1-mini",
        "complex_reasoning": "gpt-4.1",
        "creative_writing": "claude-sonnet-4-6",
        "code_generation": "claude-sonnet-4-6",
    }
    model = model_map.get(task_type, "gpt-4.1-mini")

    response = client.chat.completions.create(
        model=model,
        messages=messages
    )
    return response.choices[0].message.content

Gerçek Tasarruf

İsteklerin %60'ını (linting, formatlama, basit tamamlamalar) GPT-4.1-mini'ye ve %40'ını (mimari, hata ayıklama) Claude Sonnet 4.6'ya yönlendiren bir kodlama asistanı:

Önce (tamamı Claude Sonnet 4.6):
  1.000 istek/gün × 3K girdi × $3.00/1M = $9.00/gün

Sonra (60/40 ayrımı):
  600 istek × 3K × $0.40/1M = $0.72/gün (mini)
  400 istek × 3K × $3.00/1M = $3.60/gün (sonnet)
  Toplam = $4.32/gün (%52 tasarruf)

3. Batch Processing: Acil Olmayan İşler İçin Daha Düşük Fiyatlar

OpenAI, girdi ve çıktı token'larında %50 indirim sağlayan bir Batch API sunar. Buradaki ödünleşim: sonuçlar gerçek zamanlı yerine 24 saat içinde teslim edilir.

Anthropic de desteklenen modellerde %50 batch indirimi sunar. İş yükünüz gece boyunca çalışıyorsa, asenkron ise veya inceleme odaklıysa, gerçek zamanlı fiyatlar ödemek için nadiren iyi bir neden vardır.

Batching için uygun adaylar:

  • Gece çalışan içerik oluşturma işleri
  • Toplu belge sınıflandırma
  • Veri seti etiketleme
  • Planlanmış rapor oluşturma
# Bir batch dosyası oluşturun (JSONL formatında)
import json

requests = []
for i, doc in enumerate(documents):
    requests.append({
        "custom_id": f"doc-{i}",
        "method": "POST",
        "url": "/v1/chat/completions",
        "body": {
            "model": "gpt-4.1-mini",
            "messages": [
                {"role": "system", "content": "Classify this document..."},
                {"role": "user", "content": doc}
            ]
        }
    })

# JSONL dosyasını yazın
with open("batch_input.jsonl", "w") as f:
    for req in requests:
        f.write(json.dumps(req) + "\n")

# Batch'i gönderin
batch_file = client.files.create(file=open("batch_input.jsonl", "rb"), purpose="batch")
batch = client.batches.create(input_file_id=batch_file.id, endpoint="/v1/chat/completions", completion_window="24h")

Gerçek bir ürün içinde batching için iyi adaylar:

  • Gece çalışan içerik yenileme işleri
  • Destek talebi (ticket) özetleme
  • Embeddings backfill işlemleri
  • Büyük kod tabanı veya belge incelemeleri
  • Düşük öncelikli kullanıcı bildirimleri

Kötü adaylar:

  • Chat yanıtları
  • Etkileşimli kodlama yardımı
  • Bir sonraki kullanıcı eyleminin hemen cevaba bağlı olduğu iş akışları

4. Bonus: Token Sayısını Azaltın

API düzeyinde optimizasyon yapmadan önce, gereğinden fazla token gönderip göndermediğinizi kontrol edin.

Yaygın israf nedenleri:

  • Modelin zaten takip ettiği talimatları tekrarlayan gereksiz uzun system prompt'ları
  • Sadece son 3-5 mesaj önemliyken tüm konuşma geçmişini dahil etmek
  • Düz metin yeterli olacakken ham HTML/markdown göndermek
  • Çıktı uzunluğunu sınırlamak için max_tokens kullanmamak

Prompt uzunluğunda %30'luk bir azalma, doğrudan %30 daha düşük girdi maliyeti anlamına gelir.

İsrafı bulmanın en kolay yolu, route veya özellik bazında prompt uzunluğunu log'lamaktır. Çoğu ekibin model fiyatlandırma sorunu yoktur. Onların "aynı şişkin prompt günde 100.000 kez gönderiliyor" sorunu vardır.

5. Körlemesine Optimize Etmeden Önce Maliyet Görünürlüğü Ekleyin

Maliyet optimizasyonu, ekipler sezgilerine dayanarak hareket ettiğinde başarısız olur.

Yönlendirme kurallarını değiştirmeden önce şunları log'layın:

  • Route veya özellik adı
  • Model
  • Girdi token'ları
  • Çıktı token'ları
  • Cache hit veya miss durumu
  • Retry sayısı
  • Kullanıcı tarafından görülen gecikme (latency)

Bu, önemli soruları yanıtlamanızı sağlar:

  • Hangi route gerçekten yararlı olduğu için pahalı?
  • Hangi route prompt israfı nedeniyle pahalı?
  • Hangi route batch işlemine taşınmalı?
  • Hangi route daha ucuz bir model katmanına taşınmalı?

Bu dört soruyu yanıtlayamıyorsanız, "maliyet optimizasyonunuz" sadece maliyeti bir yerden başka bir yere kaydıracaktır.

6. Gerçek Bir Optimizasyon Sırası

En etkili sıra genellikle şöyledir:

  1. Belirgin token israfını ortadan kaldırın.
  2. Caching'i açın veya düzeltin.
  3. Ucuz görevleri pahalı görevlerden ayırın.
  4. Acil olmayan her şeyi batch işlemine alın.
  5. Ancak ondan sonra sağlayıcı karışımını yeniden müzakere edin.

Bu sıra önemlidir çünkü en büyük tasarruflar genellikle sağlayıcı değiştirmeden önce gelir. Prompt yapısını düzeltmeden satıcı değiştirirseniz, aynı verimsizlik için ödeme yapmaya devam edersiniz.

7. Somut Bir Öncesi ve Sonrası Dağıtımı

Şu anda her istekte şunları yapan bir destek iş akışını ele alalım:

  • 2.000 token'lık bir system prompt gönderiyor
  • Tüm istekler için tek bir premium model çağırıyor
  • Geçici hatalarda aynı prompt yapısını tekrar deniyor (retry)
  • Gece özetlerini batch yerine senkron olarak çalıştırıyor

İlk sürüm genellikle "basit" hissettirir çünkü tek bir kod yoluna sahiptir. Finansal olarak ise aynı anda dört pahalı şey yapmaktadır.

Daha verimli bir dağıtım şuna benzer:

  1. Sabit politika metnini prompt'un başına taşıyın, böylece caching gerçekten çalışabilsin.
  2. Sınıflandırma, veri çıkarma ve kısa özetleri daha ucuz bir model katmanına yönlendirin.
  3. Premium modeli üst mercilere iletme (escalation), karmaşık muhakeme veya nihai cevap sentezi için saklayın.
  4. Gece özetlerini ve backfill işlemlerini batch'e aktarın.
  5. Prompt yapısı bozulan ve cache verimliliğini öldüren route'lar için log'ları haftalık olarak inceleyin.
  6. Bu tür bir dağıtım, sistemi yeniden yazmayı gerektirmez. Bir haftalık ölçümleme ve prompt'lar ile yönlendirmeyi üretim yüzeyleri olarak görme isteği gerektirir.

    8. Neler Yapılmamalı?

    Bir maliyet optimizasyonu çabasını boşa harcamanın en hızlı yolu, yanlış şeyi optimize etmektir.

    Bu tuzaklardan kaçının:

    • Prompt israfını ölçmeden sağlayıcı değiştirmek
    • Çıktı kalitesini doğrulamadan ucuz görevleri ucuz modellere yönlendirmek
    • Prefix'leri her istekte değişen prompt'larda caching'i etkinleştirmek
    • Gerçekten gerçek zamanlı yanıt gerektiren kullanıcı odaklı işleri batch işlemine almak
    • Sadece token fiyatına bakıp retry, latency ve fallback yüklerini görmezden gelmek

    Maliyet çalışması, tasarruf sağlandıktan sonra ürün hala iyi performans gösteriyorsa başarılıdır. Kullanıcı deneyimi (UX) kötüleşirse, tablodaki kazanç sahtedir.

    Hepsini Bir Araya Getirmek

    Teknik Efor Tipik Tasarruf
    Prompt caching Düşük (cache_control ekleyin) Girdide %40-75
    Model yönlendirme Orta (görevleri sınıflandırın) Genelde %30-50
    Batch processing Orta (asenkron iş akışı) Batch işlerinde %50
    Token azaltma Düşük (prompt'ları kırpın) Girdide %10-30

    Bu teknikler birbirini destekler. Dördünü de uygulayan bir ekip, çıktı kalitesinde herhangi bir düşüş olmadan aylık API faturasını gerçekçi bir şekilde 3.000 dolardan 1.000 doların altına indirebilir.

    Temel içgörü: AI API'lerinde maliyet optimizasyonu daha ucuz sağlayıcılar bulmakla ilgili değildir. Her bir özel görev için doğru modeli, doğru fiyat katmanında, doğru caching stratejisiyle kullanmakla ilgilidir.

    Zaten birden fazla sağlayıcı kullanıyorsanız, operasyonel taraf da önemlidir. Migration kılavuzu ve OpenRouter karşılaştırması, ayrı entegrasyonları yamamaya devam etmek yerine yönlendirmeyi ne zaman merkezileştirmeniz gerektiğine karar vermenize yardımcı olur.


    Bugün optimize etmeye başlayın: LemonData, tek bir API key üzerinden 300'den fazla modele erişim sağlar; OpenAI ve Anthropic model aileleri için prompt caching desteği sunar ve kullanımları tek bir yerden karşılaştırmanıza olanak tanır.

Share: