Model based grading
Model based grading
Bu modül için tahmini süre: 10 dakika
Genel bakış
Prompt evaluation workflow’ları kurarken grading sistemleri output kalitesi hakkında objektif sinyaller sağlar. Bir grader, model output’unu alır ve ölçülebilir bir geri bildirim döndürür — tipik olarak 1 ile 10 arasında bir sayı, burada 10 yüksek kaliteyi, 1 düşük kaliteyi temsil eder.
Grader türleri

Model output’larını grade etmenin üç ana yaklaşımı vardır:
- Code graders — output’ları custom mantıkla programatik olarak değerlendirir
- Model graders — kaliteyi değerlendirmek için başka bir AI modeli kullanır
- Human graders — output’ları manuel olarak inceleyip puanlamak için insan kullanır
Code graders
Code grader’lar, hayal edebileceğiniz herhangi bir programatik kontrolü uygulamanıza izin verir. Yaygın kullanımlar:
- Output uzunluğunu kontrol etmek
- Output’un belirli kelimeleri içerip içermediğini doğrulamak
- JSON, Python veya regex için syntax validation
- Okunabilirlik puanları
Tek gereksinim, kodunuzun kullanılabilir bir sinyal döndürmesidir — genelde 1 ile 10 arasında bir sayı.
Model graders
Model grader’lar, orijinal output’unuzu değerlendirme için başka bir API çağrısına feed eder. Bu yaklaşım şunları değerlendirmek için muazzam esneklik sağlar:
- Response quality
- Instruction following kalitesi
- Completeness
- Helpfulness
- Safety
Human graders
Human grader’lar en fazla esnekliği sağlar ama zaman alıcı ve sıkıcıdır. Şunları değerlendirmek için kullanışlıdır:
- Genel response quality
- Comprehensiveness
- Depth
- Conciseness
- Relevance
Evaluation kriterlerini tanımlamak

Herhangi bir grader uygulamadan önce net evaluation kriterleriniz olmalı. Bir kod üretimi prompt’u için şunlara odaklanabilirsiniz:
- Format — Açıklama olmadan sadece Python, JSON veya Regex döndürmeli
- Valid Syntax — Üretilen kod geçerli syntax’a sahip olmalı
- Task Following — Yanıt, kullanıcının görevini doğrudan ve doğru kodla ele almalı

İlk iki kriter code grader ile iyi çalışırken, task following esnekliği nedeniyle model grader’a daha uygundur.
Model grader uygulamak
İşte bir model grader fonksiyonunu nasıl kurarsınız:
def grade_by_model(test_case, output):
# Create evaluation prompt
eval_prompt = """
You are an expert code reviewer. Evaluate this AI-generated solution.
Task: {task}
Solution: {solution}
Provide your evaluation as a structured JSON object with:
- "strengths": An array of 1-3 key strengths
- "weaknesses": An array of 1-3 key areas for improvement
- "reasoning": A concise explanation of your assessment
- "score": A number between 1-10
"""
messages = []
add_user_message(messages, eval_prompt)
add_assistant_message(messages, "```json")
eval_text = chat(messages, stop_sequences=["```"])
return json.loads(eval_text)
Buradaki anahtar içgörü: puan ile birlikte strengths, weaknesses ve reasoning istemek. Bu bağlam olmadan modeller genelde 6 civarında orta puanlara varsayılan eğilim gösterir.
Grading’i workflow’unuza entegre etmek
Test case runner’ınızı grader’ı çağıracak şekilde güncelleyin:
def run_test_case(test_case):
output = run_prompt(test_case)
# Grade the output
model_grade = grade_by_model(test_case, output)
score = model_grade["score"]
reasoning = model_grade["reasoning"]
return {
"output": output,
"test_case": test_case,
"score": score,
"reasoning": reasoning
}
Son olarak tüm test case’ler arasında ortalama bir puan hesaplayın:
from statistics import mean
def run_eval(dataset):
results = []
for test_case in dataset:
result = run_test_case(test_case)
results.append(result)
average_score = mean([result["score"] for result in results])
print(f"Average score: {average_score}")
return results
Bu, prompt’unuzu iyileştirirken takip edebileceğiniz objektif bir metrik verir. Model grader’lar bazen kaprisli olabilir ama iyileştirmeleri ölçmek için tutarlı bir baseline sağlar.
Temel çıkarımlar
- Grader’lar üç ana ailede gelir: code, model, human — her birinin güçlü/zayıf yanları vardır
- Model grader, doğal dil veya task following gibi öznel kriterleri değerlendirmek için güçlüdür
- Sadece puan istemek değil; puan ile birlikte strengths, weaknesses ve reasoning istemek modelin orta-skorlara takılmasını engeller
- JSON çıktısı için yine prefill (
```json) + stop_sequence (```) pattern’i kullanılır - Birden çok test case’in puanlarının ortalamasını almak, prompt değişikliklerinin etkisini ölçen pratik baseline metriğidir