Code based grading
Code based grading
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.compilegibi standart kütüphane fonksiyonları parse başarısını sınamak için yeterli- Dataset şemasına
formatalanı 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