# Eval Sets and LLM-as-Judge

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/evals
> Updated: 2026-05-11T13:48:35.532Z
> Category: Claude Ustalığı
> Module: 9. Production
**TLDR:** Design eval sets that measure production quality: building, balancing, auto-scoring (LLM-as-judge), human calibration.

> **Eval'siz üretim — körü körüne uçmak**
>
> Üretime aldığın bir Claude pipeline'ının kalitesini ölçemiyorsan, bozulduğunu da bilemezsin.

# Eval Setinin 4 Katmanı

1. **Dataset:** Gerçek dünyadan örnekler + edge case + adversarial.
2. **Metric:** Doğruluk, format uyumu, halüsinasyon, ton, latency, maliyet.
3. **Judge:** Otomatik (LLM, kural tabanlı) + insan örneklemesi.
4. **Dashboard:** Trend, regression alarm, prompt sürümü kıyas.

### Dataset oluşturma

- **Real:** Gerçek üretim trafiğinden 100-500 örnek (PII'siz).
- **Edge:** Sınır vakaları (boş input, çok uzun, çok dilli, hatalı format).
- **Adversarial:** Prompt injection denemesi, jailbreak, halüsinasyon tuzağı.

Dengeyi koru: %60 real, %20 edge, %20 adversarial.

### LLM-as-judge

Otomatik puanlamada başka bir Claude (genellikle Opus) **judge** rolü oynar:

```text
<judge_role>Sen kıdemli bir kalite hakemisin.</judge_role>
<rubric>
- Doğruluk (0-5)
- Format uyumu (0-5)
- Halüsinasyon (0-5, ters skala)
- Ton (0-5)
</rubric>
<input>{{user_input}}</input>
<output>{{model_output}}</output>
<task>Her boyutta puan ver, kısa gerekçe yaz, JSON döndür.</task>
```

Judge seçimini bizzat **kalibre et** — birkaç örneği insan ekibi puanlar, judge ile karşılaştır.

### İnsan kalibrasyonu

Judge'ın kalibrasyonunu sürekli kontrol et:

- Haftada 1, judge skoru ile insan skoru arasında uyum (Cohen's Kappa).
- 0.7 altına düşerse rubric'i revize et.

### Eval matriks örnekleri

| Senaryo | Doğruluk | Format | Halüs. | Ton |
| --- | --- | --- | --- | --- |
| Happy path | 4.6 | 4.9 | 0.1 | 4.5 |
| Edge | 3.8 | 4.2 | 0.6 | 4.1 |
| Adversarial | 4.3 | 4.7 | 0.0 | 4.4 |

Trend analizi yapılır; her prompt sürümünde takip edilir.

```python
# Mini eval runner
def f1(p, r):
    return 2*p*r/(p+r) if (p+r) else 0

scores = [
    {"id":"t1","precision":0.92,"recall":0.88},
    {"id":"t2","precision":0.84,"recall":0.91},
    {"id":"t3","precision":0.78,"recall":0.66},
]
for s in scores:
    s["f1"] = round(f1(s["precision"], s["recall"]), 3)
    print(s)
```

**Boşluk doldurma egzersizi (text):**
```text
Eval setinin 4 katmanı: dataset, _____ , judge ve _____ . LLM-as-judge'ı haftada bir _____ ile kalibre et. Dengeyi 60/20/20 oranında real / _____ / adversarial olarak tut.
```

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