Simurg Okulu #9 — System prompt: modele verilen görünmez ilk talimat ne yapar, ne yapamaz
Aynı model bir uygulamada resmî bir destek asistanı, ötekinde esprili bir yazım yardımcısı. Çırak sabah bölümünde aradaki farkın büyük kısmını yapan görünmez ilk talimatı, system prompt'u öğreniyor: neyi belirler, neden bir güvenlik duvarı değildir.

Yol günlüğü
Talep vadisinde yeni bir sabah. Dün akşam temperature ayarıyla aynı soruya neden farklı cevap geldiğini öğrenmiştim. Bu sabah başka bir tuhaflık fark ettim: aynı modeli kullandığını söyleyen iki uygulama bambaşka karakterde konuşuyor. Biri resmî ve kısa, öteki samimi ve uzun. Parametreler aynıysa bu fark nereden geliyor? Bugün görünmez ilk talimatın, system prompt'un peşindeyim.
Bugün öğrendim
Nedir?
System prompt, sohbet başlamadan önce modele verilen ve kullanıcının genellikle görmediği talimat metnidir. "Sen bir bankanın destek asistanısın, yalnızca Türkçe cevap ver, yatırım tavsiyesi verme" gibi rol, ton, kurallar ve bağlam burada tanımlanır. Modelin parametreleri değişmez; değişen, modelin önüne konan ilk metindir.
Nasıl çalışıyor?
Bölüm 6'da öğrendiğim gibi model inference sırasında yalnızca context'teki metne bakar. System prompt da o context'in en başına yerleşen bir metin parçasıdır; kullanıcı mesajları ve önceki cevaplar onun arkasından gelir. Model her token'ı üretirken bu talimatı da "okur".
Farkı yaratan şey eğitimdir: modeller, system prompt'taki talimatı kullanıcı mesajından daha öncelikli saymak üzere eğitiliyor. OpenAI araştırmacılarının 2024'te yayımladığı *The Instruction Hierarchy* makalesi bu fikri açıkça tarif ediyor: sistem talimatı en üstte, kullanıcı ortada, araçtan ve web'den gelen metin en altta. Anthropic de geliştirici dokümantasyonunda modele system prompt ile rol vermenin performansı ve tutarlılığı artırdığını anlatıyor.
Bir şeyi dürüstçe not ettim: bu öncelik bir eğilim, kilit değil. Model yine olasılıkla çalışıyor; ustalıkla yazılmış bir kullanıcı mesajı talimatı esnetebiliyor.
Ne yapılabilir?
- Kurumsal asistan: "Yalnızca şu dokümanlara dayan, bilmiyorsan söyle" talimatı, halüsinasyon bölümündeki riski azaltmaya yardım eder.
- Ton ve biçim: Cevap uzunluğu, dil, madde işaretli çıktı, kurum terimleri burada sabitlenir.
- Kendi kullanımınız: Birçok sohbet asistanında "özel talimatlar" ya da proje talimatı alanı bulunuyor; oraya yazdığınız metin de aynı mantıkla her sohbetin başına ekleniyor.
- Şeffaflık: Anthropic, kendi sohbet ürünlerinde kullandığı system prompt'ları sürüm notlarında yayımlıyor; bu metinleri okumak iyi bir talimatın nasıl yazıldığını görmenin en kolay yolu.
Tüyü yaktım
Kendime küçük bir deney kurdum: bir system prompt'a "cevapları en fazla üç cümle tut ve hep resmî konuş" yazdım. Denediğim sorularda model kurala çoğunlukla uydu. Sonra kullanıcı mesajında "bu sefer uzun ve samimi yaz" dedim; model bazen direndi, bazen yarı yolda buluştu. Sonuç: system prompt güçlü bir yön veriyor ama kesin bir sınır çizmiyor. Bunu tek denemeyle genelleyemem; dün öğrendiğim gibi tek cevapla test etmek yanıltıcı.
Bir de güvenlik tarafını okudum. OWASP, LLM uygulamaları için hazırladığı listede System Prompt Leakage başlığına ayrı yer veriyor. Uyarı net: system prompt'a parola, API anahtarı ya da "gizli" iş kuralı konmamalı, çünkü model ikna edilerek bu metni açığa çıkarabilir. Yetkilendirme ve erişim kontrolü modelin dışında, uygulamanın kendisinde yapılmalı.
Heybeme koyduğum
System prompt modele kim olacağını söyler ama bir kasa değildir; içine sır konmaz, güvenlik onunla sağlanmaz.
Kafama takılan
Sistem talimatı ile kullanıcı mesajı çatıştığında modelin hangisini seçeceğini ölçen ve kurumların kendi asistanlarında uygulayabileceği basit bir test yöntemi var mı?
Son söz
Talimatın modele nasıl yön verdiğini gördüm ama modelin bu metni içeride nasıl "tarttığını" hâlâ bilmiyorum. Öğle bölümünde Talep vadisinin kalbine iniyorum: transformer ve attention, yani modelin bir cümledeki kelimeleri birbirine nasıl bağladığı. Talimatı aşmaya çalışan metinlerin, prompt injection'ın hikâyesi ise yolun sonundaki Fakr ü Fena vadisinde beni bekliyor.