Skip to content

Hidden Costs That Inflate Your Bill: Tool Use, Structured Output, Thinking, Web Search and More

Items not on the pricing page but real on the LLM bill: tool definitions added to input, structured output prefill, reasoning thinking hidden output, web search tool $30/1K, vision detail mode 9× zam. We open the invisible corners of the bill.

Şükrü Yusuf KAYA
18 min read
Intermediate
Faturayı Şişiren Gizli Maliyetler: Tool Use, Structured Output, Thinking, Web Search ve Daha Fazlası
🕵️ Fatura forensiği
Bu ders bir audit. Bir LLM faturasını paragrafına kadar açacağız ve fiyat sayfasında olmayan ama gerçek 6 kalemi göstereceğiz. Bunu görmezden gelen ekip her ay fazla ödüyor.

Gizli #1 — Tool Definition Token'ları#

functions
/
tools
parametresi ile bir LLM'e fonksiyon listesi gönderdiğinde, her isteğin input'una eklenir.

Örnek#

5 tool var:
  • search_database
  • call_api
  • send_email
  • schedule_meeting
  • query_calendar
Her tool'un JSON şeması:
{ "name": "search_database", "description": "Searches the customer database by query string", "parameters": { "type": "object", "properties": { "query": {"type": "string", "description": "The search query"}, "limit": {"type": "integer", "default": 10} }, "required": ["query"] } }
Bir tool tanımı ortalama 150-300 token. 5 tool = 750-1500 ek input token / istek.

Maliyet etkisi (Sonnet 4.6, aylık 100K istek):#

1.000 token × 100K istek × $3/M = $300/ay
$3.600/yıl, sırf tool definition'ı her isteğe yüklediğin için.

Strateji#

  • Tool description'larını minimal tut
  • Aynı pipeline'da kullanılmayan tool'ları eklemе
  • Conditional tool loading: kullanıcı niyetine göre subset gönder
  • Prompt caching ile cache'le (Modül 7)

Gizli #2 — Tool Result Token'ları#

Tool çağrıldığında dönen sonuç bir sonraki LLM çağrısında input olarak gönderilir.

Örnek#

1. LLM çağrısı 1: kullanıcı sorusu → LLM "search_database" çağırır 2. Tool execute → 50 sonuç döner (5K token JSON) 3. LLM çağrısı 2: input = orijinal soru + tool result (5K) + ...
Tool result'ları input olarak faturalandırılır. Tek bir agent loop = 2 LLM çağrısı + 5K ek input.

Strateji#

  • Tool result'ları sıkıştır (önemli alanları al, hepsini değil)
  • LLM'e sadece top-N sonuç dön, hepsi değil
  • Tool result'ları cache'ye alın (Modül 7)
  • Agent loop'unda accumulated history token sayısını izle (Modül 14)

Gizli #3 — Structured Output Prefill#

response_format={"type": "json_schema"}
(OpenAI) veya tool-forced (Anthropic) kullandığında:
  • OpenAI: schema'yı internal olarak inject ediyor — bir-iki yüz token overhead
  • Anthropic: tools'u zorlayınca tool definition token'ı + tool_use prefill

Maliyet#

Genelde küçük (200-500 ek token), ama yüksek-volume'da:
500 token × 100K istek × $3/M = $150/ay

Gizli #4 — Thinking / Reasoning Default Bütçesi#

En büyük gizli fatura kalemi.

Default değerler#

ModelDefault thinking budget
OpenAI o3medium (~3K tokens)
OpenAI o3-minimedium (~2K tokens)
Claude 4.x extended thinkingdisabled (default) ✅
Gemini 2.5 Pro8.192 tokens! ⚠️
Gemini 2.5 Flash1.024 tokens

Hesap#

Gemini 2.5 Pro, default thinking, 100K istek/ay:
8.192 thinking tokens × 100K × $5/M (output) = $4.096/ay
Sadece default thinking için ödenen para. Bilmiyorsan kayıp.

Strateji#

  • Her zaman
    thinking_budget=0
    veya disabled (gereksizse)
  • Gerektiğinde explicitly aç, gerektiğinde kapat
🚨 Gemini'nin gizli vergi
Yeni Gemini hesap açan herkesin bilmesi gereken: default thinking aktif, 8K token bütçesi var. İlk istekten itibaren ödüyorsun. Tüm production çağrılarında
thinking_budget=0
set et.

Gizli #5 — Web Search Tool#

OpenAI'ın yeni
web_search
tool'u, GPT-5'in araştırma yapmasını sağlıyor. Ama:
ToolFiyat
OpenAI web_search_preview$30 / 1.000 search
OpenAI web_search (full)$40 / 1.000 search
Anthropic web_search$10 / 1.000 search (preview)
Gemini Google Search groundingdahil (free)

Maliyet patlaması#

Agent kullanıcı sorusu başına ortalama 3-7 web search yapar.
5 search/istek × 100K istek = 500K search/ay 500K × $30/1K = $15.000/ay 🚨
Sadece web_search ucu için $180.000/yıl.

Strateji#

  • Web search'ü whitelist ile çalıştır — sadece gerektiğinde
  • Cache search results
  • Anthropic'in daha ucuz web_search'ünü değerlendir
  • Custom retrieval (RAG) ile değiştir

Gizli #6 — Vision
detail="high"
Default#

OpenAI image input'larda
detail="auto"
default değer. Çoğu zaman "high" seçilir.

Maliyet farkı#

DetailToken/image$/image @ GPT-5
low85$0.00085
high (1024×1024)765$0.00765
Fark
100K görsel/ay:
  • detail=low: $85/ay
  • detail=high (default): $765/ay

Strateji#

  • Her zaman explicitly
    detail="low"
    veya
    detail="high"
    belirt
  • Default'ta low, gerektiğinde high (örn: OCR, text reading)

Gizli #7 — Cache Miss Sebep Bilmiyorum#

OpenAI cached input %50 indirim için cache hit gerek. Ama niye miss olduğunu fatura sana söylemez:

Cache miss sebepleri (görünmez)#

  • Prompt'un bir tek token değişmesi (whitespace dahil)
  • Tools listesinin sırası değişmesi
  • system_fingerprint değişmesi (model otomatik upgrade)
  • Response format değişmesi
  • Temperature, top_p gibi sampling param değişmesi (bazen)

Strateji#

  • Sistem prompt'u deterministic üret (rastgele JSON ordering yok)
  • Tools listesini sırala (alfabetik)
  • Cache hit ratio'yu izle (Modül 7'de Langfuse ile)

Gizli #8 —
system_fingerprint
Değişikliği#

Anthropic ve OpenAI modelleri arka planda silent revisions yapıyor. system_fingerprint değişince:
  • Cache invalid olur (cache miss)
  • A/B test sonuçları reset olur (yeni model versiyonu)
  • Beklenmedik output tarzı değişimleri

Strateji#

  • system_fingerprint'i her response'tan logla
  • Değiştiğinde alert ver
  • Production'da model snapshot version'ı kullan (
    gpt-5-2026-02-01
    gibi explicit),
    gpt-5
    değil

Fatura Audit Checklist#

Aylık LLM faturanı bu liste ile kontrol et:
  • Tool definition'ları her isteğin input'unda kaç token kaplıyor?
  • Tool result token'ları cache'leniyor mu?
  • Thinking budget explicit set edilmiş mi? (default'ları öldür)
  • Web search tool kontrol altında mı? (whitelist, cache)
  • Vision detail mode default'u explicit? (low vs high)
  • Cache hit ratio izleniyor mu? (Langfuse / Helicone)
  • system_fingerprint değişiklikleri loglanıyor mu?
  • max_tokens her API çağrısında set ediliyor mu?
  • reasoning_effort
    /
    thinking_budget
    parametreleri override edilmiş mi?
  • Streaming kesintilerinin output cost'u izleniyor mu?
Bu 10 maddenin her birini geçmek = otomatik %20-40 tasarruf, çoğu ekipte.
🎉 Modül 2 Tamamlandı
Artık 2026'nın fiyatlandırma manzarasını sistematik biçimde biliyorsun: OpenAI 7 tier, Anthropic prompt cache, Gemini tier tuzakları, Open-weight inference, Enterprise cloud, self-host break-even, ve 8 gizli maliyet kalemi. Bu temel olmadan Modül 3'teki telemetry ölçümü anlamsız.
▶️ Sıradaki modül
Modül 3: Maliyet Telemetrisi — Önce Gör, Sonra Optimize Et. Şimdiye kadar 'maliyet nedir, nereden gelir' öğrendik. Şimdi 'maliyeti ölçüyor muyum' sorusuna geçiyoruz. Langfuse, Helicone, custom dashboard'lar, $/request gerçek izleme — production-grade observability.

Frequently Asked Questions

Langfuse separates input tokens vs cached input tokens per trace. You can track cache hit ratio in the dashboard. If your cache hit rate is under 30%, something's wrong — we'll cover debugging this in Module 7.

Yorumlar & Soru-Cevap

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

Related Content