Core prompt engineering techniques (TR)

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt engineering, büyük dil modelleriyle (LLM) etkileşimi optimize etmeye ve istenen sonuçları elde etmeye yönelik çeşitli teknik ve yöntemleri kapsar. Bu teknikler; sorguların yapılandırılmasını, bağlam sağlamayı, çıktı stilinin yönetimini ve modelin akıl yürütme kapasitesinin geliştirilmesini içerir. LLM'ler, girdi prompt'una dayanarak bir sonraki token'ları tahmin ederek yanıt oluşturduğundan, bu prompt'un kalitesi ve yapısı doğrudan sonucu etkiler. Prompt engineering'in temel yöntemleri, geliştiricilerin ve kullanıcıların modelin davranışını etkin biçimde yönetmesine, hataları azaltmasına ve modelin iç parametrelerini değiştirmeye gerek kalmadan onu belirli görevlere uyarlamasına olanak tanır.

Prompt'un Temel İlkeleri ve Yapısı

Belirli uygulamalar farklılık gösterse de etkili prompt'lar genellikle ortak ilkeler ve yapılar gözetilerek oluşturulur:

  • Ampirik yönergeler: Pratik bir yapı olarak (ancak sektör standardı olmak zorunda değil) şu ilkelere uyulması önerilir: Yön Ver, Format Belirt, Örnek Sağla, Kaliteyi Değerlendir ve Görevi Böl.
  • Etkili bir prompt genellikle şu bileşenleri içerir:
    • Giriş/Rol: Görevin bağlamını ya da modelin rol/kişiliğini belirler.
    • Talimatlar: Yapılması gerekenler hakkında açık yönergeler.
    • Bağlam: Gerekli bilgi (statik veya RAG aracılığıyla dinamik olarak alınan).
    • Örnekler (Few-shot): İstenen format/stilin gösterimi.
    • Yanıt Talebi: Modelin ne üretmesi gerektiğinin açık olarak belirtilmesi.
  • Sistem Mesajı (System Prompt): API sohbet arayüzlerinde (örneğin OpenAI, Anthropic modelleri) tüm oturum için küresel talimatlar ve rol tanımlamaya olanak tanır.
  • Biçimlendirme: Markdown, JSON, XML veya YAML kullanımı, prompt'un yapılandırılmasına ve yanıtın ayrıştırılmasına yardımcı olur. Ayırıcılar (```, `"""`, XML etiketleri), talimatları veriden ayırmak için önemlidir.

Temel Talimat ve Örnek Teknikleri

  • Açık ve somut talimatlar: Görevi, istenen sonucu ve kısıtlamaları mümkün olduğunca kesin biçimde açıklamak. Belirsizlikten kaçınmak.
  • Rol Belirleme (Role Prompting): Modele bir rol atamak ("Sen ... alanında bir uzmansın") ve bu sayede ton, stil ve bilgi tabanını yönetmek.
  • Zero-shot Prompting: Örnek verilmeden yapılan sorgu. Model için basit veya iyi bilinen görevlerde etkilidir.
  • Few-Shot Prompting: Görevi göstermek amacıyla genellikle 2 ila 5 adet "soru-cevap" örneği sunmak. Tek örnekle yapılan One-shot Prompting bunun özel bir halidir. Karmaşık format veya stiller için özellikle yararlıdır. Örneklerden yanlış kalıplar çıkarılmasını (anchoring/bağlanma) önlemek için dikkat gerektirir.

Bağlam Yönetimi Teknikleri

  • Retrieval-Augmented Generation (RAG): LLM'e göndermeden önce harici bilgi tabanlarından alınan ilgili bilgilerin dinamik olarak prompt'a eklenmesi. 2020 yılında Meta AI tarafından ilk kez önerilen bu yöntem, halüsinasyonlarla mücadelede ve verilerin güncelliğini sağlamada kilit bir tekniktir.
  • Parçalama (Chunking): Büyük metinleri modelin bağlam penceresine sığacak şekilde daha küçük parçalara (chunk) bölmek. Stratejiler arasında cümle, paragraf ve token bazlı bölme (örtüşme ile) yer alır.
  • Özetleme (Summarization): Uzun metinleri veya diyalog geçmişini sınırlı bir bağlam içinde temel anlamı aktaracak biçimde sıkıştırmak.

Akıl Yürütmeyi (Reasoning) Geliştirme Teknikleri

Bu teknikler, modelin daha dikkatli ve yapılandırılmış bir şekilde "düşünmesini" sağlamaya yöneliktir. Bunların etkinliği, özellikle CoT'un etkinliği, büyük ölçekli modellerde (genellikle 100 milyar parametrenin üzerinde) belirginleşir.

  • Chain-of-Thought (CoT): Modele nihai yanıttan önce adım adım akıl yürütme üretmesi için talimat vermek. Matematik, mantık ve çok adımlı görevlerde sonuçları önemli ölçüde iyileştirir.
    • Zero-shot CoT: Örnek gerektirmeyen en basit form. Prompt'a "Adım adım düşünelim" (Let's think step by step) gibi bir ifade eklemek, akıl yürütme zincirini başlatmaya yeterlidir.
  • CoT Varyasyonları:
    • Auto-CoT: Few-shot prompting için akıl yürütme örneklerinin otomatik olarak üretilmesi.
    • Self-Consistency: Birden fazla akıl yürütme zinciri üretmek ve "oylama" yoluyla en sık görülen yanıtı seçmek; bu da güvenilirliği artırır.
    • Tree-of-Thoughts (ToT): Akıl yürütme yollarını bir ağaç biçiminde keşfetmek; ara adımları geri alma ve değerlendirme olanağı sunar. Bu teknik, örneğin "Game of 24" gibi karmaşık görevlerde başarı oranını ~%4'ten ~%74'e çıkararak yüksek etkinlik göstermektedir.
    • Graph-of-Thought (GoT), LogiCoT ve daha karmaşık ya da mantıksal olarak doğrulanmış akıl yürütmeye yönelik diğer teknikler.
  • ReAct (Reason and Act): CoT'u geliştiren bir teknik. Modelin Akıl Yürütme (Thought) ve Araç Kullanarak Eylem (Act) adımlarını dönüşümlü olarak uyguladığı ve Gözlemler (Observation) temelinde anlayışını güncellediği yinelemeli bir döngü sunar.
  • Self-Refine: Modelin önce bir yanıt ürettiği, ardından bunu eleştirdiği ve son olarak kendi eleştirisine dayanarak iyileştirdiği yinelemeli bir süreç. Bu "üretim-eleştiri-iyileştirme" döngüsü birkaç kez tekrarlanabilir.
  • Take a Step Back Prompting: Model önce genel ilkeleri veya soyutlamaları formüle eder, ardından bunları somut göreve uygular.

