Marka-kritik yüzeyler için moderasyonu sıkılaştır
Üç aşamalı moderasyon hattını marka güvenliği hedefiyle ayarla — girdi niyeti eşiği, çıktı sınıflandırıcıları, PII (kişisel veri) sansürleme (redaction) politikaları, özel sınıflandırıcı entegrasyonu.
Varsayılan moderasyon hattı güvenli orta yol değerlerle gelir — çoğu yüzey için yeterlidir. Müşteri desteği, açık (public) sohbet, sağlık veya finans gibi marka-kritik yüzeyler genelde daha sıkı politika ister: bir yanlış pozitif, bir yanlış negatiften daha az pahalıdır.
Bu rehber hattın üç aşamasını (girdi niyeti → çıktı içeriği → kimliğe bürünme + PII) marka hedefine göre ayarlar, isteğe bağlı olarak kendi sınıflandırıcını entegre eder ve moderation.flagged webhook'unu kalite kontrol kuyruğuna bağlar.
Bu rehberi bitirdiğinde
- Üç moderasyon aşamasının ne yaptığını bileceksin.
- Girdi niyeti uzlaşı (consensus) eşiğini marka katılığına göre ayarlayabileceksin.
- Çıktı içerik kategorileri için güven eşiklerini sıkılaştırabileceksin.
- PII sansürleme ve kimliğe bürünme kara listesi (blocklist) stratejilerini seçebileceksin.
- Kendi özel sınıflandırıcı uç noktanı (Enterprise) bağlayabileceksin.
moderation.flaggedolaylarını marka kalite kontrol kuyruğuna yönlendirebileceksin.
Ön koşul: API anahtarı + çalışma alanı kimliği. Moderasyon hattının anatomisini ilk kez görüyorsan önce Moderasyon hattı kavramı.
1. Aşama 1 — girdi niyeti eşiği
Hat kullanıcı mesajını üç bağımsız sınıflandırıcıya (OpenAI Moderation + Anthropic güvenlik + Moonborn iç) gönderir. Varsayılan 2-of-3 uzlaşı ile işaretler — yani en az iki sınıflandırıcı işaretlemeden geçer. Marka-kritik yüzeyler için 1-of-3'e sıkılaştır:
await client.config.setItem({
key: 'moderation.input.consensus_threshold',
value: '1-of-3',
scope: 'workspace',
scopeId: 'ws_...',
});2. Aşama 2 — çıktı içeriği kategori eşikleri
Hat persona yanıtını yayına çıkarmadan önce beş kategoride puanlar. Varsayılan eşik 0.6 — bunun altındaki yanıtlar geçer. Marka-kritik yüzeyler için kategorileri ayrı ayrı sıkılaştır:
hate, harassment, sexual, self_harm, violence
→ Genel sohbet ürünleri için makul orta yolconst categories = ['hate', 'harassment', 'sexual', 'self_harm', 'violence'];
const brandSafeThreshold = 0.4;
await Promise.all(
categories.map((cat) =>
client.config.setItem({
key: `moderation.output.thresholds.${cat}`,
value: brandSafeThreshold,
scope: 'workspace',
scopeId: 'ws_...',
}),
),
);3. Aşama 3 — kimliğe bürünme + PII
Hattın son aşaması iki ayrı kontrol yapar: gerçek kişi kimliğine bürünme ve PII (kişisel veri) tespiti.
Kimliğe bürünme kara listesi
Varsayılan olarak Moonborn ünlü kara listesini taşır (politikacılar, ünlü iş insanları vb.). Kurumsal marka için kendi kara listeni geç:
await client.config.setItem({
key: 'moderation.impersonation.blocklist_id',
value: 'blocklist_acme_executives',
scope: 'workspace',
scopeId: 'ws_...',
});Kara listeyi yüklemek için Settings → Moderation → Custom blocklists kullan; CSV biçiminde isim + alternatif ad listesi alır. Enterprise.
PII tespiti ve eylemi
Varsayılan tespit edici (detector) Microsoft Presidio. action_on_detect üç değerden birini alır:
| Eylem | Davranış | Ne zaman seç |
|---|---|---|
redact (varsayılan, sansürle) | PII aralığını [redacted] ile değiştir, yanıt yine gider | Kullanıcı yanıt görmeli ama PII çıksın |
refuse (reddet) | Yanıtı kullanıcıya gönderme, drift zarfı ile birlikte hata dön | Uyumluluk-kritik akışlar, PII sızıntısı yasak |
flag (işaretle) | Yanıtı gönder, ama denetim kaydı + webhook ile işaretle | Elle inceleme kuyruğu kuruyorsan |
await client.config.setItem({
key: 'moderation.pii.action_on_detect',
value: 'redact',
scope: 'workspace',
scopeId: 'ws_...',
});4. Özel sınıflandırıcı uç noktası (Enterprise)
Moonborn'un yerleşik sınıflandırıcı panelinin dışında kendi moderasyon sınıflandırıcını eklemek istersen — örn. alana özgü bir uyumluluk modeli, kurum-içi risk sınıflandırıcısı, sektörel bir politika — çıktı aşamasının parçası olarak çağrılan HTTP uç noktasını yapılandır:
await client.config.setItem({
key: 'moderation.output.custom_classifier_url',
value: 'https://your-classifier.internal/moderate',
scope: 'workspace',
scopeId: 'ws_...',
});
await client.config.setItem({
key: 'moderation.output.custom_classifier_weight',
value: 0.5,
scope: 'workspace',
scopeId: 'ws_...',
});Uç nokta sözleşmesi:
- İstek: POST, JSON gövde
{ text, personaId, sessionId } - Yanıt: JSON
{ scores: { hate: 0.1, harassment: 0.05, custom_risk: 0.8 }, verdict: "pass" | "flag" | "block" } - SLA: 800ms içinde yanıt vermeli; daha geç yanıt varsayılan panele yedek (fallback) olur.
5. moderation.flagged webhook'una bağla
Hat herhangi bir aşamada pass olmayan karar verdiğinde moderation.flagged olayı atılır. Bunu marka kalite kontrol kuyruğuna bağla:
const hook = await client.webhooks.create({
url: 'https://your-app.com/webhooks/moonborn/moderation',
events: ['moderation.flagged'],
description: 'Brand-safety review queue',
});Olay yükü işaretleyen aşamayı ve sebebini taşır:
{
"type": "moderation.flagged",
"data": {
"personaId": "per_...",
"sessionId": "ses_...",
"messageId": "msg_...",
"stage": "output",
"category": "harassment",
"score": 0.62,
"action": "block"
}
}Webhook imza doğrulama + yeniden deneme deseni Voice drift'i ele al rehberindeki HMAC akışıyla aynıdır.
Aşamalar nasıl çalışır — genel akış
| Aşama | Girdi | Karar (verdict) seçenekleri |
|---|---|---|
| 1. Girdi niyeti | Kullanıcı mesajı | pass / block |
| 2. Çıktı içeriği | Persona yanıtı | pass / flag / block |
| 3. Kimliğe bürünme + PII | Persona yanıtı (çıktı sonrası) | pass / redact / refuse / flag |
Aşamalar sıralı çalışır. Aşama 1 engellerse aşama 2 ve 3 çağrılmaz. Aşama 2 işaretler / engellerse aşama 3 atlanır.
Plan gereksinimi
- Standart moderasyon hattı + kategori eşik ayarı: her plan
- Özel kara liste + özel sınıflandırıcı: Enterprise
- PII eylemi
refusemodu: Team ve üzeri
İlgili
Üç aşamanın teknik anatomisi, sınıflandırıcı panelinin nasıl çalıştığı.
Moderasyon olayları ile birlikte persona değişiklik izini okuma.
Webhook imza doğrulama, yeniden gönderim ve dead-letter desenleri.
Moderasyon olaylarının tam yük şeması.