Uygulamayı aç
Moonborn — Developers

Drift detection nasıl çalışır — fingerprint, kosinüs, eşik

Her sohbet yanıtı persona'nın voice fingerprint'ine puanlanır. Skorun içinde ne var, neden kosinüs uzaklığı, eşik neden 0.30, kurtarma (recovery) gerçekten ne yapar.

Voice drift'in en kısa özeti: kosinüs uzaklığı (cosine distance), voice fingerprint, eşik (threshold). Daha uzun hikâye daha ilginçtir — fingerprint'in içinde ne var, neden kosinüs, eşik neden varsayılan olarak 0.30, kurtarma (recovery) gerçekten ne yapar.

Bu yazıda ne anlatılıyor

  • Fingerprint nasıl üretilir (50 senaryo, vektör çıkarma — embedding, ortalama)
  • Kosinüs uzaklığı neden — Öklid (Euclidean) değil
  • Eşik 0.30 etiketli örneklemle nasıl kalibre edildi
  • 3 uyarı eylemi (warn / auto_recover / block) — hangisinin ne yaptığı
  • Drift detection'ın ne ölçtüğü ve ne ölçmediği

Kavram sayfası: Drift detection.

Fingerprint — 50 senaryo, 1 vektör

Üretim zamanında, Moonborn persona'ya karşı 50 kısa senaryo koşar — "sürprize tepki ver", "bir yabancıya yaranı anlat", "katılmadığın bir isteği reddet". Her senaryo kısa yanıt üretir; her yanıt voyage-3-large ile vektöre dönüştürülür (embed). 50 vektör tek vektörde ortalanır. Bu voice fingerprint'tir.

Neden 50?

Senaryo sayısıÇalıştırmalar arası tutarsızlıkÖdünleşme
< 30Kosinüs uzaklığı > 0.10Gürültü baskın
30–50< 0.05İdeal
50< 0.03Belirleyici (deterministic)
80+< 0.02Marjinal kazanç vs maliyet ($0.03 → $0.05)

50 tatlı noktadır (sweet spot). Dahili kalibrasyon çalıştırmalarının sonucudur.

Neden ortalama, birleştirme (concatenate) değil

Tasarım aşamasında iki seçenek:

SeçenekBilgi yakalamaSorgu başına maliyet
Birleştirme (concatenate) (50×1024 matris)Daha çok detay (senaryo başı aykırı değerleri — outlier — korur)Yanıt başına 50 kat daha pahalı
Ortalama (1024 vektör)Merkezi eğilim (senaryo başı detay kaybolur)Tek kosinüs, ucuz

Sohbette her yanıt skorlanır. Ortalamanın amortisman kazancı büyüktür. Ortalama seçildi. Bilgi kaybı düşündüğümüzden azdı: drift'in tam ölçtüğü şey merkezi eğilimdir.

Skor — kosinüs uzaklığı

Bir sohbet yanıtı geldiğinde, aynı embed modeli:

drift = 1 - dot(reply_embedding, fingerprint) / (||reply|| × ||fp||)

Aralık [0, 1]:

SkorAnlam
0Ortalama ile özdeş (teorik)
0.10–0.20Normal varyans, seste
0.30 (varsayılan eşik)Drift sınırı
0.50+Ciddi kayma
1Dik (orthogonal); gerçek yanıtlarda görünmez

Gerçek yanıtlar 0.1–0.4 aralığında kümelenir.

Neden kosinüs, Öklid değil

MetrikSorun
Öklid (Euclidean)Büyüklüğe duyarlıdır — iki kat uzun yanıt iki kat ses-dışı (off-voice) DEĞİLDİR ama Öklid böyle okur
KosinüsAçı ölçer — büyüklük kirlenmesi olmadan anlamsal alanda yön yakalar

Voice fingerprint makaleleri (Bommasani vd. 2023, diğerleri) tutarlı olarak kosinüs kullanır. Aynı sebep.

Eşik — neden 0.30

Elle etiketlemeden indirildi:

1. 50 değerlendirici, 500 sohbet yanıtını "seste" veya "ses-dışı" etiketler
2. Tüm yanıtlar için drift skorunu hesapla
3. Etiketlere karşı F1'i (F1 skoru) maksimize eden kosinüs eşiğini bul
4. Sonuç: 0.30

Daha sıkı eşikler (0.20) daha çok meşru drift yakalar ama iyi yanıtı işaretler. Daha gevşek (0.40) insanların net çağırdığı drift'i kaçırır.

Hedef kitleye göre ayar

Çalışma alanı tipiÖnerilen threshold
Müşteri desteği, düzenlemeye tabi ses0.20 (sıkı)
Genel ürün sohbeti0.30 (varsayılan)
Yaratıcı yazım, açık uçlu sohbet0.45 (gevşek)

Persona başına geçersiz kılma: çalışma zamanı sözleşmesi üzerinden.

3 uyarı eylemi

engine.pipeline.drift_detection.action_on_alert:

warn (varsayılan)

Yanıt gider, uyarı kaydedilir, webhook tetiklenir. Üretimde yalnızca-gözlem (observe-only) başlamak için idealdir.

auto_recover

Moonborn fingerprint'i yeniden enjekte ederek bir kez yeniden üretir; hangisi daha düşük skorluyorsa onu gönderir.

Maliyet:   uyarı başına ek LLM çağrısı (~$0.005-0.02)
Tetikleyici: üretimde yanıtların ~%5'i (çalışma alanı tipine göre)
Sonuç:     yeniden üretilen yanıtın ~%80'i eşiğin altında

Destek yüzeyleri için değerli bir bütçe. Müşteri drift'i fark etmez; sessizce düzeltilir.

block

Yanıt dönmez; istemci 409 Conflict alır. Uyumluluk açısından kritik (sağlık, finans, hukuk) çalışma alanlarında anlamlıdır. Arayüzde yedek (fallback) gösterilmiyorsa kullanıcı "bot bozuldu" der — kullanıcı deneyimi tasarımı kritiktir.

Drift'in ölçtüğü ve ölçmediği

Ölçer

  • Kayıt drift'i (register drift) — resmi persona argo (slang) kullanmaya başladı
  • Konusal drift (topical drift) — konu değişince ses değişen karakter (sistem isteminin otoritesi soluyor)
  • Sağlayıcı model drift'i (provider model drift) — Opus → Sonnet ses yüzeyini değiştirir
  • Uzun bağlam çürümesi (long-context decay) — geçmiş büyüdükçe persona genele (generic) drift eder

Ölçmez

İlgili

Drift detection

Kavram anatomisi + eylem (action) modu detayları.

Open →
Voice fingerprint

50 senaryolu vektör çıkarmanın üretim ödünleşmeleri.

Open →
Voice drift'i ele al

Webhook + kurtarma uçtan uca eğitim.

Open →
Drift eşiği ayarlama

Çalışma alanına göre eşik kalibrasyonu.

Open →