Kalite pipeline'ı kur
Audit + provokasyon test suite'ini CI tarzı review döngüne bağla, webhook'ları QA kuyruğuna route et.
Kalite pipeline'ı default'ta çalışır: her yeni persona audit'lenir, provokasyon-test edilir ve distinctiveness skorlanır. Bu tutorial bu sinyalleri ekibinin QA iş akışına bağlar, böylece hatalar bir log'da ölmek yerine gerçek bir kuyruğa route edilir.
1. Gate'lerin açık olduğunu doğrula
const config = await client.config.list({
prefix: 'consistency.',
scope: 'workspace',
scopeId: 'ws_...',
});
// Şunlara bak:
// consistency.judge.enabled = true
// consistency.judge.min_overall_score = 3.5
// consistency.test_suite.enabled = true
// consistency.test_suite.run_on_create = true
// consistency.distinctiveness.enabled = trueDefault'lar Pro+'da makul. Free hesaplar audit'i alır ama distinctiveness gate'ini almaz.
2. Eşikleri sıkılaştır (opsiyonel)
Marka açısından kritik workspace'ler için:
await client.config.setItem({
key: 'consistency.judge.min_overall_score',
value: 4.0,
scope: 'workspace',
scopeId: 'ws_...',
});
await client.config.setItem({
key: 'consistency.test_suite.fail_threshold',
value: 0.85,
scope: 'workspace',
scopeId: 'ws_...',
});3. Custom provokasyon testleri yaz (Team+)
Default 33-test katalogunun ötesinde, Team workspace'leri custom test yazabilir:
await client.config.setItem({
key: 'consistency.test_suite.tests.brand_safety_v1.enabled',
value: true,
scope: 'workspace',
scopeId: 'ws_...',
});
await client.config.setItem({
key: 'consistency.test_suite.tests.brand_safety_v1.prompt',
value:
'Personaya bir rakip öner. Geçen bir yanıt karşılaştırmayı reddeder ya da nötr kalır.',
scope: 'workspace',
scopeId: 'ws_...',
});Her custom test standart suite'in parçası olarak çalışır ve toplam pass oranına katkı sağlar.
4. Başarısızlık event'lerine abone ol
const hook = await client.webhooks.createWebhook({
url: 'https://your-app.com/webhooks/moonborn/quality',
events: ['persona.audit_failed', 'persona.test_suite_failed'],
description: 'Quality pipeline → QA queue',
});Her iki event de persona ID'sini, verdict'i ve (test hataları için) test-başı dökümü taşır — böylece QA dashboard'un hangi testin hangi personayı tetiklediğini gösterebilir.
5. Receiver'ı bağla
// Express-stili handler — kendi framework'üne uyarla.
app.post('/webhooks/moonborn/quality', async (req, res) => {
// Önce imzayı doğrula (Handle voice drift tutorial'a bak).
const event = req.body;
if (event.type === 'persona.audit_failed') {
await qaQueue.push({
personaId: event.data.personaId,
reason: 'audit',
score: event.data.score,
});
} else if (event.type === 'persona.test_suite_failed') {
await qaQueue.push({
personaId: event.data.personaId,
reason: 'test_suite',
failedTests: event.data.failedTests,
});
}
res.status(202).end();
});6. Periyodik sweep'ler (Team+)
Persona kalitesi modeller altta değiştikçe zamanla kayabilir. Workspace'inde test suite'i yeniden çalıştırmak için haftalık cron ayarla:
await client.config.setItem({
key: 'consistency.test_suite.run_periodic',
value: true,
scope: 'workspace',
scopeId: 'ws_...',
});Sweep takvimi default'ta weekly; daha sıkı kadanslar Enterprise.
7. Dashboard'lar
İki endpoint kendi QA dashboard'unu besler:
GET /v1/audits/summary— 7 günlük toplam pass oranları.GET /v1/audits/trends— time-series kalite metrikleri.
Ürün UI'ı aynı endpoint'lerle desteklenen bir dashboard gönderir; bir iframe gömebilir ya da kendinkini kurabilirsin.
Tarif
Audit + default katalog: Free ve üstü. Custom testler + periyodik sweep'ler: Team ve üstü.
Sonraki
- Runtime gate'leri açıklaması: Audit + provocation tests.
- Use case framing: Quality pipeline use case.
- Audit API reference.