Gelişmiş Teknikler: Ajanlar ve Araçlar

  • Araç Kullanımı (Tool Usage) / Fonksiyon Çağrısı (Function Calling): LLM'e harici API'leri (arama, hesap makinesi, veritabanı) çağırma olanağı tanımak. Model, araç çağrısı için yapılandırılmış bir istek üretir; bu istek uygulama tarafından yürütülür ve sonuç modele geri döndürülür. Modern LLM'ler (GPT-4, Claude 3) bu işlev için yerleşik destek sunar.
  • Ajanlar (Agents): Bir hedefi gerçekleştirmek amacıyla özerk biçimde planlama yapabilen, araç kullanan ve harekete geçebilen LLM tabanlı sistemler. Çoğunlukla ReAct benzeri döngüler kullanır. Framework'ler (LangChain, AutoGen, CrewAI) bu sistemlerin oluşturulmasını kolaylaştırır.
  • Çok Ajanlı Sistemler: Karmaşık görevleri çözmek için birden fazla uzmanlaşmış ajanın bir arada çalışması.

Hata ve Halüsinasyon Azaltma Teknikleri

  • RAG: Yanıtları alınan gerçek verilere dayandırmak.
  • Yanıt Kısıtlama Talimatları: Yalnızca sağlanan bağlama dayanarak yanıt vermesi veya belirsizlik durumunda bunu belirtmesi ("Yanıt bilinmiyorsa 'Bilmiyorum' de") yönünde talimat vermek.
  • Alıntı Talep Etmek: Modelden, yanıtın dayandığı kaynakları ya da bağlamın ilgili bölümlerini belirtmesini istemek.
  • Doğrulama ve Öz-Eleştiri: Chain-of-Verification (CoVe) (bir yanıt üretip ardından onu doğrulama ve düzeltme), Self-Refine veya modelden kendi yanıtını hatalara karşı doğrulamasını doğrudan istemek gibi teknikleri kullanmak.
  • CoT: Adım adım akıl yürütme, başlı başına mantık hatalarını azaltabilir.

Değerlendirme ve Yineleme Teknikleri

Değerlendirme ayrı bir süreç olsa da bazı yönleri prompt engineering'in bir parçasıdır:

  • Prompt'ların A/B Testi: Farklı prompt sürümlerinin aynı görevlerdeki etkinliğini karşılaştırmak.
  • Değerlendirme için LLM Kullanımı: Güçlü bir modelin (örneğin GPT-4) başka bir prompt veya model tarafından üretilen yanıtların kalitesini değerlendirmek için kullanılması (LLM-as-a-Judge).

Prompt Kalıpları

Yaygın olarak yeniden kullanılan yapılar:

  • Persona Kalıbı (Persona Pattern).
  • Çıktı Özelleştirme Kalıbı (Output Customization Pattern).
  • Açıklama Talep Etme Kalıbı (Question Refinement Pattern).
  • Bilişsel Doğrulama / Öz-Eleştiri Kalıbı (Cognitive Verifier / Self-Critique Pattern).
  • Adım Adım Akıl Yürütme Kalıbı (Step-by-Step / Chain-of-Thought Pattern).
  • Şablon Kalıbı (Template Pattern).

Ayrıca bakınız

  • Büyük Dil Modelleri
  • Chain-of-Thought Prompting
  • LLM Halüsinasyonları ve Hatalı Yanıtlar

Literatür

  • Radford, A. et al. (2019). Language Models are Unsupervised Multitask Learners. PDF.
  • Brown, T. B. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Li, X. L.; Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. arXiv:2101.00190.
  • Liu, Y. et al. (2021). Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Wei, J. et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Zhang, Z. et al. (2022). Automatic Chain of Thought Prompting in Large Language Models. arXiv:2210.03493.
  • Zhou, D. et al. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Rafailov, R. et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Chen, S. Y. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Chang, K. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
  • Genkina, D. (2024). AI Prompt Engineering Is Dead. IEEE Spectrum. [1].
  • Li, Z. et al. (2024). Prompt Compression for Large Language Models: A Survey. arXiv:2410.12388.
  • Liang, X. et al. (2024). Internal Consistency and Self-Feedback in Large Language Models: A Survey. arXiv:2407.14507.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Li, W. et al. (2025). A Survey of Automatic Prompt Engineering: An Optimization Perspective. arXiv:2502.11560.
  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. EMNLP 2025. PDF.
  • Yang, B. et al. (2025). Hallucination Detection in Large Language Models with Metamorphic Relations. arXiv:2502.15844.