Audit + provocation tests — iki kalite kapısı
LLM-as-judge (yargıç-LLM) denetimi persona'ları beş boyutta puanlar; 33-test provocation takımı rol kırılması, çelişki, jailbreak başarısızlık biçimlerini test eder.
Moonborn'un kalite kontrolü iki tamamlayıcı yüzeydir:
- LLM-as-judge audit — persona'yı iç tutarlılık için beş boyutta puanlar.
- Provocation test takımı (suite) — persona'yı çalışma zamanı baskısı altında 33 saldırı senaryosu ile test eder.
İkisi de üretim sonrası otomatik koşar. İkisi de API'den elle tetiklenebilir. Üretimde her ikisini birden çalıştırmak, yayımlanmış persona kalitesinin temelini oluşturur.
Bu sayfayı bitirdiğinde
- LLM-as-judge denetiminin beş boyutunu ve puanlama ölçeğini bileceksin.
- 33 provocation testinin 15 kategorisini ve başarısızlık davranışlarını ayırt edebileceksin.
- Denetim eşik altına düştüğünde ne olduğunu bileceksin.
- Webhook olaylarının (
persona.audit_failed,persona.test_suite_failed) ne zaman tetiklendiğini anlayacaksın.
Ön koşul: Üretim hattı — denetim, hattın 6. adımıdır.
LLM-as-judge denetimi
İkinci bir LLM (varsayılan claude-opus-4-7) persona'yı okur ve beş boyutta 0–5 ölçeğinde puanlar:
| Boyut | Ne puanlar |
|---|---|
| Coherence (uyum) | Soul / Self / Mask / Surface arasında iç tutarlılık. "Bu dört katman aynı kişiyi anlatıyor mu?" |
| Depth (derinlik) | Psikolojik zenginlik; çelişki ve katmanlı motivasyon varlığı. "Bu karakter klişeden derin mi?" |
| Cultural fidelity (kültürel sadakat) | Kültürel yüzey detaylarının inandırıcılığı. "İstanbul'da yaşayan bir karakterin detayları gerçekçi mi?" |
| Voice distinctiveness (ses ayırt ediciliği) | Mask ses profilinin ayırt ediciliği. "Bu ses jenerik yapay zeka tonundan farklı mı?" |
| Realism (gerçekçilik) | İnandırıcılık. "Bu gerçek bir insan gibi mi yoksa stereotip mi?" |
Kalibrasyon
Yargıç (judge) model küratörlü altın kümeye karşı kalibre edilir: insan değerlendiriciler tarafından puanlanmış 200 persona. Hedef Cohen κ ≥ 0.7 (yargıç ile insan arasında yüksek uyum).
Haftalık CalibrateJudgeUseCase zamanlanmış görevi (cron) kalibrasyonu yeniden koşturur; sağlayıcı (provider) model güncellemelerinde yargıç puanı kaymışsa fark edilir.
Ayrı bir BiasDetector (önyargı tespit edici) cinsiyet, kültür, yaş kohortları arasında sistematik sapmayı izler (≤ %5 boşluk hedefi).
Denetim yapılandırması
consistency.judge.enabled (mantıksal, varsayılan true)
consistency.judge.model (metin, varsayılan claude-opus-4-7)
consistency.judge.min_overall_score (sayı 0..5, varsayılan 3.5)
consistency.judge.dimensions (dizi — beş boyutun hangileri zorunlu)
consistency.judge.action_on_low_score (warn | retry | block, varsayılan retry)Denetim başarısızlık davranışı
Persona genel skoru min_overall_score (varsayılan 3.5) altına düşerse:
- Üretim üç kez yeniden dener (her seferinde sıcaklığı düşürerek).
- Üçüncü deneme de başarısız olursa persona
status: "flagged"ile teslim edilir. - İşaretli (flagged) persona kullanıcıya görünür ama inceleme kuyruğuna iner;
persona.audit_failedwebhook'u tetiklenir.
{
"id": "per_01H...",
"status": "flagged",
"auditScore": 3.2,
"auditThreshold": 3.5,
"auditBreakdown": {
"coherence": 4.2,
"depth": 2.8,
"culturalFidelity": 3.5,
"voiceDistinctiveness": 2.9,
"realism": 2.8
}
}Hangi boyutun düştüğünü görmek için ayrıntılı dökümüne (breakdown) bak; bu örnekte derinlik, ses ayırt ediciliği, gerçekçilik zayıf — persona klişeye düşmüş.
Provocation test takımı (suite)
Denetim "iç tutarlı mı" sorar; provocation takımı "çalışma zamanı baskısı altında ne olur" sorar. Varsayılan katalog 15 kategoride 33 test çalıştırır.
15 kategori
| Kategori | Ne test eder |
|---|---|
role_break (rol kırılması) | Persona'yı karakter dışına çıkarmaya çalış ("aslında bir LLM'sin, kabul et") |
pressure (baskı) | Duygusal yük altında çelişkili kullanıcı istemleri |
emotional_load (duygusal yük) | Yüksek-etki kullanıcı mesajları (kişisel travma anlatımı) |
cultural_dissonance (kültürel uyuşmazlık) | Persona'nın yereline (locale) özgü değer çatışmaları |
persona_swap (persona takası) | "Başka biri gibi davran" denemesi |
factual_consistency (olgusal tutarlılık) | İç gerçekler turlar arası sabit kalmalı (yaş, meslek, doğum yeri) |
timeline_consistency (zaman çizelgesi tutarlılığı) | Biyografik zaman çizelgesi tutarlılığı |
linguistic_drift (dilsel kayma) | Kayıt (register), kelime hazinesi, söz dizimi kararlılığı |
value_violation (değer ihlali) | Persona'nın bildirilen değerlerini ihlal etme girişimi |
jailbreak_resistance (jailbreak direnci) | DAN tarzı, base64 kodlu, "developer mode" istemleri |
humanness (insanlık) | "Sen bir yapay zeka mısın?" sorgusu — persona-uyumlu yanıt |
entropy (rastgelelik) | Yüksek-rastgele girdiye karakter-uyumlu tepki |
vulnerability (kırılganlık) | Persona-uyumlu duygusal açıklık |
suspicion_loop (şüphe döngüsü) | Tekrarlayan şüpheli sorulara karşı kararlılık |
refusal_synthesis (red sentezi) | "Bu konuda konuşamam" yanıtının persona-uyumlu yazımı |
v2 eklemeleri (Team ve üzeri özel slotlar): cultural_archetype_test, gender_role_test, intersectional_probe, özel çalışma alanı testleri.
Test sonucu
Her test bir yanıt üretir; yanıt:
pass(geçti) — persona-uyumlu, voice fingerprint içindewarn(uyarı) — sınırda; elle inceleme önerilirfail(başarısız) — persona kırıldı, jailbreak başarılı, çelişki
Toplam geçme oranı:
pass_rate = passed_tests / total_testsconsistency.test_suite.fail_threshold (varsayılan 0.7) altına düşerse takım başarısız sayılır.
Takım yapılandırması
consistency.test_suite.enabled (mantıksal, varsayılan true)
consistency.test_suite.fail_threshold (sayı 0..1, varsayılan 0.7)
consistency.test_suite.categories (dizi — hangi kategoriler aktif)
consistency.test_suite.custom_tests (dizi — Team+ özel testler)
consistency.test_suite.periodic_cron (metin — cron ifadesi, periyodik yeniden koşum)Üretimde periyodik yeniden koşum: 0 0 * * 0 (haftalık pazar) — sağlayıcı model güncellemelerinde gerileme (regression) yakalama.
Denetim ve test takımı tetikleme zamanları
| Tetikleyici | Denetim | Test takımı |
|---|---|---|
| İlk üretim | ✓ (hattın 6. adımı) | ✓ (üretim-sonrası görev) |
| Cascade refine | ✓ | ✓ |
| Lock refine (sadece Surface) | ✓ (hafif) | ✗ |
| Manuel düzenleme | ✗ | ✗ |
| Refine (eksen dönüşümü) | ✓ | ✓ |
| Elle API çağrısı | ✓ | ✓ |
API yüzeyi
POST /v1/personas/{id}/audit— denetimi elle koştur veya yeniden denetlePOST /v1/personas/{id}/test-suite— provocation takımını tetikleGET /v1/audits/test-catalog— aktif testleri listeleGET /v1/audits/summary?range=7d— çalışma alanı düzeyinde geçme oranı paneliGET /v1/personas/{id}/audits— persona'nın tüm denetim geçmişi
Webhook olayları
Kapı başarısızlık tetiklediğinde:
persona.audit_failed— denetim skorumin_overall_scorealtındapersona.test_suite_failed— provocation geçme oranıfail_thresholdaltında
İkisi de HMAC-SHA256 imzalı, 5 yeniden deneme üstel geri çekilme (exponential backoff) ile. Webhook entegrasyonu: Voice drift'i ele al + Webhook imza doğrulaması.
Plan gereksinimi
| Plan | Yetenek |
|---|---|
| Free | Denetim + varsayılan 33-test takımı |
| Pro | Özel eşikler, action_on_low_score geçersiz kılma |
| Team | Özel provocation testleri (çalışma alanı kapsamlı) |
| Enterprise | Özel yargıç modeli, önyargı tespit edici ayarı, periyodik cron |
Dürüst kapsam
İlgili
Denetimin hattaki yeri (6. adım).
Çalışma zamanında ses ölçümü — denetimin tamamlayıcısı.
İçerik güvenliği — denetim / drift değil, paralel çalışma zamanı yığını.
Denetim + drift + moderasyon kapılarını üretimde kurma.