Çıktı Formatlama: Markdown · Tablo · JSON · XML · YAML
LLM çıktısını programatik olarak işlemek için doğru formatı seçme. Markdown vs JSON vs XML trade-off'ları, parse-edilebilir çıktı pattern'leri.
Şükrü Yusuf KAYA
11 min read
BeginnerÇıktı Formatlama Stratejileri
Çıktıyı insan mı, program mı okuyacak? Cevap, formatı belirler.
Program Okuyacak#
✅ JSON (en yaygın)
✅ XML (tag bazlı)
✅ YAML (insan + makine)
Yapılandırılmış, parse edilebilir.
JSON: Endüstri Standardı#
python
# JSON output — temiz parseimport os, jsonfrom anthropic import Anthropicload_dotenv = lambda *a: None # placeholder client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) system = """Sen bir CV parser'sın. Verilen CV metninden bilgi çıkar. ÇIKTI FORMATI (kesinlikle bu yapıda, başka metin yok):{ "ad_soyad": "string", "email": "string | null", "telefon": "string | null", "deneyim_yili": number, "yetkinlikler": ["string", ...]}""" cv = """Mehmet Yılmazmehmet.yilmaz@example.com | 0532 XXX XX XX 10 yıllık backend mühendisi. Python, Go, PostgreSQL, Kafka, Kubernetes.""" r = client.messages.create( model="claude-haiku-4-5-20251001", max_tokens=300, temperature=0, # JSON için T=0 ŞART system=system, messages=[ {"role": "user", "content": cv}, {"role": "assistant", "content": "{"} # prefilling — JSON ile başlat ],) # Prefilled '{' + LLM çıktısı = tam JSONraw = "{" + r.content[0].textdata = json.loads(raw)print(data)print(f"Yetkinlikler: {data['yetkinlikler']}") T=0 + prefilling = sağlam JSON parsing.
JSON parse failure olursa: (1) prefilling kullan, (2) "JSON Mode"u aç (vendor destekliyorsa), (3) Pydantic/Zod ile validation, (4) retry on parse error. Modül 6'da derinlemesine.
XML / Tag Tabanlı: Anthropic'in Favorisi#
Claude için XML benzeri etiketler çok güçlü:
text
Görev: Aşağıdaki yorumu sınıflandır. <yorum>Ürün hızlı geldi, ama kutu hasarlıydı. İçindeki sorun yok ama estetik kötü.</yorum> Cevabını şu yapıda ver: <analiz> <duygu>olumlu | nötr | olumsuz</duygu> <kategori>kargo | ürün kalitesi | fiyat | iade</kategori> <oncelik>1-5 arası</oncelik> <ozet>1 cümlelik özet</ozet></analiz>XML format şablonu
Avantaj: Hierarchik yapı, escape sorunu yok (string içine kod yazsan bile), regex parse kolay.
YAML: İnsan + Makine Dostu#
{ "task": "deploy", "env": "production", "services": ["api", "web", "worker"], "config": { "replicas": 3, "memory": "2Gi" } }
Markdown: İnsan Çıktıları İçin#
Tablo, başlık, liste, kod bloğu — UI'da render edilebilir.
text · diff modu
Senin kodun
Hedefe karşı diff
+ # Ürün Karşılaştırması++ | Özellik | iPhone 16 | Samsung S25 |+ |---------|-----------|-------------|+ | Fiyat | $1500 | $1300 |+ | Ekran | 6.1" | 6.2" |+ | İşlemci | A18 | Snapdragon 8 Gen 4 |++ **Karar:** Bütçe kıstasıysa Samsung; ekosistem (FaceTime, AirDrop) kıstasıysa Apple.- Ürün karşılaştırması:- iPhone 16: 1500 dolar, 6.1 inç, A18 chip- Samsung S25: 1300 dolar, 6.2 inç, Snapdragon 8 Gen 4
Düz metin → Markdown tablo
Format Seçim Kararı#
Pekiştir: Boşluk Doldurma#
Boşluk doldur · text
Bir CRM sistemine entegrasyon için müşteri yorumlarını sınıflandıracağım. Çıktıyı kod ile parse edip DB'ye yazacağım. En uygun format: Temperature ayarı: T = Tutarlılık için ek teknik:
Frequently Asked Questions
OpenAI: response_format={'type':'json_object'}. Anthropic: prefilling + tools daha güvenilir. Detay Modül 6'da.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Bu Eğitim Hakkında ve Verimli Çalışma Yöntemi
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Yapay Zekâ → Üretken AI → LLM: Bağlamsal Harita
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş