Ana içeriğe geç

Giriş7 dk

Rol ve persona verme

Önkoşul:Prompt anatomisi: görev, bağlam, kısıt, format

Kanca

“Sen deneyimli bir öğretmensin, bunu 10 yaşındaki bir çocuğa anlat” — bu cümleyi eklemek, modeli gerçekten bir öğretmene mi dönüştürür? Yoksa sadece bir “kılık” mı giydirir?

Sezgi

Bir persona/rol eklemek, görevi değiştirmez — modelin, 1. derste gördüğümüz olasılık dağılımını, o role uygun bir ton ve kayıtta (register) kelimeler üretecek şekilde kaydırır. Model, eğitim verisinde “bir profesörün nasıl konuştuğunu” görmüştür — persona, o örüntüyü çağırır.

Mekanizma

Aynı soruyu, persona ile ve olmadan karşılaştıralım — token maliyeti üzerinden gerçek bir ölçüm yapalım:

Persona, aynı soruyu sorar ama daha çok token kullanır

# Bir "rol/persona" eklemek (örn. "Sen deneyimli bir fizik profesörüsün") görevi
# değiştirmez, ama bağlamı (ve token maliyetini) değiştirir.
GOREV_SADECE = "Explain why the sky is blue."
PERSONA_ILE = (
    "You are an experienced physics professor known for clear, patient explanations. "
    "Explain why the sky is blue."
)

t_sade = mesaj_token_sayisi(GOREV_SADECE)
t_persona = mesaj_token_sayisi(PERSONA_ILE)

print(f"Sadece görev ({t_sade} token): \"{GOREV_SADECE}\"")
print(f"Persona ile  ({t_persona} token): \"{PERSONA_ILE}\"")
print(f"\nPersona eklemek, maliyeti {t_persona/t_sade:.1f}x artırıyor -- ama iki prompt da aynı")
print("soruyu soruyor. Fark, modelin yanıtı nasıl üreteceğinde: persona, olası kelime")
print("dağılımını (1. ders) belirli bir ton ve kayıt (register) yönüne kaydırır.")
Sadece görev (16 token): "Explain why the sky is blue."
Persona ile  (65 token): "You are an experienced physics professor known for clear, patient explanations. Explain why the sky is blue."

Persona eklemek, maliyeti 4.1x artırıyor -- ama iki prompt da aynı
soruyu soruyor. Fark, modelin yanıtı nasıl üreteceğinde: persona, olası kelime
dağılımını (1. ders) belirli bir ton ve kayıt (register) yönüne kaydırır.

Matematik

Persona, koşullandırmayı (conditioning) genişletir
P(yanıt∣go¨rev)↓P(yanıt∣persona,go¨rev)\begin{gathered} P(\text{yanıt} \mid \text{görev}) \\ \big\downarrow \\ P(\text{yanıt} \mid \text{persona}, \text{görev}) \end{gathered}

NLP kategorisinin 20. dersinde gördüğümüz P(xt∣x<t)P(x_t \mid x_{<t}) formülünü hatırla — persona, bağlamın (x<tx_{<t}) bir parçası olarak eklenir. Bu, olasılık dağılımının hangi token’lara ağırlık vereceğini değiştirir (1. dersteki “Bugün hava çok” örneğindeki gibi) — ama modelin bilgi tabanı (eğitiminde ne gördüğü) aynı kalır.

Kod

Peki persona tam olarak ne yapabilir, ne yapamaz?

Persona'nın sınırları

# Yaygın bir yanılgı: "Sen bir doktor'sun" demek, modeli gerçekten daha bilgili yapmaz --
# model, eğitim verisinde gördüğü kadarını bilir. Persona sadece ton/kayıt/çerçeveyi
# değiştirir, modelin factual bilgi tabanını genişletmez.
print("\nPersona vermenin yapabilecekleri:")
print("  - Tonu değiştirmek (resmi <-> samimi, teknik <-> basit)")
print("  - Hangi tür bilgiye odaklanılacağını çerçevelemek (bir tarihçi vs bir mühendis gibi)")
print("  - Çıktı formatını dolaylı olarak etkilemek (bir 'öğretmen' persona, adım adım anlatabilir)")
print("\nPersona vermenin yapamayacakları:")
print("  - Modelin eğitim verisinde olmayan bir bilgiyi 'öğretmek'")
print("  - Modeli, gerçek bir uzmanın sahip olduğu güncel/doğrulanmış bilgiyle donatmak")
print("  - Halüsinasyon riskini sıfırlamak (10. ders bu konuyu detaylandıracak)")

Persona vermenin yapabilecekleri:
  - Tonu değiştirmek (resmi <-> samimi, teknik <-> basit)
  - Hangi tür bilgiye odaklanılacağını çerçevelemek (bir tarihçi vs bir mühendis gibi)
  - Çıktı formatını dolaylı olarak etkilemek (bir 'öğretmen' persona, adım adım anlatabilir)

Persona vermenin yapamayacakları:
  - Modelin eğitim verisinde olmayan bir bilgiyi 'öğretmek'
  - Modeli, gerçek bir uzmanın sahip olduğu güncel/doğrulanmış bilgiyle donatmak
  - Halüsinasyon riskini sıfırlamak (10. ders bu konuyu detaylandıracak)
Persona olmadan ve persona ile aynı sorunun token sayısını karşılaştıran çubuk grafik.(grafiği tam boyutta, yeni sekmede aç)
Persona eklemek token maliyetini artırıyor (16 -> 65) ama sorulan soru aynı kalıyor -- fark, yanıt üretiminin tonunda.

Nerede işe yarar

Persona/rol vermenin pratikte iyi çalıştığı ve zayıf kaldığı yerler var:

  • İyi çalışır: ton ayarlama (“resmi bir e-posta gibi yaz”), format ipucu verme (“bir öğretmen gibi adım adım anlat”), bakış açısı çerçeveleme (“bir güvenlik uzmanı gözünden değerlendir”).
  • Zayıf kalır: modele gerçekten sahip olmadığı bir uzmanlığı “kazandırmaya” çalışmak — “Sen bir hukuk profesörüsün” demek, modeli güncel hukuk bilgisiyle donatmaz, sadece hukuki bir üslup kullanmasını teşvik eder.
  • Riskli olabilir: persona, modelin güven düzeyini yapay olarak artırabilir — “uzman” bir ton, yanlış bir bilgiyi bile daha ikna edici gösterebilir (10. ders, halüsinasyon).

Bu 2 hatayı yaparsın:

  1. Persona vermenin modelin factual doğruluğunu artıracağını sanmak — hayır, model aynı eğitim verisine sahiptir; persona sadece üslubu etkiler.
  2. Persona’yı gereksiz yere her promptta kullanmak — basit, teknik bir görevde (“bu JSON’ı ayrıştır”) persona genelde ek bir fayda sağlamaz, sadece token maliyeti ekler.

Kendini test et

1. Notebook'ta 'Sen bir fizik profesörüsün' eklemek, token maliyetini 4.1 kat artırıyor. Bu ek maliyetin karşılığında ne kazanılıyor?
  1. Model, fizik konusunda daha fazla gerçek bilgiye sahip olur
  2. Modelin yanıtının tonu ve kaydı (register), 'profesör' rolüne uygun bir örüntüye kayar -- ama modelin bilgi tabanı değişmez (doğru cevap)
  3. Hiçbir şey kazanılmaz, bu tamamen israftır
  4. Model daha hızlı yanıt verir

Neden: MathBox'ta P(yanıt | persona, görev) formülasyonu gösteriyor ki persona sadece koşullandırmayı (bağlamı) genişletir; rolun-yapamayacagi bloğunda bu açıkça 'ton/kayıt değişir, bilgi tabanı değişmez' şeklinde özetleniyor.

2. 'Sen bir doktor'sun, bu belirtileri teşhis et' gibi bir persona vermenin riski nedir?
  1. Hiçbir riski yoktur
  2. 'Uzman' bir ton, yanlış bir bilgiyi bile daha ikna edici gösterebilir -- model gerçek bir doktorun sahip olduğu güncel/doğrulanmış bilgiye sahip değildir, sadece doktorların nasıl konuştuğunu taklit eder (doğru cevap)
  3. Model bu promptu reddeder
  4. Persona vermek her zaman daha güvenli sonuçlar üretir

Neden: kullanım bölümünde açıkça belirtildiği gibi, persona modelin güven düzeyini yapay olarak artırabilir -- bu, 10. dersteki halüsinasyon konusuyla doğrudan bağlantılıdır.

3. Basit, teknik bir görevde (örn. 'bu JSON'ı ayrıştır') persona vermek genelde neden gereksizdir?
  1. Persona hiçbir zaman gereksiz değildir
  2. Görev zaten net ve teknik olduğu için, bir 'ton' veya 'çerçeve' ayarlamaya ihtiyaç yoktur -- persona ek token maliyeti ekler ama görevin sonucunu değiştirmez (doğru cevap)
  3. JSON ayrıştırma personayla daha hızlı çalışır
  4. Teknik görevlerde persona vermek yasaktır

Neden: Kullanım bölümündeki 'Bu 2 hatayı yaparsın' kısmı, persona'nın sadece ton/çerçeve/format ipucu sağladığını, teknik ve net görevlerde bu faydanın genelde olmadığını vurguluyor.

Özet

Özet

  • Bir persona/rol eklemek, görevi değiştirmez -- modelin çıktı olasılık dağılımını, o role uygun bir ton ve kayda doğru kaydırır.
  • Persona, modelin bilgi tabanını genişletmez -- model, eğitiminde ne gördüyse onu bilir.
  • Persona vermek ton ayarlama ve bakış açısı çerçeveleme için iyi çalışır, ama uzmanlık "kazandırmak" için etkisizdir.
  • 'Uzman' bir ton, yanlış bilgiyi bile daha ikna edici gösterebilir -- bu bir risktir (10. ders).
  • Basit, teknik görevlerde persona genelde ek fayda sağlamadan sadece token maliyeti ekler.
Sonraki adım: Örnekle öğretme (few-shot) →