İçeriğe geç

System + Tools + Few-Shot: İçeride Doğru Sıralama

Prompt'un büyük blokları içindeki sıralama da kritik. System içinde KB ve instructions hangi sırada? Tools nereye? Few-shot examples cache'lenir mi? Bu derste mikro-yapı kararlarını sistematik öğreneceksin.

Şükrü Yusuf KAYA
13 dakikalık okuma
Orta

Prompt'un İçinde Doğru Sıralama

Modül 4 Ders 24'te "statik üstte, dinamik altta" altın kuralını öğrendik. Şimdi bu kural prompt'un içindeki katmanlar için de geçerli — ama nüanslarla.

Anthropic system Array'i#

Anthropic
system
parametresi bir array olabilir — birden çok text block. Her birinin değişim hızı farklı olabilir:
python
system_blocks = [
# 1. Şirket bilgi bankası — ayda 1 değişir (50K token)
{
"type": "text",
"text": COMPANY_KB,
"cache_control": {"type": "ephemeral", "ttl": "1h"},
},
# 2. Tool kullanım rehberi — 3 ayda 1 değişir (1K token)
{
"type": "text",
"text": TOOL_USAGE_GUIDE,
"cache_control": {"type": "ephemeral", "ttl": "1h"},
},
# 3. Persona & ton — haftada 1 değişir (500 token)
{
"type": "text",
"text": PERSONA_INSTRUCTIONS,
"cache_control": {"type": "ephemeral", "ttl": "5m"},
},
]
Multi-block system: her blok kendi cache_control'üyle
Sıralama mantığı: En statik (KB, 1h TTL) → en sık değişen (Persona, 5m TTL).
Neden? TTL bittiğinde cache yeniden write. Eğer persona üstte ve 5m TTL'i bitince KB de yeniden write etmek zorunda kalır → maliyet patlar.
Breakpoint Bütçesi
Anthropic'in 4 breakpoint limit'i içinde bu blok'lar 2-3 breakpoint kullanır. Geri kalan tools ve conversation history'ye kalır.

Tools Array'inin Yeri#

Anthropic'te tools parametresi system'den sonra geliyor:
Tools'ı nasıl cache'lersin? Tools array'inin son elemanına cache_control:
python
tools = [
{"name": "search_orders", "description": "...", "input_schema": {...}},
{"name": "track_shipment", "description": "...", "input_schema": {...}},
{"name": "lookup_product", "description": "...", "input_schema": {...}},
{
"name": "escalate",
"description": "...",
"input_schema": {...},
"cache_control": {"type": "ephemeral", "ttl": "1h"}, # ← son tool
},
]
Tool array'inin son elemanına cache_control
Bu cache_control "buraya kadar olan tüm tools cache'lensin" demek. Yani 3 tool da otomatik dahil.
Pratik gözlem: Anthropic'te en sık karıştırılan: cache_control'u system'in son block'una koymak ve "tools da cache'leniyor" sanmak. Hayır, tools ayrıca cache_control istemiyor — kendi bloğunda olmalı.

Few-Shot Examples Cache'lenebilir Mi?#

Evet, hatta kuvvetle önerilir. Few-shot örnekler statik (her sorgu için aynı) → ideal cache adayı.
İki yöntem:
system_blocks = [ { "type": "text", "text": f"""Asistan kuralları: ... # Örnekler ## Örnek 1 User: Siparişim nerede? Assistant: Sipariş numarası alabilir miyim? ## Örnek 2 User: İade nasıl yapılır? Assistant: 14 günlük iade hakkınız var... """, "cache_control": {"type": "ephemeral"}, } ]
Hangisini seçmeli?
  • System içinde: few-shot'lar gerçek diyalog değil; modele "stil rehberi" gibi düşün
  • Messages içinde: few-shot'lar gerçek diyalog formatında; modele "diyaloğun devamı" gibi sunulur
Modern öneri: messages içinde, çünkü çoğu LLM bu formatla daha iyi öğreniyor.

Sıralama Kararı — Sistematik#

Bu prompt blokları için karar matrisi:
BlokDeğişim HızıTTL ÖnerisiSırası
Knowledge Base (50K+)Ayda 1-21h1 (en üstte)
Tool usage guide3 ayda 11h2
Persona / instructionsHaftada 1-25m3
Tool definitionsHafta-3 ay1h4 (tools array)
Few-shot examples (system)Aylık5m veya 1hsystem sonunda
Few-shot examples (messages)Aylık5mhistory başında
Conversation historyHer turn5mhistory sonu
User queryHer istekCache YOKmessages sonu

✓ Pekiştir#

Bir Sonraki Derste#

1, 2, 4 breakpoint mimarileri: hangisi ne zaman? Trade-off analizi.

Sık Sorulan Sorular

Multi-block. Her bloğun değişim hızı farklı olabilir, ayrı cache_control ile kontrol edebilirsin. Tek string verirsen tek bir breakpoint, ya hepsi cache hit ya hepsi miss.

Yorumlar & Soru-Cevap

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

İlgili İçerikler

Bağlantılı Pillar Konular

Bu yazının bağlandığı pillar konular