Sürekli Değerlendirme Hattı Oluşturma
LLM-as-judge değerlendirmesini CI/CD hattınıza entegre edin; böylece her istem veya model değişikliği, dağıtımdan önce bir gerileme testi paketine karşı otomatik olarak değerlendirilir.
Sürekli Değerlendirme Hattı Oluşturma, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.
Değerlendirme Neden Sürekli Olmalıdır
Dağıtım sırasında bir kez değerlendirme yapmak yeterli değildir. LLM kalitesi sessizce düşebilir: model sağlayıcıları modellerini güncelleyebilir, sistem istemi değişiklikleri fark edilmeden eklenebilir, belge derlemi büyüdükçe erişim kalitesi değişebilir ve kullanıcı sorgularının dağılımı zaman içinde farklılaşabilir. Sürekli değerlendirme işlem hattı, her değişiklikte ve belirli bir takvimle aynı değerlendirme paketini çalıştırır; böylece kalite gerilemeleri haftalar içinde değil, saatler içinde yakalanır.
İşlem Hattının Temel Bileşenleri
Sürekli değerlendirme hattı beş bileşenden oluşur: test veri kümesi (beklenen çıktıları içeren, özenle hazırlanmış sorular), sistem çalıştırıcısı (her test sorusu için LLM hattınızı çağırır), değerlendirici (her yanıtı puanlar), sonuç deposu (geçmiş ölçümler için veritabanı veya zaman serisi deposu) ve raporlama katmanı (panolar ve uyarılar). Her bileşen bağımsız olarak yükseltilebilir.
# Pipeline architecture:
#
# test_dataset.json
# |
# v
# system_runner.py --> calls your LLM pipeline
# |
# v
# judge.py --> scores each (question, answer) pair
# |
# v
# results_db --> stores timestamped metric history
# |
# v
# dashboard + alert --> Grafana / Slack notificationTest Veri Kümesini Yapılandırma
Değerlendirme test kümenizi, deponuzda sürümlendirilmiş bir JSON veya YAML dosyası olarak saklayın. Her kayıt bir soru, kategori (olgusal, işlemsel, kapsam dışı) ve isteğe bağlı olarak bir referans yanıtı içerir. Test kümesini koddan ayrı sürümlendirin — yeni test örnekleri geriye dönük uyumlu bir değişikliktir, ancak örnekleri kaldırmak gerilemeleri gizleyebilir. İlgili tüm kategorilere dağılmış 200-500 örnek hedefleyin.
# eval/test_set_v3.json
# {
# 'version': '3.0',
# 'created': '2026-06-01',
# 'cases': [
# {
# 'id': 'faq_001',
# 'category': 'factual',
# 'question': 'What is the cancellation policy?',
# 'reference': 'Cancellations must be made 24 hours in advance.',
# 'min_correctness': 4
# },
# ...
# ]
# }Değerlendirme Paketini Çalıştırma
Değerlendirme çalıştırıcısı, her test örneği için üretim sisteminizi (veya hazırlık sürümünü) çağırır ve yanıtı ile meta verileri kaydeder. Her değerlendirme çalıştırmasını benzersiz bir çalıştırma kimliği, onu tetikleyen işleme ait SHA, zaman damgası ve test kümesi sürümüyle etiketleyin. Böylece çalıştırmaları tam olarak karşılaştırabilir ve hangi kod değişikliğinin gerilemeye neden olduğunu belirleyebilirsiniz.
import asyncio
import uuid
from datetime import datetime
async def run_eval_suite(system, test_set: list, commit_sha: str) -> dict:
run_id = str(uuid.uuid4())
results = []
for case in test_set:
response = await system.answer(case['question'])
score = await judge(case['question'], response, case.get('reference'))
results.append({
'run_id': run_id,
'commit_sha': commit_sha,
'case_id': case['id'],
'category': case['category'],
'response': response,
'score': score.model_dump(),
'evaluated_at': datetime.utcnow().isoformat()
})
return {'run_id': run_id, 'results': results}Geçmiş Ölçümleri Saklama ve Sorgulama
Her eval çalıştırmasının sonucunu bir veritabanında kalıcı olarak saklayın. run_id, commit_sha, case_id ve score alanlarını içeren basit bir eval_results tablosu yeterlidir. Çalıştırma başına ölçümleri hesaplamak için toplu puanları run_id değerine göre sorgulayın. Gerilemeleri tespit etmek için mevcut çalıştırmayı ana daldaki son başarılı çalıştırmayla karşılaştırın. InfluxDB gibi bir zaman serisi veritabanı sürekli izleme için iyi çalışır.
-- PostgreSQL schema
CREATE TABLE eval_runs (
run_id UUID PRIMARY KEY,
commit_sha TEXT NOT NULL,
test_set_version TEXT NOT NULL,
triggered_by TEXT, -- 'ci', 'scheduled', 'manual'
started_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE eval_results (
id SERIAL PRIMARY KEY,
run_id UUID REFERENCES eval_runs(run_id),
case_id TEXT NOT NULL,
category TEXT,
correctness INT,
overall INT,
response TEXT
);
CREATE INDEX idx_run_id ON eval_results(run_id);Gerilemeleri Otomatik Olarak Tespit Etme
Her değerlendirme çalıştırmasından sonra toplu puanları temel değerle (ana daldan alınmış ve elle onaylanmış son çalıştırmayla) karşılaştırın. Gerileme şu şekilde tanımlanır: herhangi bir puan boyutunun temel değerin %5'inden fazla altına düşmesi veya herhangi bir kategorinin ortalama puanının kesin alt sınırın altına inmesi. Gerilemeler dağıtımı engellemeli ve ekibe uyarı göndermelidir. İyileştirmeler otomatik olarak onaylanabilir.
def detect_regression(current: dict, baseline: dict, threshold_pct: float = 5.0) -> dict:
regressions = []
for metric in ['correctness', 'helpfulness', 'clarity']:
delta_pct = (current[metric] - baseline[metric]) / baseline[metric] * 100
if delta_pct < -threshold_pct:
regressions.append({
'metric': metric,
'baseline': baseline[metric],
'current': current[metric],
'delta_pct': round(delta_pct, 1)
})
return {'has_regression': len(regressions) > 0, 'regressions': regressions}CI/CD ile Entegrasyon
Değerlendirme paketini her çekme isteğinde çalışacak bir sürekli entegrasyon adımı olarak ekleyin. Sürekli entegrasyon hattı hazırlık sisteminizi çağırır, değerlendiriciyi çalıştırır, sonuçları saklar ve gerilemeleri denetler. Bir gerileme tespit edilirse sürekli entegrasyon adımı başarısız olur ve PR birleştirmesini engeller. Bunu GitHub veya GitLab üzerinde zorunlu durum denetimi olarak ekleyin; böylece hiç kimse bu denetimi atlayamaz. PR denetimleri için 50-100 örnekten oluşan bir alt küme kullanarak eval çalıştırma süresini 10 dakikanın altında tutun.
# .github/workflows/eval.yml
# name: LLM Quality Evaluation
# on: [pull_request]
# jobs:
# eval:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Run eval suite
# run: python eval/run_suite.py --commit $GITHUB_SHA --mode pr
# env:
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# - name: Check for regressions
# run: python eval/check_regression.py --run-id $EVAL_RUN_IDZamanlanmış Tam Değerlendirme Çalıştırmaları
PR denetimlerinin yanı sıra tam değerlendirme paketini (300'den fazla örneğin tamamını) üretim sistemi üzerinde günlük olarak çalıştırın. Bu, tek bir değişikliğin doğrudan oluşturmadığı kademeli kalite sapmalarını yakalar — örneğin daha fazla belge eklendikçe vektör veritabanının geri çağırma oranı düşerse veya LLM sağlayıcısı modelini sessizce güncellerse. Günlük tam çalıştırmalar, eğilimleri görünür kılan bir kalite zaman serisi sağlar.
# Separate eval modes:
EVAL_CONFIGS = {
'pr_check': {
'test_cases': 'eval/test_set_core_100.json',
'target': 'staging',
'max_runtime_min': 8
},
'nightly': {
'test_cases': 'eval/test_set_full_350.json',
'target': 'production',
'max_runtime_min': 30
},
'weekly_deep': {
'test_cases': 'eval/test_set_full_350.json',
'target': 'production',
'include_pairwise': True,
'max_runtime_min': 90
}
}Kalite Düşüşleri İçin Uyarı Gönderme
Ölçüm eğilimleri uyarı ve kritik eşiklerini aştığında uyarı gönderecek şekilde yapılandırın. Son 7 günde ortalama doğrulukta %3'lük düşüş bir uyarıyı tetikler. Tek bir çalıştırmada %10'luk düşüş ise hemen uyarı gönderilmesini tetikler. Uyarıları ekibin Slack kanalına, kritik uyarıları ise PagerDuty'ye yönlendirin. Her uyarı iletisinde gerileme analizini, değerlendirme panosuna bağlantıyı ve son değişiklikler için git sorumluluk bilgisini bulundurun.
import httpx
def send_regression_alert(regression_report: dict, webhook_url: str):
regressions = regression_report['regressions']
blocks = [{
'type': 'section',
'text': {'type': 'mrkdwn', 'text': '*LLM Quality Regression Detected*'}
}]
for r in regressions:
blocks.append({
'type': 'section',
'text': {'type': 'mrkdwn',
'text': f'*{r["metric"]}*: {r["baseline"]} -> {r["current"]} ({r["delta_pct"]}%)'}
})
httpx.post(webhook_url, json={'blocks': blocks})Test Kümesinin Genişlemesini Yönetme
Gerçek üretim hatalarına dayanarak test kümenizi sürekli büyütün. Bir kullanıcı kötü bir yanıt bildirdiğinde, bu soruyu (gerekirse anonimleştirerek) insan tarafından doğrulanmış beklenen yanıtıyla birlikte test kümesine ekleyin. Böylece değerlendirme paketiniz varsayımsal örnekler yerine gerçek kullanıcı ihtiyaçlarını yansıtır. Test kümesini yaşayan bir belge olarak ele alın ve güncelliğini yitirmiş örnekleri kaldırmak için üç ayda bir gözden geçirin.
def add_to_test_set(question: str, reference_answer: str, category: str,
source: str, test_set_path: str):
import json, uuid
with open(test_set_path, 'r') as f:
test_set = json.load(f)
test_set['cases'].append({
'id': f'user_report_{uuid.uuid4().hex[:8]}',
'category': category,
'question': question,
'reference': reference_answer,
'source': source, # 'user_report', 'regression', 'manual'
'added': '2026-06-21'
})
with open(test_set_path, 'w') as f:
json.dump(test_set, f, indent=2)Kalite Eğilimlerini Zaman İçinde Görselleştirme
Temel ölçümlerinizi zaman içinde gösteren basit bir kalite panosu oluşturun: ortalama doğruluk puanı, önbellek isabet oranı, p95 gecikmesi ve sorgu başına maliyet. Küçük örneklem boyutlarından kaynaklanan gürültüyü azaltmak için haftalık hareketli ortalama kullanın. Eğilim grafiği kalite sapmasını hemen görünür kılar — altı hafta boyunca kademeli %3'lük düşüş, tek tek çalıştırma raporlarında görünmezken zaman serisi grafiğinde açıkça görülür. Grafana veya basit bir Python matplotlib betiği bunun için iyi çalışır.
import matplotlib.pyplot as plt
import pandas as pd
def plot_quality_trend(eval_history: list):
df = pd.DataFrame(eval_history)
df['date'] = pd.to_datetime(df['evaluated_at'])
df = df.sort_values('date')
# 7-day rolling average
df['score_ma7'] = df['mean_correctness'].rolling(window=7).mean()
plt.figure(figsize=(12, 4))
plt.plot(df['date'], df['mean_correctness'], alpha=0.3, label='Daily')
plt.plot(df['date'], df['score_ma7'], label='7-day avg', linewidth=2)
plt.axhline(y=4.0, color='r', linestyle='--', label='Min threshold')
plt.legend()
plt.title('LLM Answer Quality Over Time')
plt.savefig('quality_trend.png')Kısa Kontrol
LLM uygulamaları için sürekli değerlendirme hatlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: sürekli değerlendirme hatları, gerilemeleri erken yakalamak için her PR'da ve günlük zamanlamayla otomatik kalite denetimleri çalıştırır; gerileme tespiti, mevcut puanları bir temel değerle karşılaştırır ve kalite düşerse dağıtımı engeller; gerçek hatalardan test kümesi genişletme ise değerlendirme paketinizin gerçek kullanıcı ihtiyaçlarına dayanmasını sağlar. Sırada aracı hatası türlerini sınıflandıracak ve kurtarma stratejileri tasarlayacağız.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Sürekli Değerlendirme Hattı Oluşturma” dersi ücretsiz mi?
Evet — “Sürekli Değerlendirme Hattı Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.
“Sürekli Değerlendirme Hattı Oluşturma” dersinde ne öğreneceğim?
LLM-as-judge değerlendirmesini CI/CD hattınıza entegre edin; böylece her istem veya model değişikliği, dağıtımdan önce bir gerileme testi paketine karşı otomatik olarak değerlendirilir. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Sürekli Değerlendirme Hattı Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- LLM-Hakem Deseni
- Noktasal ve İkili Değerlendirme
- Hakem Modellerini İnsanlara Göre Kalibre Etme
- Sürekli Değerlendirme Hattı Oluşturma