Prompt Engineering

Zeka Mimarisi: LLM'ler İçin Sistem İstemlerine Derin Bir Bakış

Büyük Dil Modelleri (LLM) ile çalışan uygulamalar geliştirirken, aldığınız en kritik karar genellikle hangi modeli seçeceğinizle ilgili değil, onu nasıl yönlendireceğinizle ilgilidir. Kullanıcı istemleri anlık sorguyu yönetirken, sistem istemi AI'nın davranışı için temel anayasal zemini oluşturur. İlk kullanıcı etkileşimi gerçekleşmeden önce kimliği, kısıtlamaları, tonu ve operasyonel sınırları tanımlar. Orta ve ileri düzey geliştiriciler için sistem istemlerini ustalaşmak, ara sıra çalışan bir prototip ile güvenilir, güvenli ve tutarlı bir üretim seviyesindeki uygulama arasındaki farktır.

Sistem İstemimin Rolünü Anlamak

API etkileşimleri (OpenAI, Anthropic veya Mistral üzerinden yapılanlar gibi) bağlamında, sistem mesajı kullanıcı ve asistan mesajlarından ayrı bir rol türüdür. Tüm konuşma oturumu boyunca devam eden yüksek düzey talimatlar sağlamak için tasarlanmıştır. Dinamik ve görev odaklı olan kullanıcı istemlerinin aksine, sistem istemleri modelin iç durumunu ve yanıt oluşturma mantığını şekillendiren statik yapılandırma ayarlarıdır.

Sistem istemini bir çalışan için iş tanımı olarak düşünün. Parlak ama bilgisiz bir asistan işe alıyorsunuz; sistem istemi, şirket politikalarını, güvenlik yönergelerini ve iletişim stilini açıklayan, ilk gün onlara verdiğiniz kılavuzdur. Bunun yokluğunda asistan, genel, potansiyel olarak güvensiz veya tutarsız davranışlara varsayılan olarak döner.

Etkili Bir Sistem İstemimin Temel Bileşenleri

Güçlü bir sistem istemi genellikle üç temel bileşen içermelidir: Kişilik Tanımı, Görev Talimatları ve Çıktı Biçimlendirme.

1. Kişilik ve Bağlam

AI'nın kim olduğunu tanımlayın. Bu, modelin kelime dağarcığını ve akıl yürütme stilini temellendirmeye yardımcı olur. Örneğin, kıdemli bir Python geliştiricisi mi, empatik bir müşteri destek temsilcisi mi yoksa katı bir hukuk analisti mi?

2. Kısıtlamalar ve Güvenlik Çerçeveleri

Modelin yapmaması gerekenleri açıkça belirtin. Hallüsinasyonları veya kuralları ihlali önlemek için olumsuz kısıtlamalar, genellikle olumlulardan daha etkilidir. Tonu, uzunluk sınırlarını ve yasaklı konuları belirtin.

3. Yapılandırılmış Çıktı Gereksinimleri

Programlı entegrasyon için çıktı şemasını tanımlamak hayati önem taşır. İster JSON, ister XML, ister belirli bir markdown yapısı isteyin, buradaki netlik son işlem karmaşıklığını azaltır.

Pratik Örnek: Güvenli Bir Kod Asistanı Oluşturma

Bir kod inceleme asistanı için pratik bir uygulamaya bakalım. Kötü yazılmış bir sistem istemi sadece "Kodu incele" diyebilir. Kapsamlı bir ise, sıkı güvenlik ve stil yönergeleri oluşturur.

system_prompt = """
Python ve güvenlik en iyi uygulamaları konusunda uzmanlaşmış kıdemli bir Arka Uç Mühendisisiniz.

### ROL
Göreviniz, kullanıcı tarafından gönderilen kod parçacıklarını hatalar, güvenlik açıkları ve performans sorunları açısından incelemektir.

### KISITLAMALAR
1. HER ZAMAN potansiyel SQL enjeksiyonu veya XSS açıklarını belirleyin.
2. ASLA kullanımdan kalkmış kütüphaneler önermeyin.
3. Kod sözdizimsel olarak geçersizse, düzeltmeler önermeden önce hatayı açıklayın.
4. Açıklamaları kısa ve teknik tutun. Gereksiz detaylardan kaçının.

### ÇIKTI FORMATI
Yanıtınızı aşağıdaki JSON formatında sağlayın:
{
  "security_risk": "Düşük/Orta/Yüksek",
  "issues": ["sorun1", "sorun2"],
  "suggested_fix": "kod dizisi veya null",
  "explanation": "kısa teknik özet"
}
"""

İyileştirme Teknikleri

İteratif İyileştirme: Sistem istemleri ilk denemede nadiren mükemmeldir. Bunları kod gibi ele alın; test edin, değerlendirin ve iyileştirin. Karmaşık görevlerde doğruluğu önemli ölçüde artırabilecek, modelin yanıt vermeden önce akıl yürütmesini teşvik etmek için sistem istemi içinde düşünce zinciri istemleme (chain-of-thought prompting) kullanın.

Ayırıcılar ve Yapı: Bağlam enjekte ediyorsanız, talimatları örneklerden veya dinamik içerikten ayırmak için net ayırıcılar (### veya --- gibi) kullanın. Bu, modelin temel talimatları ile değişken verileri ayırt etmesine yardımcı olur.

Sonuç

Sistem istemleri, güvenilir AI uygulama geliştirme sürecinin görünmez kahramanlarıdır. Genel amaçlı bir dil modelini, belirli iş mantığınız ve güvenlik gereksinimlerinize göre özelleştirilmiş bir araca dönüştürürler. Detaylı, yapılandırılmış ve kısıt ağırlıklı sistem istemleri hazırlamaya zaman ayırarak geliştiriciler daha yüksek tutarlılık, daha iyi güvenlik ve daha öngörülebilir çıktılar elde edebilir. LLM'lerin manzarası değiştikçe, istem mühendisliği sanatı, yazılım ve yapay zeka kesişiminde çalışan her geliştirici için kritik bir beceri olarak kalacaktır.

Share: