İçeriğe geç

Input vs Output Token: 5× Pahalı Olan Hangisi ve Bunu Neden Bilmen Senin İçin Para Kazandırır?

Tüm büyük LLM'ler input token'ı output token'dan 3-5× daha ucuz fiyatlandırıyor. Bu fark teknik bir tesadüf değil — temelde GPU ekonomisi var ve mühendislik kararlarını doğrudan şekillendiriyor. 'Çok input, az output' tasarımı %40-60 tasarruf demek.

Şükrü Yusuf KAYA
18 dakikalık okuma
Orta
Input vs Output Token: 5× Pahalı Olan Hangisi ve Bunu Neden Bilmen Senin İçin Para Kazandırır?
⚖️ Bir maliyet asimetrisi
OpenAI: input 10/M,output10/M, output 30/M. Anthropic: input 3/M,output3/M, output 15/M. Gemini: input 1.25/M,output1.25/M, output 5/M. Output her zaman 3-5× pahalı. Niye? Ve bu asimetriden nasıl faydalanırız?

Fiyat tablosu — Asimetri çıplak gözle#

ModelInput ($/M)Output ($/M)Oran (out/in)
Opus 4.7$15$755.0×
Sonnet 4.6$3$155.0×
Haiku 4.5$1$55.0×
GPT-5$10$303.0×
GPT-5-mini$0.40$1.604.0×
Gemini 2.5 Pro$1.25$54.0×
Gemini 2.5 Flash$0.075$0.304.0×
DeepSeek V3.5$0.27$1.104.1×
Llama 3.3 70B (Groq)$0.59$0.791.3×
Llama 3.3 70B (Together)$0.88$0.881.0×
İlginç anomali: self-host modellerinin (Llama, Mistral) inference servisleri sıkça eşit fiyat veriyor. Sebebi: bu sağlayıcılar kendi marjlarını kendi ekonomilerine göre kuruyor. Frontier lab'lar (OpenAI, Anthropic, Google) ise asimetri uygular.
Niye?

Sebep: Prefill vs Decode — GPU Ekonomisi 101#

LLM inference iki fazda çalışır:

Faz 1 — Prefill (Input işleme)#

Modele input verdiğinde, tüm input token'larını paralel olarak işler. GPU'lar paralel işleme harika. 4.000 token'lık bir prompt'u bir batch'te işlemek ~50ms.
Ana sınır: GPU memory bandwidth ve compute. Genelde compute-bound.

Faz 2 — Decode (Output üretme)#

Output token'larını tek tek üretir. Her token üretmek için tüm önceki token'ların KV cache'ini okur, attention hesaplar, bir sonraki token'ı çıkarır.
Ana sınır: GPU memory bandwidth. Genelde memory-bound.
Bu çok kritik bir fark. Decode fazı GPU'yu çok daha az verimli kullanır — paralelizm yok, memory'yi sürekli okur.

Maliyet etkisi#

Bir A100 GPU saatlik $1.50 maliyetli olsa:
  • Prefill: saatte ~4M token (paralel)
  • Decode: saatte ~800K token (sıralı)
5× verim farkı. Bu yüzden 5× fiyat farkı.
🧠 Anahtar içgörü
Output 'token başına 5× pahalı' demek 'token başına 5× zor' demek. Bu, hile değil; gerçek bir mühendislik kısıtının fiyata yansıması. Ama biz mühendisler için bir kaldıraçtır — "output yerine input kullan" tasarımı = tasarruf.
Prefill paralel hızlı, decode tek tek yavaş
Prefill all-at-once parallelism — Decode token-by-token serial. GPU economics asymmetry'yi belirler.

Tasarım Pattern 1 — "Verbose Input, Concise Output"#

Bu pattern asimetrinin doğrudan kullanımı:
Input'a istediğin kadar bilgi koy (ucuz). Output'u minimum tut (pahalı).

Anti-pattern#

USER: "Detaylı bir özet üret." MODEL: 800 token cevap üretir

Doğru pattern#

USER: "Sadece ana 3 noktayı bullet-point olarak yaz. Her bullet 1 cümle." MODEL: 80 token cevap üretir
Aynı bilgi içerik — input'ta biraz daha fazla talimat (ucuz), output dramatik daha az (pahalı). %75-90 output tasarrufu, kalite kaybı sıfır.

Tasarım Pattern 2 — Few-shot examples (cheap)#

Few-shot learning klasik bir teknik. Ama maliyet açısından da harika: 5 örnek ekle (5 × 100 token = 500 input token), output kalitesi yükselsin, post-processing maliyeti düşsün.
SİSTEM: "Aşağıdaki örneklere bakarak benzer formatta cevap ver: Örnek 1: ... Örnek 2: ... ... Örnek 5: ..."
500 input token × 3/M=3/M = 0.0015 ek maliyet. Karşılığı: output formatı doğru, retry yok, post-processing yok.
Aynı işi 1500 output token'ında retry yapsan: $0.0225 — 15× pahalı.

Tasarım Pattern 3 —
max_tokens
ile hard cap#

API çağrılarında
max_tokens
parametresi var. Modelin maksimum kaç output token üretebileceğini söyler.
response = openai.chat.completions.create( model="gpt-4o", messages=[...], max_tokens=200, # ← bunu MUTLAKA koy )
Neden hayati: Modeller bazen "verbose mode"a girer, 4.000 token cevap üretir.
max_tokens
koymadıysan ödediğin para budur. Koyduysan, modeli erkenden keser.
Pro tip:
max_tokens
'ı kullanıcı senaryosuna göre dinamik ayarla:
  • Yes/no cevap:
    max_tokens=10
  • Kısa özet:
    max_tokens=150
  • Detaylı analiz:
    max_tokens=800
  • Hiçbir zaman
    max_tokens
    koymadan çağırma.
⚠️ max_tokens tuzakları
max_tokens çok düşük olursa cevap ortasında kesilir — kullanıcı deneyimi felaket. Yapılması doğru olan: model'in tipik output uzunluğunu logla (Langfuse ile), %95 percentile'ın üzerine biraz tampon ekle. Modül 3'te bu logging'i kuracağız.

Tasarım Pattern 4 — Structured output (JSON mode)#

response_format={"type": "json_object"}
veya
tools=[{...}]
kullandığında, model çıktısı kısıtlanır. JSON kapanmadan tamamlamaz, ekstra "blabla" üretmez.

Karşılaştırma#

SERBEST CEVAP (400 output token): "Tabii ki, ilgili bilgileri aşağıda sıralıyorum: 1. ... 2. ... 3. ... Eğer ek bilgi isterseniz lütfen sorun." STRUCTURED OUTPUT (180 output token): {"items": ["...", "...", "..."]}
%55 daha az output token, parse etmesi daha kolay, post-processing yok.
Modern API'lerin neredeyse hepsi structured output destekliyor:
  • OpenAI:
    response_format
  • Anthropic:
    tools
    (tool_use forçalanır)
  • Gemini:
    response_mime_type: "application/json"
  • Together/Groq:
    response_format
    (çoğu modelde)

"Düşünme Token'ları" Tuzağı — Yeni Bir Maliyet Sınıfı#

2024 sonu / 2025 başında bir yeni model sınıfı çıktı: reasoning modelleri. OpenAI o1/o3, Claude extended thinking, Gemini Deep Think, DeepSeek-R1.
Bunlar, cevap vermeden önce "düşünüyor" — yani modelin iç monolog token'ları üretiyor, bunlar görünmüyor ama output olarak faturalandırılıyor.

Maliyet etkisi#

GörevStandard modelReasoning model
Basit cevap200 output token200 + 0 thinking
Orta zorluk400 output400 + 2.000 thinking
Karmaşık matematik800 output800 + 15.000 thinking
15.000 thinking token × 15/M=15/M = **0.225 / istek**. Standard model'le aynı görevi 5× daha pahalı çözüyor — ama doğruluk %40 daha yüksek olabilir.

Karar çerçevesi#

Reasoning model ne zaman değer?
  • ✅ Matematik, kod, multi-step planning
  • ✅ Doğruluk hata-toleranslı değil (medical, legal, finance)
  • ❌ Basit cevaplar
  • ❌ Yaratıcı yazım (genelde daha kötü)
  • ❌ Hızlı UX gerekli yer (latency yüksek)
💡 Pro tip: thinking budget ayarla
Claude'da
thinking.budget_tokens=2000
parametresi ile maksimum düşünme uzunluğunu sınırlayabilirsin. OpenAI'da
reasoning_effort: "low|medium|high"
benzer kontrol. Default'u "medium" yapmak iyi başlangıç.

Vaka: Bir RAG cevabı 2× nasıl ucuzlatılır?#

Baseline: Bir RAG cevap pipeline'ı
  • Input: 4K tokens (prompt + retrieved chunks + soru)
  • Output: ortalama 600 tokens (verbose cevap)
  • Maliyet: 4000×3/M+600×3/M + 600×15/M = 0.012+0.012 + 0.009 = $0.021/istek

Optimizasyonlar:#

Adım 1 — max_tokens=400:
  • Output ortalama 350 tokens (model erken kesilir, gereksiz kapanış yok)
  • Maliyet: 0.012+0.012 + 0.00525 = $0.01725 (−18%)
Adım 2 — Structured output:
  • Output 200 tokens (JSON, "Lütfen sorun varsa..." cümleleri yok)
  • Maliyet: 0.012+0.012 + 0.003 = $0.015 (−29%)
Adım 3 — "Be terse" sistem prompt:
  • Output 150 tokens (model bilinçli kısa konuşuyor)
  • Maliyet: 0.012+0.012 + 0.00225 = $0.01425 (−32%)
Adım 4 — Input 3K'ya sıkıştır (Modül 5):
  • Input 3000, output 150
  • Maliyet: 0.009+0.009 + 0.00225 = $0.01125 (−46%)
Toplam tasarruf: %46. Pipeline tasarımıyla.

Bu asimetrinin sana verdiği fırsatlar — özet#

  1. Verbose input, concise output — input'a yatırım yap, output'u kontrol et
  2. Few-shot examples — input maliyeti küçük, output kalitesini artırır
  3. max_tokens her zaman — sınırsız output = sınırsız fatura
  4. Structured output — daha az gevezelik, daha az token
  5. Reasoning modellerine dikkat — gizli thinking token'ları büyük fatura kalemi
Bu 5 prensip Modül 5'te (prompt optimizasyonu) detaylı uygulanacak. Şimdi temeli oturmuş olsun.
▶️ Sıradaki ders
1.5 — Context Window Ekonomisi. 200K, 1M, 10M token bağlam pencereli modeller artık her yerde. Ama büyük bağlam ucuz değil — gerçek maliyet nedir, ne zaman değer, nasıl yönetilir?

Sık Sorulan Sorular

Streaming response'larda son chunk'tan sonra `usage` objesi gelir (OpenAI ve Anthropic'te). Eğer Stream'i yarıda kesersen (kullanıcı tab'ı kapattı), o ana kadar üretilen output token'lar faturalanır. Modül 3'te streaming + token counting nuance'lerini detaylı işleyeceğiz.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler