Prompt Engineering: Yapay Zekadan En İyi Sonucu Alma
Prompt Engineering Nedir?
Prompt engineering, yapay zeka modellerinden (özellikle büyük dil modellerinden - LLM) istenen çıktıyı elde etmek için girdi metinlerini (prompt) stratejik olarak tasarlama sanatı ve bilimidir. Doğru bir prompt, sıradan bir yanıt ile olağanüstü bir sonuç arasındaki farkı belirler. ChatGPT, Claude, Gemini gibi modellerin yaygınlaşmasıyla birlikte prompt engineering, yazılım mühendisliğinden pazarlamaya kadar birçok alanda kritik bir beceri haline gelmiştir.
Temel Prompt Engineering Teknikleri
1. Zero-Shot Prompting
Modele herhangi bir örnek vermeden, doğrudan talimat verme yöntemidir. Basit görevler için oldukça etkilidir:
Prompt: "Aşağıdaki cümlenin duygusunu analiz et: 'Bu ürün gerçekten harika çalışıyor!' → Yanıt: Pozitif"
Zero-shot prompting, modelin önceden eğitildiği bilgilere dayanır. Karmaşık veya niş alanlarda yetersiz kalabilir; bu durumda diğer tekniklere başvurmak gerekir.
2. Few-Shot Prompting
Modele birkaç örnek vererek beklenen çıktı formatını ve mantığını gösterme tekniğidir. Bu yöntem, modelin tutarlı ve istenen formatta yanıt üretme olasılığını önemli ölçüde artırır:
Prompt:
"Ürün yorumlarını sınıflandır:
Yorum: 'Kargo çok hızlı geldi, teşekkürler!' → Kategori: Kargo (Pozitif)
Yorum: 'Ürün fotoğraftakinden farklı çıktı.' → Kategori: Ürün Kalitesi (Negatif)
Yorum: 'Fiyatına göre gayet iyi bir ürün.' → Kategori: ?"
Few-shot prompting'de örneklerin kalitesi ve çeşitliliği doğrudan sonucu etkiler. Örneklerin uç durumları da kapsamasına dikkat edin.
3. Chain-of-Thought (Düşünce Zinciri)
Modelden adım adım düşünmesini isteyerek karmaşık problemlerde doğruluk oranını artıran güçlü bir tekniktir. Özellikle matematik, mantık ve çok adımlı analizlerde büyük fark yaratır:
Prompt: "Bir mağazada 3 gömlek ve 2 pantolon aldım. Gömlekler 150 TL, pantolonlar 300 TL.
%10 indirim uygulanıyor. Toplam ne kadar öderim? Adım adım düşün."
Model yanıtı:
Adım 1: Gömlek tutarı = 3 × 150 = 450 TL
Adım 2: Pantolon tutarı = 2 × 300 = 600 TL
Adım 3: Toplam = 450 + 600 = 1050 TL
Adım 4: İndirim = 1050 × 0.10 = 105 TL
Adım 5: Ödenecek = 1050 - 105 = 945 TL
İleri Düzey Teknikler
Rol Atama (System Prompting)
Modele belirli bir rol vererek uzmanlık alanına uygun yanıtlar almanızı sağlar. Bu teknik, yanıtların tonunu, derinliğini ve odak noktasını kontrol etmek için son derece etkilidir:
"Sen 15 yıllık deneyime sahip kıdemli bir Python geliştiricisisin.
Kod incelemeleri yaparken performans, güvenlik ve okunabilirlik
konularına özellikle dikkat ediyorsun. Aşağıdaki kodu incele ve
iyileştirme önerileri sun."
Kısıtlama ve Format Belirleme
Çıktının yapısını, uzunluğunu ve formatını açıkça belirtmek, tutarlı ve kullanılabilir sonuçlar almanın anahtarıdır:
"Aşağıdaki metni özetle.
KURALLAR:
- Maksimum 3 madde halinde yaz
- Her madde en fazla 20 kelime olsun
- Teknik terimleri basitleştir
- JSON formatında döndür: {"ozet": ["madde1", "madde2", "madde3"]}"
Self-Consistency (Öz-Tutarlılık)
Aynı soruyu farklı şekillerde sorarak veya modelden birden fazla yanıt üreterek en tutarlı sonucu seçme yöntemidir. Kritik kararlar için güvenilirliği artırır. Modelden aynı problem için 3-5 farklı çözüm yolu üretmesini isteyip, çoğunluğun hemfikir olduğu yanıtı kabul edebilirsiniz.
Yazılım Geliştirmede Prompt Engineering
Prompt engineering, yazılım geliştirme süreçlerinde giderek daha merkezi bir rol oynamaktadır. İşte pratik kullanım alanları:
- Kod üretimi: Fonksiyon imzası, beklenen davranış ve uç durumları net biçimde tanımlayarak yüksek kaliteli kod üretin.
- Kod inceleme: Modele güvenlik açıkları, performans sorunları ve tasarım kalıplarına odaklanması talimatını verin.
- Hata ayıklama: Hata mesajını, ilgili kodu ve beklenen davranışı yapılandırılmış biçimde sunarak çözüm isteyin.
- Test yazımı: Uç durumlar dahil kapsamlı test senaryoları ürettirin.
- Dokümantasyon: Hedef kitle ve detay seviyesini belirterek teknik dokümantasyon oluşturun.
Örnek bir kod üretim prompt'u:
"Python'da bir rate limiter sınıfı yaz.
- Token bucket algoritması kullanılsın
- Thread-safe olmalı
- Dakikada maksimum istek sayısı parametre olarak alınsın
- Type hint kullanılsın
- Docstring eklensin
- Birim testleri de yaz"
Sık Yapılan Hatalar ve Çözümleri
- Belirsiz talimatlar: "İyi bir kod yaz" yerine "SOLID prensiplerine uygun, hata yönetimi içeren, PEP 8 uyumlu bir Python fonksiyonu yaz" deyin.
- Aşırı uzun promptlar: Gereksiz bilgiyi ayıklayın. Modelin dikkatini dağıtan fazla bağlam, sonucu olumsuz etkiler.
- Bağlam eksikliği: Modelin varsayım yapmasını beklemeyin. Hedef kitle, kullanım amacı ve teknik kısıtlamaları açıkça belirtin.
- Tek seferde çok fazla görev: Karmaşık görevleri alt görevlere bölerek her birini ayrı bir prompt ile çözün. Bu yaklaşım hem doğruluğu hem de kontrol edilebilirliği artırır.
- İterasyon yapmamak: İlk prompt mükemmel olmayabilir. Sonucu değerlendirip prompt'u aşamalı olarak iyileştirin.
Prompt Optimizasyonu İçin İpuçları
- Negatif talimatlar ekleyin: Modele ne yapmaması gerektiğini söylemek, ne yapması gerektiğini söylemek kadar önemlidir. Örneğin: "Açıklama ekleme, sadece kodu döndür."
- Sınırlayıcılar (delimiters) kullanın: Girdi metnini
""",---veya XML etiketleri gibi işaretlerle ayırarak modelin veri ile talimatı karıştırmasını önleyin. - Çıktı formatını örnekle gösterin: Beklediğiniz formatta bir örnek çıktı vererek modeli yönlendirin.
- Sıcaklık (temperature) parametresini ayarlayın: Yaratıcı içerik için yüksek (0.7-1.0), analitik görevler için düşük (0.0-0.3) değerler tercih edin.
- Prompt şablonları oluşturun: Tekrarlayan görevler için parametrize edilmiş şablonlar hazırlayarak tutarlılık ve verimlilik sağlayın.
Sonuç
Prompt engineering, yapay zeka ile etkili iletişim kurmanın temelidir. İyi tasarlanmış bir prompt; net bir talimat, yeterli bağlam, uygun format kısıtlamaları ve gerektiğinde örnekler içermelidir. Bu alandaki yetkinliğinizi artırmak için farklı teknikleri deneyimleyin, sonuçları karşılaştırın ve prompt'larınızı iteratif olarak geliştirin. Unutmayın: yapay zekadan aldığınız çıktının kalitesi, verdiğiniz girdinin kalitesiyle doğru orantılıdır.