Çok karakterli bir sahne kur
İki veya daha fazla persona'yı aynı oturumda konuştur — ilişkileri tanımla, konuşmacıyı sen seç, sesler ayrı kalsın.
Bir RPG sahnesinde şüpheci bir dedektif, çekingen bir tanık ve sakin bir avukat aynı odada konuşur; bir deneyim araştırma panelinde beş farklı kullanıcı persona'sı aynı soruya cevap verir. Bunların ortak meselesi aynıdır: birden fazla karakter aynı sahnede konuşurken tek bir ortalama sese çökmemeli.
Bu rehber iki persona'yı aynı oturumda konuşturur: ilişkilerini tanımlar, kimin ne zaman konuşacağını sen kontrol edersin, her yanıt yine kendi karakterinin sesinde ölçülür.
Bu rehberi bitirdiğinde
- İki persona arasında tipli ilişki kenarı (edge) tanımlayabileceksin.
- Bir ensemble (topluluk) oturumu açıp konuşmacıyı tur tur seçebileceksin.
- Her konuşmacının kendi voice fingerprint'ine göre nasıl puanlandığını okuyabileceksin.
- Uzun sahnelerde yakınsama olduğunda erken yakalayabileceksin.
- Tek karakter, topluluk ve orkestrasyon sınırlarını ayırt edebileceksin.
Ön koşul: en az bir persona ve bir API anahtarı. Tek karakterli sohbet akışını henüz görmediysen önce Bir persona ile sohbet oturumu kur rehberini tamamla.
1. İki persona üret
Sahnenin ekibini kur. Burada bir kurucu (Mert) ve bir tasarım lideri (Leyla) örneği:
const mert = await client.personas.create({
intent: "İstanbul'dan 34 yaşında bir startup kurucusu. Parlak ama huzursuz.",
workspaceId: 'ws_...',
});
const leyla = await client.personas.create({
intent: "Berlin'de 32 yaşında bir tasarım lideri. Keskin, prensipli, kurumsal jargondan alerji.",
workspaceId: 'ws_...',
});İki per_… kimliğini sakla — sonraki adımlarda kullanacaksın.
2. Aralarındaki ilişkiyi tanımla
POST /v1/personas/{id}/relationships çağrısı ensemble grafiğine bir kenar (edge) yazar. Çalışma zamanı her çok karakterli turda bu grafiğe danışır — Leyla konuştuğunda Mert'in onunla ilişkisi isteme enjekte edilir.
await client.personas.relationships.create({
personaId: mert.id,
with: leyla.id,
type: 'ex-cofounders',
note: 'Aynı çeyrekte hem bir şirketi hem bir ortaklığı paylaşıp ayrılan eş-kurucular. Saygılı ama temkinli.',
});3. Topluluk (ensemble) oturumunu aç
Tek karakterli oturumdan tek farkı: ensemble alanı sahnedeki ek persona'ların dizisini taşır.
const session = await client.chat.sessions.create({
personaId: mert.id,
ensemble: [leyla.id],
metadata: { sceneId: 'pitch-meeting-q3' },
});
console.log(session.id);Çalışma zamanı artık her iki persona'yı da biliyor. Tur tur konuşmacıyı sen seçeceksin.
4. Turları yönet
Her chat.messages.create çağrısında speaker alanı cevap verecek persona kimliğidir. Mert konuşur, Leyla cevap verir, sonra tekrar Mert konuşur — her tur kendi konuşmacının katmanlarını + ilişki kenarlarını kullanır.
// Tur 1 — Mert konuşuyor
const mertSays = await client.chat.messages.create({
sessionId: session.id,
speaker: mert.id,
content: "All-hands'te ne olduğunu anlat.",
});
// Tur 2 — Leyla cevap veriyor
const leylaSays = await client.chat.messages.create({
sessionId: session.id,
speaker: leyla.id,
content: 'Ne olduğunu zaten biliyorsun. Beni neden buraya çağırıyorsun?',
});
console.log({
mert: { content: mertSays.content, drift: mertSays.driftScore },
leyla: { content: leylaSays.content, drift: leylaSays.driftScore },
});5. Yakınsamayı izle
Uzun sahnelerde karakterler birbirinin tonuna kaymaya başlayabilir. Periyodik olarak ikisi arasındaki ayırt edicilik (distinctiveness) uzaklığını kontrol et:
const cmp = await client.consistency.compare({
fromPersonaId: mert.id,
toPersonaId: leyla.id,
});
console.log('uzaklık:', cmp.value);
if (cmp.value < 0.25) {
console.warn('Sesler yakınsıyor — parmak izi tazele ya da istemi yeniden formüle et');
}6. Orkestrasyon senin sorumluluğun
Moonborn karakter katmanını yönetir — sesler, ilişkiler, drift skorları, parmak izleri. Şunlar sana aittir:
- Tur sırası — kim ne zaman konuşur, dallanma kararları, kullanıcı girdisinin nereye düştüğü.
- Sahne durum makinesi (state machine) — oyun yapımcıları için bu tipik olarak XState ya da kendi enum tabanlı bir durum makinesidir; deneyim araştırmacıları için her persona'ya aynı soru kümesinin sırayla sorulduğu bir panel betiği.
- Konuşmacı seçimi arayüzü — kullanıcı mı seçer, etmen (agent) mi karar verir, otomatik mi döner.
Başardın
Elinde iki persona, bir topluluk oturumu (ses_…), her ikisi de kendi sesinde verilmiş iki yanıt ve aralarında ölçülebilir bir ayırt edicilik uzaklığı varsa rehber bitti.
Sonraki adım
Aynı yöntemle 5+ kullanıcı persona'sını paralel deneyim araştırma paneline çevir.
Çok karakterli sahnelerin oyun ürünlerinde nasıl bağlandığına dair kullanım senaryosu.
İlişki tipleri, kenar yönü, istem birleştirmenin nasıl çalıştığı.
Karakterler arası uzaklık nasıl ölçülür, hangi eşikler ne anlama gelir.