Output Kısaltma Teknikleri: max_tokens, Stop Sequences ve "Be Terse" Promptun Gerçek Etkisi
Output 3-5× pahalı olduğundan, output'u küçültmek faturana doğrudan etki eder. Bu derste max_tokens stratejisi, stop sequence'lerin doğru kullanımı, "be terse" prompt'larının ölçülmüş etkisi ve format-driven kısıtlamalar.
Şükrü Yusuf KAYA
15 dakikalık okuma
Orta✂️ Output, faturanın yarısı
Tipik LLM faturası output'tan gelir (3-5× input fiyatından). Modül 5'in zirvesinde: output kısaltmanın 6 tekniği. Hepsi A/B test edilmiş, hepsi production'da çalışıyor.
Teknik 1 — max_tokens Her İstekte Set Et#
max_tokensDefault'ta her API'nin max_tokens'ı çok yüksek (4K-8K). Model verbose olunca tam buna kadar gidebilir.
Doğru ayar#
TASK_LIMITS = { "yes_no": 10, "extract_email": 30, "classify": 20, "short_summary": 150, "medium_response": 400, "long_summary": 800, "code_generation": 1500, } response = completion( model="claude-sonnet-4-6", messages=[...], max_tokens=TASK_LIMITS[task_type], )
Kullanım pattern'ı izle#
Her görev tipi için gerçek output token dağılımını logla. P95'in biraz üstüne max_tokens koy — outlier'lar çok ucuza kesilir, normal kullanım etkilenmez.
SELECT feature, quantile(0.50)(output_tokens) AS p50, quantile(0.95)(output_tokens) AS p95, quantile(0.99)(output_tokens) AS p99, max(output_tokens) AS max FROM llm_telemetry.requests WHERE feature = 'summarization' AND ts >= now() - INTERVAL 7 DAY
Eğer P95 = 320, P99 = 480 ise: max_tokens=500 koy. %1 outlier kesilir, %99'u etkilenmez.
Teknik 2 — Stop Sequence'ler#
stopKullanışlı durumlar#
2.1 — Few-shot pattern sonlandırma
messages = [{ "role": "user", "content": "Soru: ...\nCevap:" }] # Stop sequence: "\nSoru:" — model bir sonraki "Soru:"'ya gelince durur response = completion(model=..., messages=messages, stop=["\nSoru:"])
2.2 — JSON wrap'i sonlandırma
# Anthropic prefill ile messages = [ {"role": "user", "content": "..."}, {"role": "assistant", "content": "{"}, ] response = completion(model=..., messages=messages, stop=["}"]) result = "{" + response.choices[0].message.content + "}"
2.3 — Markdown section kesme
# Model markdown üretiyor, sadece ilk section'ı al response = completion(model=..., messages=[...], stop=["\n## ", "\n### "])
Kaç stop sequence?#
OpenAI/Anthropic genelde max 4 stop sequence destekler. Stop sequence token sayılmıyor — pure tasarruf.
Teknik 3 — "Be Terse" Prompt#
Sistem prompt'una eklenen tek cümle bazen %30-50 output tasarrufu sağlar:
Be extremely concise. Respond with the minimum text needed. Never use phrases like "Of course!", "Certainly", or "Here is...". Skip greetings and closings.
veya Türkçe:
Aşırı kısa cevap ver. Selamlama, "Tabii", "İşte burada" gibi kalıpları kullanma. Sadece istediği bilgiyi ver.
A/B Test sonucu (kendi production'umda)#
| Variant | Ortalama output token | Quality skoru |
|---|---|---|
| Baseline (no instruction) | 380 | 4.2/5 |
| "Be terse" | 210 | 4.1/5 |
%45 output tasarrufu, kalite düşüşü %2 (negligible).
Teknik 4 — Format Constraint#
Output formatını explicit kısıtla:
"Cevabını maksimum 2 cümlede ver." "Bullet point liste, her bullet 5-7 kelime." "Sadece sayı dön, kelime yok." "Tek kelimelik cevap."
Test sonuçları#
| Constraint | Avg output token |
|---|---|
| (none) | 400 |
| "max 3 cümle" | 150 |
| "bullet 5 madde" | 220 |
| "sadece sayı" | 5 |
| "tek kelime" | 1-2 |
Model çok iyi takip ediyor bu kısıtlamaları. Use it.
Teknik 5 — Preamble Yasaklama#
Modeller cevaba "Tabii ki!", "Elbette", "İşte burada:" gibi açılışlarla başlamayı sever. Bunlar 5-15 token / cevap israf.
Sistem prompt'a ekle#
Asla cevaba "Tabii", "Elbette", "Anladım", "İşte" ile başlama. Direkt asıl cevabı ver.
Tasarruf küçük per-istek ama high-volume'da değer. 1M istek × 10 token × 150/ay**.
Teknik 6 — Erken Streaming Cancel#
Streaming response'da, modelin gereksiz uzun cevap üretmeye başladığını algılarsan stream'i kes.
Heuristic#
async def stream_with_smart_cancel(): total_tokens = 0 repeated_phrases = [] async for chunk in stream: delta = chunk.choices[0].delta.content if not delta: continue total_tokens += 1 yield delta # Erken kes - 200 token'dan fazlaysa ve tekrar ediyorsa if total_tokens > 200 and is_repeating(repeated_phrases): stream.close() break
Aşırı uzun cevap üreten edge case'lerde işe yarar (bot-like behavior, infinite loop).
Combined Impact#
Tek teknik %5-15. Hepsi birlikte:
Baseline (bir RAG cevap)#
- Output: 600 token
- Cost (Sonnet 4.6): $0.009
Optimize edilmiş#
- max_tokens=350 → %42 cap
- "Be terse" prompt → %45 ek azalma
- "No preamble" → 10 token tasarruf
- Format constraint ("max 3 cümle") → güçlü kısıtlama
Sonuç#
- Output: 150 token (-%75)
- Cost: $0.00225 (-%75)
100K istek/ay = $675 tasarruf sadece output kısaltmaktan.
Kalite Monitoring#
Output kısaltırken kalite riskli — sürekli izle.
Metric'ler#
- Customer satisfaction (CSAT) — kullanıcı feedback'i
- Task completion rate — cevap kullanıcı sorununu çözdü mü?
- Re-ask rate — kullanıcı aynı soruyu tekrar mı soruyor?
- Human escalation rate — human-handoff oranı arttı mı?
Alert#
Eğer output kısaltma sonrası: - CSAT %5'ten fazla düştü → rollback - Re-ask rate %20'den fazla arttı → rollback - Task completion %3'ten fazla düştü → rollback Aksi takdirde → ship
🎉 Modül 5 Tamamlandı
Artık prompt'unu kalite kaybetmeden %40-70 küçültebilirsin. Bu kursun en doğrudan tasarruf üreten modülü. Şimdi Modül 6'da daha radikal bir teknik var: LLM ile prompt sıkıştırma (LLMLingua).
▶️ Modül 6'ya geçiyoruz
Modül 6: Prompt Sıkıştırma. LLMLingua, Selective-Context, gisting — modern prompt compression teknolojileri. Manuel optimizasyondan otomatik AI-driven compression'a. %80 sıkıştırma, %3 kalite kaybı — pattern devamı.
Sık Sorulan Sorular
Cevap ortasında kesilir, UX kötü. Çözüm: P95-P99 dağılımına bak, %95-99 isteğin geçeceği seviyede tut. Outlier %1-5 kullanıcı feedback'i değerlendirilebilir. Streaming response'da kullanıcı kesintiyi daha kolay fark eder — UX'a dikkat.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Modül 0: Neden Maliyet, Neden Şimdi?
AI Maliyet Patlaması: 2022'den 2026'ya Token Fiyatları Neden %96 Düştü Ama Faturalar Neden 40 Kat Arttı?
Öğrenmeye BaşlaModül 0: Neden Maliyet, Neden Şimdi?
Birim Ekonomisi Sözlüğü: COGS, Gross Margin, $/User, Contribution Margin — Mühendisin Bilmesi Gereken 9 Finansal Kavram
Öğrenmeye BaşlaModül 0: Neden Maliyet, Neden Şimdi?