Modül 3 · Prompt Evaluation · ⏱ 7 dakika

Code based grading

Code based grading

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

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

Genel bakış

Kod üreten AI modellerini değerlendirirken, yanıtın anlamlı olup olmadığını kontrol etmekten fazlasına ihtiyacınız var. Aynı zamanda üretilen kodun gerçekten geçerli syntax’a sahip olduğunu ve doğru formatı izlediğini doğrulamanız gerekir. İşte code-based grading burada devreye girer.

Code grading nasıl çalışır

Code grading, AI tarafından üretilen yanıtların iki temel yönünü doğrular:

  • Format — Yanıt, açıklama olmadan yalnızca istenen kod tipini (Python, JSON veya Regex) döndürmeli
  • Valid Syntax — Üretilen kod, intended dilde doğru şekilde parse olmalı
  • Task Following — Yanıt, sorulanı doğrudan ele almalı ve doğru olmalı

İlk iki kriter code grader tarafından, task following ise model grader tarafından değerlendirilir. Birlikte kapsamlı bir evaluation sağlarlar.

Syntax validation fonksiyonları

Üretilen kodun geçerli syntax’a sahip olup olmadığını kontrol etmek için output’u parse etmeye çalışan üç helper fonksiyon oluşturabilirsiniz:

def validate_json(text):
    try:
        json.loads(text.strip())
        return 10
    except json.JSONDecodeError:
        return 0

def validate_python(text):
    try:
        ast.parse(text.strip())
        return 10
    except SyntaxError:
        return 0

def validate_regex(text):
    try:
        re.compile(text.strip())
        return 10
    except re.error:
        return 0

Her fonksiyon metni kendi formatında parse etmeye çalışır. Parse başarılı olursa 10 mükemmel puan döner. Hata ile başarısız olursa syntax geçersizdir ve 0 döner.

Dataset format gereksinimleri

Code grader’ın hangi validator’ı kullanacağını bilmesi için test case’lerinizin beklenen output formatını belirtmesi gerekir:

{
    "task": "Create a Python function to validate an AWS IAM username",
    "format": "python"
}

Dataset üretim prompt’unuza bu format alanını otomatik olarak dahil edecek şekilde örnek output yapısına ekleyebilirsiniz.

Prompt netliğini iyileştirmek

AI modelinizden daha iyi sonuçlar almak için prompt talimatlarınızı beklenen output formatı konusunda daha spesifik yapın:

* Respond only with Python, JSON, or a plain Regex
* Do not add any comments or commentary or explanation

Modeli sadece raw code döndürmeye teşvik etmek için pre-fill edilmiş assistant message ile code block’ları da kullanabilirsiniz:

add_assistant_message(messages, "```code")

Bu, Claude’a Python, JSON veya Regex olduğunu önceden belirtmek zorunda kalmadan code içeriği üretmeye başlamasını söyler.

Puanları birleştirmek

Son adım model grader puanını code grader puanı ile birleştirmektir. Basit bir yaklaşım ortalama almaktır:

model_grade = grade_by_model(test_case, output)
model_score = model_grade["score"]
syntax_score = grade_syntax(output, test_case)

score = (model_score + syntax_score) / 2

Bu, hem content quality’ye hem de teknik doğruluğa eşit ağırlık verir. Spesifik use case’iniz için neyin daha önemli olduğuna göre bu ağırlıkları ayarlayabilirsiniz.

Uygulamanızı test etmek

Code grading’i implemente ettikten sonra, baseline puanını almak için evaluation’ınızı çalıştırın. Puanın kendisi yapı olarak iyi ya da kötü değildir — önemli olan prompt’larınızı rafine ederek onu iyileştirip iyileştiremediğinizdir. Bu, subjektif değerlendirmeye dayanmak yerine prompt engineering ilerlemesini niceliksel olarak ölçmenin bir yolunu verir.

Temel çıkarımlar

  • Code-based grading deterministic ve hızlıdır; format/syntax kontrolü için ideal
  • json.loads, ast.parse, re.compile gibi standart kütüphane fonksiyonları parse başarısını sınamak için yeterli
  • Dataset şemasına format alanı eklemek hangi validator’ın çalışacağını otomatik belirler
  • Model grader (içerik kalitesi) + code grader (syntax/format) puanlarının ortalaması güçlü bir kompozit metrik sağlar
  • Baseline puan tek başına anlamlı değildir; asıl değer prompt iyileştirmeleri arasındaki deltadır