Uygulamayı aç
Moonborn — Developers

Brand variant'larını fork'la

Kanonik bir marka personasını al, through-line'ı kaybetmeden formal / casual / locale'e özgü variant'lara fork'la. Refine, lineage, distinctiveness'tan geç.

Marka ekipleri tipik olarak birden çok ses variant'ı sürdürür — ciddi bir B2B tonu, eğlenceli bir sosyal tonu, EN ve DE bir versiyon. Elle küratörlenmiş şekilde bu altı prompt'u senkron tutmak demek. Forking bunu kanonik tek bir personaya artı izlenen variant ağacına dönüştürür.

1. Kanonik personayı kur

En otoriter sesle başla — diğerlerinin fork'layacağı olan. Soul + Self'ini "marka DNA'sı" olarak ele al; downstream variant'lar bu katmanları korumalı.

const brand = await client.personas.createPersona({
  intent:
    'Moonborn marka sesi — Character Consistency Engine. Akademik, karakter-odaklı, teknik olarak hassas. Editöryal kısıtlama. Somut detayla başla, satış lafı yok.',
  workspaceId: 'ws_...',
});

Audit ve provokasyon testleri otomatik çalışır; fork'lamadan önce audit'te ≥ 4.0/5 hedefle. Daha düşükse, variant eklemeden önce refine et.

2. Formal variant fork'la

POST /v1/personas/{id}/fork personayı kopyalar ve parent edge'ini yazar. Aynı çağrıda axis transform uygulamak için refine argümanıyla eşle:

const formal = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'refine',
    layer: 'mask',
    axis: 'more-authoritative',
    amount: 0.4,
  },
  note: 'Sales materials variant',
});

Fork Soul + Self'i kilitli tutar (marka DNA'sı) ve sadece Mask'i yeniden yazar. Audit yeni Mask'a karşı yeniden çalışır; distinctiveness formal variant'ı kanonik olana (custom baseline) karşı kıyaslar — bir genel kurumsal sese kayışı yakalamak için.

3. Casual variant fork'la

const casual = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'refine',
    layer: 'mask',
    axis: 'warmer',
    amount: 0.45,
  },
  note: 'Social media + community variant',
});

4. Türkçe locale variant fork'la

Çoklu locale için Surface'i (dil + kültürel detaylar) refine et, Soul / Self / Mask kilitli kalsın:

const tr = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'lock',
    lockLayers: ['soul', 'self', 'mask'],
    edits: {
      'surface.language': 'tr',
      'surface.location': 'İstanbul, Türkiye',
    },
  },
  note: 'TR locale variant',
});

5. Variant set'i audit et

const lineage = await client.personas.getLineage({ id: brand.id });
console.log(lineage.children.map((c) => c.id));
 
// Variant'lar birbirine doğru kayıyor mu?
const compare = await client.consistency.compareWithOrgPersonas({
  personaId: formal.id,
  threshold: 0.30,
});
console.log(compare.closest);

compareWithOrgPersonas sorgusu voice fingerprint mesafesine göre en yakın personayı döner. "formal" ve "casual" variant'ların birbirine karşı < 0.15 skorluyorsa, refine sırasında çöktüler — axis amount çok küçüktü ya da kanonik Mask zaten çok variability kodlamıştı. Daha büyük amount ile yeniden fork'la ya da bunun yerine Soul'u refine et (bir Cascade mode düzenlemesi).

6. Deploy et

Her variant kendi persona ID'sini açar. Her ID'yi uygun kanala bağla:

  • formal.id → satış email automation'ın.
  • casual.id → sosyal inbox'ın.
  • tr.id → Türkçe locale destek temsilcin.

OpenAI-compatible endpoint üzerinden, variant ID'si model alanı:

import OpenAI from 'openai';
const oai = new OpenAI({
  apiKey: process.env.MOONBORN_API_KEY,
  baseURL: 'https://api.moonborn.co/v1/openai',
});
const reply = await oai.chat.completions.create({
  model: `persona://${formal.id}`,
  messages: [{ role: 'user', content: 'Moonborn hakkında anlat.' }],
});

Sonraki