Üretim hattı — 6 adımlı pipeline
Bir `intent`'i (niyet metnini) dört katmanlı bir persona'ya dönüştüren altı adım — intent_parse → soul_draft → self_enrich → mask_build → surface_ground → audit + voice fingerprint.
POST /v1/personas uç noktasına bir intent (kısa karakter brief'i) gönderdiğinde, Moonborn tek bir LLM'den karakter uydurmasını istemez. Üretimi altı görünür adıma böler; her adım kendi modeli, kendi sıcaklığı (temperature), kendi önbelleği (cache) ve kendi yedek (fallback) zinciri olan ayrı bir LLM çağrısıdır.
Bu sayede üretim belirleyici (deterministik), hata ayıklanabilir (debug edilebilir), maliyet hesaplı ve adım bazında geçersiz kılınabilir olur.
Bu sayfayı bitirdiğinde
- Altı adımın sırasını, amacını ve varsayılan modelini bileceksin.
- Üretimin neden içeriden dışarıya (Soul → Surface) gittiğini anlayacaksın.
- Adım bazında yapılandırma geçersiz kılmanın (config override) nasıl çalıştığını bileceksin.
- Akış (streaming) olaylarını ve yeniden deneme + yedek (retry + fallback) akışını izleyebileceksin.
- Hangi adımın hangi denetim / parmak izi görevini tetiklediğini ayırt edebileceksin.
Ön koşul: Soul/Self/Mask/Surface kavramını biliyor olmak.
Altı adım
| # | Adım | Amaç | Varsayılan model |
|---|---|---|---|
| 1 | intent_parse | Brief'i oku; tür, dil-yerel ayar (locale), eksen ipuçlarını çıkar | claude-sonnet-4-6 |
| 2 | soul_draft | Soul yaz (arzu, korku, yara, gelişim yayı) | claude-opus-4-7 |
| 3 | self_enrich | Big Five + arketip + değerler + bağlanma stili | claude-sonnet-4-6 |
| 4 | mask_build | Ses, ton, imza ifadeler, sosyal rol | claude-sonnet-4-6 |
| 5 | surface_ground | İsim, yaş, lokasyon, meslek, görünüş | claude-sonnet-4-6 |
| 6 | audit (denetim) | Katmanlar arası tutarlılık + LLM-as-judge (yargıç-LLM) puanlama | claude-opus-4-7 |
Altı görünür adım sonrasında çalışma zamanı iki üretim-sonrası görev tetikler:
- Voice fingerprint — Mask'ten 50-senaryo vektör ortalaması. Detay: Voice fingerprint.
- Test takımı (test suite) — 33 provocation testi yeni persona'ya karşı koşar. Detay: Audit + provocation tests.
Neden içeriden dışarıya
Surface (isim, yaş, meslek) en son üretilir — bilinçli olarak. Sıra Soul → Self → Mask → Surface:
Soul (ne ister, neden var)
↓ kısıtlar
Self (kim, hangi özellikler)
↓ kısıtlar
Mask (nasıl konuşur)
↓ kısıtlar
Surface (nerede, hangi yaşta, hangi dilde)Surface'i ilk yazsaydık model demografik klişeye demir atardı — "İstanbullu kurucu" yazsan, LLM tüm teknoloji kurucu klişesini geri doldururdu. Soul → Surface taslağı her katmanın bir sonrakini kısıtlamasını sağlar: kurucunun huzursuzluğu yarasından gelir, hazır şablondan değil.
Detay: Soul/Self/Mask/Surface.
Adım yapılandırması
Her adım için yapılandırma maddeleri ailesi:
engine.pipeline.{step}.enabled (mantıksal — adımı atlamak için)
engine.pipeline.{step}.model (metin — Anthropic / OpenAI / Google model kimliği)
engine.pipeline.{step}.provider (metin — anthropic | openai | google)
engine.pipeline.{step}.temperature (sayı 0..1)
engine.pipeline.{step}.max_retries (tamsayı, varsayılan 3)
engine.pipeline.{step}.fallback (dizi — sağlayıcı zinciri)
engine.pipeline.{step}.cache (mantıksal — aynı istem önbelleği)
engine.pipeline.{step}.timeout_ms (tamsayı)Çoğunlukla varsayılanlarla çalış; özelleştirme noktaları:
Akış (streaming) — Server-Sent Events
POST /v1/personas?stream=true ile pipeline ilerlemesi SSE olarak akar:
event: step.started data: { "step": "intent_parse" }
event: step.completed data: { "step": "intent_parse", "durationMs": 1200 }
event: step.started data: { "step": "soul_draft" }
event: step.completed data: { "step": "soul_draft", "durationMs": 4210 }
event: step.started data: { "step": "self_enrich" }
event: step.completed data: { "step": "self_enrich", "durationMs": 3100 }
event: step.started data: { "step": "mask_build" }
event: step.completed data: { "step": "mask_build", "durationMs": 3650 }
event: step.started data: { "step": "surface_ground" }
event: step.completed data: { "step": "surface_ground", "durationMs": 2400 }
event: step.started data: { "step": "audit" }
event: step.completed data: { "step": "audit", "durationMs": 5200 }
event: pipeline.completed data: { "personaId": "per_01H...", "durationMs": 67000 }Arayüz tarafında 6-adım ilerleme çubuğu (progress bar) ideal: her step.started mevcut adımı işaretler, step.completed ilerlemeyi yürütür. Detay: Akış desenleri.
Yeniden deneme + yedek (retry + fallback)
Adım başarısızlığı (LLM sağlayıcı hatası, zaman aşımı, denetim eşik altı):
- Çalışma zamanı
engine.pipeline.<step>.max_retrieskez (varsayılan3) aynı sağlayıcı ile yeniden dener. - Yetmezse
engine.pipeline.<step>.fallbackzincirine geçer (varsayılan:[anthropic, openai, google]). - Tüm yedekler tükenirse persona
status: "flagged"ile teslim edilir — kullanıcı görür ama inceleme için işaretlidir.
{
"id": "per_01H...",
"status": "flagged",
"flags": [
{
"stage": "audit",
"code": "score_below_threshold",
"details": { "score": 3.2, "threshold": 3.5 }
}
]
}İşaretli (flagged) persona'yı reddetmek istiyorsan API yanıtının status alanını kontrol et.
Adım atlama — üretim-hazır desen
engine.pipeline.<step>.enabled = false ile adım atlanabilir. Bunu nadiren yap; kullanım örnekleri:
auditatlama: geliştirme / hazırlık (staging) ortamında hız için (üretimde asla)surface_groundatlama: persona Surface'ı dış sistemden geliyorsa (CRM'den kişi ismi)mask_buildatlama: önceden hazır voice fingerprint kullanıyorsan
Yeniden üretme (regenerate) — adımdan yeniden başlat
Mevcut bir persona'yı belirli bir adımdan itibaren yeniden üret:
await client.personas.regenerate(personaId, {
fromStep: 'mask_build',
edits: { 'soul.wound': 'updated wound text' }
});fromStep öncesi adımlar değişmez; sonrası yeniden koşulur. Cascade (zincirleme) refine ile aynı mekanizma. Detay: Persona düzenleme.
Dürüst kapsam
Plan gereksinimi
Üretim her planda. Plan sınırları:
- Free — Ayda 50 persona, varsayılan modeller
- Pro — Sınırsız persona, özel model geçersiz kılma
- Team — Çalışma alanı kapsamlı geçersiz kılma + özel sağlayıcı yedek zinciri
- Enterprise — İstek kapsamlı geçersiz kılma + özel adım yapılandırması + özel kurum-içi modeller