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 ZİNCİRİ, FORMAT gibi bir dizi “kol” (lever) öğrendik. Peki HANGİSİNİ, NE ZAMAN, NASIL denemeliyiz — ve bir değişikliğin GERÇEKTEN İYİLEŞTİRME olduğunu NASIL BİLİRİZ?

Sezgi

Prompt iyileştirme, KÖR bir deneme-yanılma DEĞİL, üç adımlı bir döngüdür: ÖLÇ (net, PROGRAMATİK bir başarı kriteri tanımla), DEĞİŞTİR (TEK bir şeyi değiştir), KARŞILAŞTIR (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 EDİLEBİLİR kriterler tanımlayalım (uzunluk, bilgi korunumu, eylem odağı):

Ölç: kriterleri PROGRAMATİK hale getir

# ÖLÇ adımı: NET, PROGRAMATİK OLARAK KONTROL EDİLEBİLİR 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ŞILAŞTIR adımı: her varyantı puanla ve NEYİN değiştiğini kaydet:

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

# KARŞILAŞTIR adımı: her varyantı, kaç kriteri KARŞILADIĞINA 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 İLERLEMESİ: 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, HANGİ değişikliğin NEYİ düzelttiği NETTİR.")

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 İLERLEMESİ: 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, HANGİ değişikliğin NEYİ düzelttiği NETTİR.

Matematik

Neden TEK seferde TEK değişiklik

v1v2v_1 \to v_2 arasında SADECE format kısıtı eklendi; v2v3v_2 \to v_3 arasında SADECE odak kısıtı eklendi. Eğer İKİSİNİ AYNI ANDA değiştirseydik, puan artışının HANGİ değişiklikten geldiğini AYIRT EDEMEZDİK. Bu, deneysel yöntemin (istatistik kategorisinde gördüğümüz “bir seferde bir değişken” ilkesinin) prompt mühendisliğine UYARLANMASIDIR.

Kod

v1, v2, v3 prompt varyantlarının 3 kriter üzerinden puanlarını gösteren çubuk grafik; puan 1'den 3'e yükseliyor.
Her tek değişiklik (v1->v2->v3), ölçülebilir puanı KADEMELİ 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) SİSTEMATİK olarak nasıl SEÇİLECEĞİNİ 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ü OTOMATİKLEŞTİRİLİR — düzinelerce prompt varyantı, YÜZLERCE test girdisiyle OTOMATİK olarak puanlanıp karşılaştırılabilir.
  • Her yineleme (iterasyon), ÖNCEKİ adımların üzerine İNŞA EDİLİR — 3-7. dersteki HER teknik, bu döngüde denenip TUTULABİLECEK ya da ATILABİLECEK bir “hipotez”dir.

Bu 2 hatayı yaparsın:

  1. Birden fazla değişikliği AYNI ANDA yapmak — hangi değişikliğin SONUCU etkilediğini ARTIK bilemezsin.
  2. Kriterleri BELİRSİZ bırakmak (“daha iyi olsun”) — 7. dersteki gibi, PROGRAMATİK olarak KONTROL EDİLEBİLİR 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, PROGRAMATİK 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, HANGİ değişikliğin hangi kritere katkı sağladığını NET kılıyor.

2. Prompt iyileştirmede AYNI ANDA birden fazla şeyi değiştirmenin SORUNU nedir?
  1. Hiçbir sorunu yoktur, daha hızlı sonuç verir
  2. Puan değişirse, HANGİ değişikliğin bu sonucu YARATTIĞINI 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ÇIKÇA belirtildiği gibi, v1->v2 ve v2->v3 arasında SADECE birer değişiklik var; ikisini AYNI ANDA yapsaydık, hangi değişikliğin puanı artırdığını AYIRT EDEMEZDİK.

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 PROGRAMATİK OLARAK KONTROL EDİLEBİLİR 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ĞİŞTİR (tek bir şeyi değiştir), KARŞILAŞTIR (kritere göre puanla).
  • Kriterler PROGRAMATİK OLARAK KONTROL EDİLEBİLİR 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ığı BELİRSİZLEŞİR.
  • 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 ATILAN hipotezlerdir.
Sonraki adım: Yaygın başarısızlık kalıpları →