Ana içeriğe geç

Orta9 dk

Prompt'u iyileştirme döngüsü: ölç, değiştir, karşılaştır

Önkoşul:Yapılandırılmış çıktı alma (JSON, şema)

Kanca

3-7. derste görev, persona, örnek, düşünce zinciri, format gibi bir dizi “kol” (lever) öğrendik. Peki hangisini, ne zaman, nasıl denemeliyiz — ve bir değişikliğin gerçekten iyileştirme olduğunu nasıl biliriz?

Sezgi

Prompt iyileştirme, kör bir deneme-yanılma değil, üç adımlı bir döngüdür: ölç (net, programatik bir başarı kriteri tanımla), değiştir (tek bir şeyi değiştir), karşılaştır (kritere göre puanla) — sonra tekrarla. Aşağıda, bir e-postayı özetleme görevinde bu döngünün üç adımını incele:

v11 / 3

(başlangıç noktası)

Prompt

Summarize this email.

Çıktı (40 kelime)

The email is about a client meeting that was originally scheduled for Thursday but has now been moved to Friday due to a scheduling conflict, and the sender is asking the team to update their calendars and flag any issues.

  • ✗ ≤ 15 kelime
  • ✓ 'Friday' bilgisi korunmuş
  • ✗ Bir eylem fiiliyle başlıyor
v22 / 3

+ 'in exactly one sentence, under 15 words' (format kısıtı, 3. ders)

Prompt

Summarize this email in exactly one sentence, under 15 words.

Çıktı (12 kelime)

Client meeting moved to Friday 10am; update your calendar and flag conflicts.

  • ✓ ≤ 15 kelime
  • ✓ 'Friday' bilgisi korunmuş
  • ✗ Bir eylem fiiliyle başlıyor
v33 / 3

+ 'focusing on the action the recipient must take' (odak kısıtı)

Prompt

Summarize this email in one sentence, under 15 words, focusing on the action the recipient must take.

Çıktı (9 kelime)

Update your calendar: client meeting is now Friday 10am.

  • ✓ ≤ 15 kelime
  • ✓ 'Friday' bilgisi korunmuş
  • ✓ Bir eylem fiiliyle başlıyor

Mekanizma

Önce ölç adımı: net, kontrol edilebilir kriterler tanımlayalım (uzunluk, bilgi korunumu, eylem odağı):

Ölç: kriterleri programatik hale getir

# Ölç adımı: net, programatik olarak kontrol edilebilir kriterler tanımla.
EYLEM_FIILLERI = {"update", "schedule", "confirm", "review", "send", "check", "reply", "move"}

def olcumler(metin):
    kelimeler = metin.split()
    uzunluk_ok = len(kelimeler) <= 15
    onemli_bilgi_var = "friday" in metin.lower()
    ilk_kelime = kelimeler[0].strip(":,.").lower()
    eylemle_basliyor = ilk_kelime in EYLEM_FIILLERI
    return {
        "uzunluk_ok": uzunluk_ok,
        "onemli_bilgi_var": onemli_bilgi_var,
        "eylemle_basliyor": eylemle_basliyor,
        "kelime_sayisi": len(kelimeler),
    }

print(f"E-posta: \"{EPOSTA[:60]}...\"\n")
print(f"{'Varyant':<8} {'<=15 kelime':<14} {'Friday bilgisi var':<20} {'Eylemle başlıyor':<18} {'Kelime sayısı'}")
for v in VARYANTLAR:
    olcum = olcumler(v["cikti"])
    print(f"{v['isim']:<8} {str(olcum['uzunluk_ok']):<14} {str(olcum['onemli_bilgi_var']):<20} {str(olcum['eylemle_basliyor']):<18} {olcum['kelime_sayisi']}")
    v["olcum"] = olcum
E-posta: "Hi team, the client meeting has been moved from Thursday 2pm..."

Varyant  <=15 kelime    Friday bilgisi var   Eylemle başlıyor   Kelime sayısı
v1       False          True                 False              40
v2       True           True                 False              12
v3       True           True                 True               9

Sonra karşılaştır adımı: her varyantı puanla ve neyin değiştiğini kaydet:

Karşılaştır: puan 1'den 3'e çıkıyor

# Karşılaştır adımı: her varyantı, kaç kriteri karşıladığına göre puanla.
print(f"\n{'Varyant':<8} {'Puan (3 üzerinden)':<20} {'Değişen':<55}")
for v in VARYANTLAR:
    puan = sum(1 for k in ["uzunluk_ok", "onemli_bilgi_var", "eylemle_basliyor"] if v["olcum"][k])
    v["puan"] = puan
    print(f"{v['isim']:<8} {puan:<20} {v['degisen']:<55}")

print("\nv1 -> v2 -> v3 ilerlemesi: tek bir değişiklik (önce format kısıtı, sonra odak kısıtı)")
print("eklendikçe, puan 1'den 3'e yükseliyor -- her adımda tek bir değişken değiştirildiği")
print("için, hangi değişikliğin neyi düzelttiği nettir.")

Varyant  Puan (3 üzerinden)   Değişen                                                
v1       1                    (başlangıç noktası)                                    
v2       2                    + 'in exactly one sentence, under 15 words' (format kısıtı, 3. ders)
v3       3                    + 'focusing on the action the recipient must take' (odak kısıtı)

v1 -> v2 -> v3 ilerlemesi: tek bir değişiklik (önce format kısıtı, sonra odak kısıtı)
eklendikçe, puan 1'den 3'e yükseliyor -- her adımda tek bir değişken değiştirildiği
için, hangi değişikliğin neyi düzelttiği nettir.

