# Structured Prompts with XML Tags

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/xml-yapilandirilmis-prompt
> Updated: 2026-05-13T09:14:40.291Z
> Category: Claude Ustalığı
> Module: 2. Prompt Engineering Foundations
**TLDR:** Make your prompts parseable, maintainable, and testable using the XML tags pattern Anthropic recommends.

> **Neden XML?**
>
> Claude'un eğitim kurgusu XML etiketlerine özellikle iyi uyum sağlar. JSON gibi katı yapıların aksine XML metin akışına gömülür ve hem insan hem de model kolay okur.

# Neden XML?

Karmaşık prompt'larda hangi parça neyle ilgili — bu bilgiyi modele net iletmek gerekir. XML etiketleri buna en uygun yapıdır:

- **Görsel olarak tarama kolay.**
- **Programatik olarak parse'lanabilir.**
- **Modelin eğitiminde sıkça karşılaştığı paterndir.**
- **Çıktıyı da etiketler içinde isteyebilirsin.**

```text
<system_role>
Sen Türkçe / İngilizce iki dilli kıdemli bir editorsün.
</system_role>

<context>
Şirket blog yazısı — hedef kitle: ürün yöneticileri.
Marka tonu sade ama otoriter, jargon az.
</context>

<task>
Aşağıdaki taslağı 800 kelimeye düşür. Kilit veriyi kaybetme,
ama ikincil yan örnekleri at.
</task>

<rules>
- Marka adlarını ve sayıları değiştirme.
- Pasif çatıyı aktife çevir.
- En çok 3 alt başlık kullan.
</rules>

<input>
{{makale_metni}}
</input>

<output_format>
<edited_article>
... (sadece düzenlenmiş metin) ...
</edited_article>

<change_log>
- (her bir maddi değişiklik tek satırda)
</change_log>
</output_format>
```

## XML Pattern'leri

Anthropic dokümantasyonunda yaygın olarak şu etiketler önerilir:

- `<role>`, `<system_role>` — modelin perspektifi
- `<context>` — durumsal bilgi
- `<task>`, `<instruction>` — yapılacak iş
- `<rules>`, `<constraints>` — kısıtlar
- `<examples>` ve içinde `<example>` — few-shot
- `<input>` — kullanıcı verisi
- `<output_format>` — beklenen çıktı şekli
- `<thinking>` — CoT alanı
- `<answer>` — nihai cevap

Etiket isimleri mantıklı olduğu sürece **kendi tagını da uydurabilirsin** — Claude bağlamdan ne demek istediğini anlar.

### İyi: anlamlı etiket isimleri

```
<customer_message>...</customer_message>
<priority_level>high</priority_level>
<expected_response>
  <subject>...</subject>
  <body>...</body>
  <next_action>...</next_action>
</expected_response>
```

### Kötü: kısaltılmış / anlamsız

```
<a>...</a>
<b>...</b>
<c>...</c>
```

Bunlar Claude için anlamsız; isabet düşer. İsim her zaman semantik olmalı.

**Adım 1.** Önce minimum yapıyla başla.

```text
# Adım 1: temel iskeleti kur
<role>...</role>
<task>...</task>
```

**Adım 2.** Bağlam ve kuralları ekle — Claude'un çerçevesini netleştir.

```text
# Adım 2: bağlam ve kısıtları ekle
<role>...</role>
<context>...</context>
<rules>...</rules>
<task>...</task>
```

**Adım 3.** Çıktı formatını da XML ile zorla — parsing trivialleşir.

```text
# Adım 3: çıktı formatını XML ile zorla
<role>...</role>
<context>...</context>
<rules>...</rules>
<task>...</task>
<output_format>
<answer>...</answer>
<confidence>0.0-1.0</confidence>
</output_format>
```

**Adım 4.** Üretim seviyesi prompt — örneklerle birlikte.

```text
# Adım 4: few-shot örneklerini ekle
<role>...</role>
<context>...</context>
<rules>...</rules>
<examples>
  <example>
    <input>...</input>
    <answer>...</answer>
    <confidence>0.92</confidence>
  </example>
  <example>...</example>
</examples>
<task>{{user_input}}</task>
```

> **Çıktı parsing'i**
>
> XML çıktı kullanırsan Python'da `re` ile veya `xml.etree` ile basit parser yazılır. Format katı olduğu için parsing gürültüsü çok azalır. Modül 8'de canlı kod ile göreceğiz.

```python
import re

claude_output = """<thinking>
Hmm, müşteri ödeme problemi yaşıyor. Hesap durumu aktif.
Son işlem 'declined' geldi.
</thinking>
<answer>Müşteriye kart bilgilerini kontrol etmesini öneriyorum.</answer>
<confidence>0.84</confidence>"""

answer = re.search(r"<answer>(.*?)</answer>", claude_output, re.S).group(1).strip()
conf = float(re.search(r"<confidence>(.*?)</confidence>", claude_output).group(1))

print("Cevap:", answer)
print("Güven :", conf)
```

**Boşluk doldurma egzersizi (text):**
```text
XML etiketleri prompt yapısını _____ , parse'lanabilir ve test edilebilir kılar. Çıktı formatını da XML ile _____ etmek parsing'i kolaylaştırır. Etiket isimleri her zaman _____ olmalıdır.
```

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