# Cut Cost up to 90% with Prompt Caching

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/prompt-caching
> Updated: 2026-05-11T13:48:35.261Z
> Category: Claude Ustalığı
> Module: 8. Programmatic Claude with the API
**TLDR:** Cache stable system prompts, large few-shot blocks, and long documents to slash input cost.

# Cache Anatomisi

Prompt'un hangi bölümünü cache'leyeceğini `cache_control` ile işaretlersin. İlk çağrıda 'cache write' biraz pahalı; sonraki çağrılar bu kısım için %90'a varan tasarruf.

```python
resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type":"text",
            "text": LONG_STABLE_SYSTEM_PROMPT,
            "cache_control": {"type":"ephemeral"},
        },
    ],
    messages=[{"role":"user","content": user_text}],
)
# response.usage içinde cache_read_input_tokens / cache_creation_input_tokens alanları olur
```

### Nereye cache_control koymalı?

- Sistem prompt'unun **statik** bölümleri (rol, kurallar, glossary, few-shot).
- Büyük belgeler (RAG kaynaklı uzun pasajlar).
- Tool tanımları.

Değişken kısımları (kullanıcı mesajı) cache dışında bırak.

### TTL ve invalidation

Cache TTL kısa (genelde dakikalar mertebesinde); statik içeriği değişmemiş gibi göster. Bir karakter değişiklik bile cache miss'i tetikler.

### Hit oranını izle

`usage.cache_read_input_tokens` / `usage.input_tokens` ile cache hit oranını günlük dashboard'da takip et. %50 altı genelde sistem prompt'unun değişken parçaları olduğunun işaretidir.

```python
# Cache hit oranı simülasyonu
total_in = 0
cached_in = 0
calls = [
    {"input": 1200, "cached": 0},     # ilk çağrı, cache miss
    {"input": 1200, "cached": 1100},  # cache hit
    {"input": 1200, "cached": 1100},
    {"input": 1200, "cached": 1100},
]
for c in calls:
    total_in += c["input"]
    cached_in += c["cached"]

print(f"Cache hit oranı: {cached_in/total_in*100:.1f}%")
```

**Boşluk doldurma egzersizi (text):**
```text
Cache _____ flag'i ile sistem promptunun bölümleri cache'lenir. Tipik _____ TTL kısa, dakikalar mertebesindedir. Hit oranını izlemek için response _____ alanı kullanılır.
```

> ✋ Kontrol noktası: `q-805-mc1`