Modül 4 · Prompt Engineering Techniques · ⏱ 11 dakika

Prompt engineering

Prompt engineering

Orijinal İngilizce video — Anthropic Academy / JWPlayer. Aşağıdaki Türkçe metin dersi birebir özetler.

Bu modül için tahmini süre: 11 dakika

Genel bakış

Prompt engineering, yazdığınız bir prompt’u alıp daha güvenilir ve daha yüksek kaliteli çıktılar üretecek şekilde iyileştirme sürecidir. Bu süreç iteratif refinement gerektirir: temel bir prompt ile başlarsınız, performansını ölçersiniz, sistematik biçimde engineering teknikleri uygularsınız ve tekrar değerlendirirsiniz. Bu derste döngünün her adımını ve değerlendirme pipeline’ının nasıl kurulduğunu göreceksiniz.

Prompt engineering, yazdığınız bir prompt’u alıp daha güvenilir, daha yüksek kaliteli çıktılar elde edecek şekilde iyileştirmektir. Bu süreç iteratif bir refinement içerir; temel bir prompt ile başlar, performansını değerlendirir, ardından geliştirmek için sistematik olarak engineering teknikleri uygularsınız.

İteratif iyileştirme süreci

İzlenen yaklaşım, istediğiniz sonuçlara ulaşana kadar tekrarlayabileceğiniz net bir döngüden oluşur:

  1. Hedef belirleyin — Prompt’un neyi başarmasını istediğinizi tanımlayın
  2. İlk prompt’u yazın — Temel bir ilk deneme oluşturun
  3. Prompt’u değerlendirin — Kriterlerinize göre test edin
  4. Prompt engineering tekniklerini uygulayın — Performansı artırmak için belirli yöntemleri kullanın
  5. Yeniden değerlendirin — Değişikliklerinizin sonuçları gerçekten iyileştirip iyileştirmediğini doğrulayın

Son iki adımı performanstan memnun kalana kadar tekrarlarsınız. Her iterasyon değerlendirme skorlarında ölçülebilir bir iyileşme göstermelidir.

Evaluation pipeline kurulumu

Bu süreci göstermek için pratik bir örnekle çalışacağız: atletler için bir günlük öğün planı üreten bir prompt oluşturma. Prompt; atletin boy, kilo, hedef ve diyet kısıtlamalarını dikkate alarak kapsamlı bir öğün planı üretmelidir.

Evaluation kurulumu, dataset üretimi ve model grading’i ele alan bir PromptEvaluator sınıfını kullanır. Evaluator instance’ını oluştururken max_concurrent_tasks parametresi ile concurrency’yi kontrol edebilirsiniz:

evaluator = PromptEvaluator(max_concurrent_tasks=5)

Rate limit hatalarından kaçınmak için düşük bir concurrency değeri (3 gibi) ile başlayın. API kotanız izin veriyorsa daha hızlı işleme için artırabilirsiniz.

Test data üretmek

Evaluation sistemi, prompt gereksinimlerinize göre test case’leri otomatik olarak üretebilir. Prompt’un ihtiyaç duyduğu input’ları tanımlarsınız:

dataset = evaluator.generate_dataset(
    task_description="Write a compact, concise 1 day meal plan for a single athlete",
    prompt_inputs_spec={
        "height": "Athlete's height in cm",
        "weight": "Athlete's weight in kg", 
        "goal": "Goal of the athlete",
        "restrictions": "Dietary restrictions of the athlete"
    },
    output_file="dataset.json",
    num_cases=3
)

Geliştirme sırasında iterasyon döngünüzü hızlandırmak için test case sayısını düşük tutun (2-3). Nihai doğrulama için bunu artırabilirsiniz.

İlk prompt’u yazmak

Bir baseline kurmak için basit, naif bir prompt ile başlayın. İşte kasıtlı olarak temel tutulmuş ilk denemenin bir örneği:

def run_prompt(prompt_inputs):
    prompt = f"""
What should this person eat?

- Height: {prompt_inputs["height"]}
- Weight: {prompt_inputs["weight"]}
- Goal: {prompt_inputs["goal"]}
- Dietary restrictions: {prompt_inputs["restrictions"]}
"""
    
    messages = []
    add_user_message(messages, prompt)
    return chat(messages)

Bu temel prompt muhtemelen zayıf sonuçlar üretecektir, ancak iyileştirmeyi ölçmek için bir başlangıç noktası verir.

Evaluation kriterleri eklemek

Evaluation’ınızı çalıştırırken, grading model’in dikkate alması gereken ek kriterleri belirtebilirsiniz:

results = evaluator.run_evaluation(
    run_prompt_function=run_prompt,
    dataset_file="dataset.json",
    extra_criteria="""
The output should include:
- Daily caloric total
- Macronutrient breakdown  
- Meals with exact foods, portions, and timing
"""
)

Bu, prompt’unuzun use case’iniz için önemli olan özel gereksinimlere göre değerlendirilmesini sağlar.

Sonuçları analiz etmek

Bir evaluation çalıştırdıktan sonra hem sayısal bir skor hem de ayrıntılı bir HTML rapor alırsınız. Rapor, her test case’in nasıl performans gösterdiğini ve modelin her skor için gerekçesini ayrıntılı olarak gösterir.

Düşük başlangıç skorlarından dolayı cesaretiniz kırılmasın — ilk deneme için 10 üzerinden 2.3’lük bir skor tipiktir. Hedef, engineering teknikleri uyguladıkça tutarlı iyileşme görmektir.

Ayrıntılı evaluation raporu, prompt’unuzun tam olarak nerede başarısız olduğunu ve hangi iyileştirmelerin gerekli olduğunu anlamanıza yardımcı olur. Bir sonraki iterasyonunuzu yönlendirmek için bu geri bildirimi kullanın.

Sonraki adımlar

Baseline’ınız oluşturulduğunda, belirli prompt engineering tekniklerini uygulamaya başlamaya hazırsınız. Öğrendiğiniz her teknik, evaluation skorlarınızda ölçülebilir bir iyileşmeyle sonuçlanmalı; temel prompt’unuzu kademeli olarak güvenilir, yüksek performanslı bir araca dönüştürmelidir.

Prompt engineering’in iteratif bir süreç olduğunu unutmayın. Anahtar, her seferinde tek bir değişiklik yapmak, etkisini değerlendirmek ve işe yarayanın üzerine inşa etmektir. Bu sistematik yaklaşım, hangi tekniklerin sizin use case’iniz için en fazla değeri sağladığını anlamanızı garanti eder.

Temel çıkarımlar

  • Prompt engineering, basit bir prompt’u sistematik iterasyonla güvenilir bir araca dönüştüren ölçülebilir bir süreçtir
  • Hedef → ilk prompt → değerlendirme → teknik uygulama → yeniden değerlendirme döngüsü her use case için tekrarlanır
  • PromptEvaluator sınıfı dataset üretimi ve model grading’i otomatikleştirir; max_concurrent_tasks ile rate limit’i kontrol edersiniz
  • Geliştirme aşamasında 2-3 test case ile başlamak iterasyonu hızlandırır; final validation için sayıyı artırın
  • extra_criteria parametresi, grading model’in use case’inize özgü gereksinimleri kontrol etmesini sağlar
  • Düşük başlangıç skorları normaldir; başarı, her iterasyondaki tutarlı iyileşmeyle ölçülür