Matematik

Neden tek seferde tek değişiklik

v1→v2v_1 \to v_2 arasında sadece format kısıtı eklendi; v2→v3v_2 \to v_3 arasında sadece odak kısıtı eklendi. Eğer ikisini aynı anda değiştirseydik, puan artışının hangi değişiklikten geldiğini ayırt edemezdik. Bu, deneysel yöntemin (istatistik kategorisinde gördüğümüz “bir seferde bir değişken” ilkesinin) prompt mühendisliğine uyarlanmasıdır.

Kod

v1, v2, v3 prompt varyantlarının 3 kriter üzerinden puanlarını gösteren çubuk grafik; puan 1'den 3'e yükseliyor.(grafiği tam boyutta, yeni sekmede aç)
Her tek değişiklik (v1->v2->v3), ölçülebilir puanı kademeli olarak artırıyor -- hangi değişikliğin işe yaradığı net.

Nerede işe yarar

Bu döngü, 1-7. derste öğrendiğimiz tüm tekniklerin (persona, few-shot, CoT, format) sistematik olarak nasıl seçileceğini belirler:

  • Kriter olmadan “iyileştirme” yoktur — “bu daha iyi görünüyor” öznel bir yargıdır; “bu, kriterlerin 3’ünü de karşılıyor” nesnel bir ölçümdür.
  • Üretim (production) ortamlarında bu döngü otomatikleştirilir — düzinelerce prompt varyantı, yüzlerce test girdisiyle otomatik olarak puanlanıp karşılaştırılabilir.
  • Her yineleme (iterasyon), önceki adımların üzerine inşa edilir — 3-7. dersteki her teknik, bu döngüde denenip tutulabilecek ya da atılabilecek bir “hipotez”dir.

Bu 2 hatayı yaparsın:

  1. Birden fazla değişikliği aynı anda yapmak — hangi değişikliğin sonucu etkilediğini artık bilemezsin.
  2. Kriterleri belirsiz bırakmak (“daha iyi olsun”) — 7. dersteki gibi, programatik olarak kontrol edilebilir kriterler olmadan, “iyileşme” ölçülemez.

Kendini test et

1. Notebook'ta v1'den v3'e giderken puan neden 1'den 3'e çıkıyor?
  1. Rastgele bir iyileşme
  2. Her adımda (v1->v2, v2->v3) tek bir spesifik kısıt eklendi (önce format, sonra odak) ve bu, programatik olarak ölçülen 3 kritere (uzunluk, bilgi korunumu, eylem odağı) birer birer katkı sağladı (doğru cevap)
  3. Çıktılar rastgele üretildi
  4. Puanlama sistemi hatalı

Neden: puanlama bloğunda v1=1, v2=2, v3=3 puan alıyor -- her adımda sadece bir değişkenin değişmesi, hangi değişikliğin hangi kritere katkı sağladığını net kılıyor.

2. Prompt iyileştirmede aynı anda birden fazla şeyi değiştirmenin sorunu nedir?
  1. Hiçbir sorunu yoktur, daha hızlı sonuç verir
  2. Puan değişirse, hangi değişikliğin bu sonucu yarattığını ayırt edemezsin -- bu da istatistik kategorisindeki 'bir seferde bir değişken' ilkesinin ihlalidir (doğru cevap)
  3. Model bu durumda hata verir
  4. Sadece maliyeti artırır, başka etkisi yoktur

Neden: MathBox'ta açıkça belirtildiği gibi, v1->v2 ve v2->v3 arasında sadece birer değişiklik var; ikisini aynı anda yapsaydık, hangi değişikliğin puanı artırdığını ayırt edemezdik.

3. 'Kriter olmadan iyileştirme yoktur' ifadesi ne anlama gelir?
  1. Her prompt için mutlaka bir matematik formülü gerekir
  2. 'Bu daha iyi görünüyor' gibi öznel bir yargı yerine, 'çıktı 15 kelimeden kısa mı', 'önemli bilgi korundu mu' gibi programatik olarak kontrol edilebilir kriterler tanımlanmadan, iyileşme nesnel olarak ölçülemez (doğru cevap)
  3. Kriterler sadece JSON çıktılarında gereklidir
  4. Her prompt en az 3 kritere sahip olmalıdır

Neden: olcut-tanimlama bloğunda kriterler (uzunluk_ok, onemli_bilgi_var, eylemle_basliyor) tamamen programatik (True/False) olarak tanımlanıyor -- kullanım bölümü bunun neden gerekli olduğunu vurguluyor.

Özet

Özet

  • Prompt iyileştirme üç adımlı bir döngüdür: ölç (net kriter tanımla), değiştir (tek bir şeyi değiştir), karşılaştır (kritere göre puanla).
  • Kriterler programatik olarak kontrol edilebilir olmalıdır -- "daha iyi görünüyor" ölçülemez.
  • Her adımda sadece tek bir değişken değiştirilmeli -- aksi hâlde hangi değişikliğin işe yaradığı belirsizleşir.
  • Bu dersteki örnekte, iki ayrı tek-değişken adımı puanı 1/3'ten 3/3'e çıkardı.
  • 3-7. dersteki tüm teknikler (persona, few-shot, CoT, format), bu döngüde test edilip tutulan ya da atılan hipotezlerdir.
Sonraki adım: Yaygın başarısızlık kalıpları →