Skip to content

Çı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.

İnsan Okuyacak#

✅ Markdown ✅ Düz metin ✅ Tablo (markdown)
Esnek, okunabilir, görsel.

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 parse
import os, json
from anthropic import Anthropic
load_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ılmaz
mehmet.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 JSON
raw = "{" + r.content[0].text
data = 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