OpenAI Evals API Framework'üne Giriş
9 Nisan 2025'te tanıtılan OpenAI Evals API, Büyük Dil Modellerinin (LLM'ler) sistematik olarak değerlendirilmesinde önemli bir ilerlemeyi temsil etmektedir. Değerlendirme yetenekleri bir süredir OpenAI panosu aracılığıyla mevcut olsa da, Evals API artık geliştiricilerin testleri programlı olarak tanımlamasına, değerlendirme çalıştırmalarını otomatikleştirmesine ve kendi iş akışları içinde istemler ve model uygulamaları üzerinde hızla yineleme yapmasına olanak tanıyor. Bu güçlü arayüz, model çıktılarının metodik olarak değerlendirilmesini destekleyerek, modelleri seçerken veya istem mühendisliği stratejilerini iyileştirirken kanıta dayalı karar vermeyi kolaylaştırır.
Bu eğitim, OpenAI Evals API'sini uygulamak ve kullanmak için kapsamlı bir teknik rehber sunmaktadır. Temel mimariyi, uygulama kalıplarını ve LLM uygulamalarınızın performansını objektif olarak ölçebilen sağlam değerlendirme hatları oluşturmaya yönelik gelişmiş teknikleri inceleyeceğiz.
OpenAI Evals API: Nasıl Çalışır?

OpenAI Evals API, iki temel soyutlama etrafında oluşturulmuş hiyerarşik bir yapıyı izler:
- Eval Yapılandırması - Aşağıdakileri içeren değerlendirme spesifikasyonları için bir kapsayıcı:
- Veri kaynağı şeması tanımı
- Test kriterleri yapılandırması
- Organizasyon ve alma için meta veriler
2. Eval Çalıştırmaları - Aşağıdakileri içeren bireysel değerlendirme yürütmeleri:
- Üst eval yapılandırmasına referans
- Değerlendirme için belirli veri örnekleri
- Model yanıtları ve değerlendirme sonuçları
Bu endişelerin ayrılması, değerlendirme standartlarında tutarlılığı korurken birden fazla test senaryosunda yeniden kullanılabilirliği sağlar.
Evals API Nesne Modeli
Evals API içindeki temel nesneler bu ilişkiyi izler:
- data_source_config (şema tanımı)
- testing_criteria (değerlendirme yöntemleri)
- metadata (açıklama, etiketler vb.)
- Çalıştırma 1 (belirli verilere karşı)
- Çalıştırma 2 (alternatif uygulama)
- ...
- Çalıştırma N (sürüm karşılaştırması)
OpenAI Evals API için Ortamınızı Kurma
OpenAI Evals API'sini uygularken, test ve geliştirme araçları seçimi üretkenliğinizi ve sonuç kalitenizi önemli ölçüde etkileyebilir.

Apidog, teknik olarak karmaşık Evals API'si ile çalışmak için ideal bir yardımcı olmasını sağlayan, Postman gibi geleneksel çözümlerden birkaç önemli açıdan daha iyi performans gösteren önde gelen bir API platformu olarak öne çıkıyor.
Değerlendirmeleri uygulamadan önce, geliştirme ortamınızı düzgün bir şekilde yapılandırmanız gerekir:
import openai
import os
import pydantic
import json
from typing import Dict, List, Any, Optional
# Uygun izinlerle API erişimini yapılandırın
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "your-api-key")
# Üretim ortamları için, daha güvenli bir yöntem kullanmayı düşünün
# örneğin bir .env dosyasından yüklenen ortam değişkenleri
OpenAI Python istemci kitaplığı, Evals API ile etkileşim kurmak için arayüz sağlar. Evals API desteğini içeren en son sürümü kullandığınızdan emin olun:
pip install --upgrade openai>=1.20.0 # Evals API desteğini içeren sürüm
OpenAI Evals API ile İlk Değerlendirmenizi Oluşturma
OpenAI Evals API'sini kullanarak eksiksiz bir değerlendirme iş akışı uygulayalım. Değerlendirme tasarımından sonuç analizine kadar tüm süreci gösteren bir metin özetleme görevi için bir değerlendirme sistemi oluşturacağız.
OpenAI Evals API için Veri Modellerini Tanımlama
İlk olarak, Pydantic modellerini kullanarak test verilerimizin yapısını tanımlamamız gerekir:
class ArticleSummaryData(pydantic.BaseModel):
"""Makale özetleme değerlendirmesi için veri yapısı."""
article: str
reference_summary: Optional[str] = None # Karşılaştırma için isteğe bağlı referans
class Config:
frozen = True # Tutarlı değerlendirme için değişmezliği sağlar
Bu model, değerlendirme verilerimiz için şemayı tanımlar ve bu şema, Evals API tarafından girdileri doğrulamak ve test kriterlerimiz için şablon değişkenleri sağlamak için kullanılacaktır.
Evals API Testi için Hedef İşlevi Uygulama
Ardından, değerlendirmek istediğimiz çıktıları üreten işlevi uygulayacağız:
def generate_article_summary(article_text: str) -> Dict[str, Any]:
"""
OpenAI'nin modellerini kullanarak bir makalenin özünü oluşturun.
Argümanlar:
article_text: Özetlenecek makale içeriği
Döndürür:
Özet ile tamamlama yanıt nesnesi
"""
summarization_prompt = """
Aşağıdaki makaleyi öz, bilgilendirici bir şekilde özetleyin.
Doğruluğu ve bağlamı korurken temel noktaları yakalayın.
Özeti 1-2 paragrafla sınırlayın.
Makale:
{{article}}
"""
response = openai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": summarization_prompt.replace("{{article}}", article_text)},
],
temperature=0.3, # Daha tutarlı özetler için daha düşük sıcaklık
max_tokens=300
)
return response.model_dump() # Seri hale getirilebilir sözlüğe dönüştürün
OpenAI Evals API için Veri Kaynağını Yapılandırma
Evals API, değerlendirme verilerinizin şemasını belirten tanımlı bir veri kaynağı yapılandırması gerektirir:
data_source_config = {
"type": "custom",
"item_schema": ArticleSummaryData.model_json_schema(),
"include_sample_schema": True, # Model çıktısı şemasını otomatik olarak içerir
}
print("Veri Kaynağı Şeması:")
print(json.dumps(data_source_config, indent=2))
Bu yapılandırma, Evals API'sine değerlendirme verilerinizde hangi alanların bekleneceğini ve bunların nasıl işleneceğini söyler.
OpenAI Evals API ile Test Kriterlerini Uygulama
Şimdi Evals API'nin model çıktılarını nasıl değerlendirmesi gerektiğini tanımlayacağız. Birden fazla kritere sahip kapsamlı bir değerlendirme oluşturacağız:
# 1. Model tabanlı yargı kullanarak doğruluk değerlendirmesi
accuracy_grader = {
"name": "Özet Doğruluğu Değerlendirmesi",
"type": "label_model",
"model": "gpt-4o",
"input": [
{
"role": "system",
"content": """
Makale özetlerinin doğruluğunu değerlendiren bir uzman değerlendiricisiniz.
Özetin, orijinal makalenin ana noktalarını doğru bir şekilde temsil edip etmediğini değerlendirin.
Özeti aşağıdakilerden biri olarak etiketleyin:
- "accurate": Tüm temel bilgileri içerir, hiçbir olgusal hata yoktur
- "partially_accurate": Çoğu temel bilgiyi içerir, küçük hatalar veya eksiklikler
- "inaccurate": Önemli hatalar, kritik bilgilerin eksikliği veya yanlış temsil
Değerlendirmeniz için ayrıntılı bir açıklama sağlayın.
"""
},
{
"role": "user",
"content": """
Orijinal Makale:
{{item.article}}
Değerlendirilecek Özet:
{{sample.choices[0].message.content}}
Değerlendirme:
"""
}
],
"passing_labels": ["accurate", "partially_accurate"],
"labels": ["accurate", "partially_accurate", "inaccurate"],
}
# 2. Özlülük değerlendirmesi
conciseness_grader = {
"name": "Özet Özlülük Değerlendirmesi",
"type": "label_model",
"model": "gpt-4o",
"input": [
{
"role": "system",
"content": """
Makale özetlerinin özlülüğünü değerlendiren bir uzman değerlendiricisiniz.
Özetin, gereksiz ayrıntılar olmadan bilgileri verimli bir şekilde ifade edip etmediğini değerlendirin.
Özeti aşağıdakilerden biri olarak etiketleyin:
- "concise": Mükemmel uzunluk, gereksiz bilgi yok
- "acceptable": Biraz uzun ancak genel olarak uygun
- "verbose": Aşırı uzun veya gereksiz ayrıntılar içeriyor
Değerlendirmeniz için ayrıntılı bir açıklama sağlayın.
"""
},
{
"role": "user",
"content": """
Değerlendirilecek Özet:
{{sample.choices[0].message.content}}
Değerlendirme:
"""
}
],
"passing_labels": ["concise", "acceptable"],
"labels": ["concise", "acceptable", "verbose"],
}
# 3. Referans özetleri mevcutsa, bir referans karşılaştırması ekleyin
reference_comparison_grader = {
"name": "Referans Karşılaştırma Değerlendirmesi",
"type": "label_model",
"model": "gpt-4o",
"input": [
{
"role": "system",
"content": """
Oluşturulan özeti referans özetle karşılaştırın.
Oluşturulan özetin, referansla aynı temel bilgileri ne kadar iyi yakaladığını değerlendirin.
Karşılaştırmayı aşağıdakilerden biri olarak etiketleyin:
- "excellent": Referansa eşdeğer veya daha iyi
- "good": Referanstan en önemli bilgileri yakalar
- "inadequate": Referansta bulunan önemli bilgiler eksik
Değerlendirmeniz için ayrıntılı bir açıklama sağlayın.
"""
},
{
"role": "user",
"content": """
Referans Özeti:
{{item.reference_summary}}
Oluşturulan Özet:
{{sample.choices[0].message.content}}
Değerlendirme:
"""
}
],
"passing_labels": ["excellent", "good"],
"labels": ["excellent", "good", "inadequate"],
"condition": "item.reference_summary != null" # Yalnızca referans mevcut olduğunda uygulayın
}
OpenAI Evals API ile Değerlendirme Yapılandırmasını Oluşturma
Veri şemamız ve test kriterlerimiz tanımlandığına göre, artık değerlendirme yapılandırmasını oluşturabiliriz:
eval_create_result = openai.evals.create(
name="Makale Özetleme Kalitesi Değerlendirmesi",
metadata={
"description": "Birden fazla boyutta makale özetleme kalitesinin kapsamlı değerlendirmesi",
"version": "1.0",
"created_by": "Your Organization",
"tags": ["summarization", "content-quality", "accuracy"]
},
data_source_config=data_source_config,
testing_criteria=[
accuracy_grader,
conciseness_grader,
reference_comparison_grader
],
)
eval_id = eval_create_result.id
print(f"ID'si ile değerlendirme oluşturuldu: {eval_id}")
print(f"Panoda görüntüle: {eval_create_result.dashboard_url}")
OpenAI Evals API ile Değerlendirme Çalıştırmalarını Yürütme
Değerlendirme Verilerini Hazırlama
Şimdi değerlendirmemiz için test verileri hazırlayacağız:
test_articles = [
{
"article": """
Avrupa Uzay Ajansı (ESA) bugün yeni Dünya gözlem uydusu Sentinel-6'nın başarılı bir şekilde konuşlandırıldığını duyurdu.
Bu uydu, iklim değişikliğinin etkileri hakkında çok önemli veriler sağlayarak, deniz seviyelerini benzeri görülmemiş bir doğrulukla izleyecek.
Sentinel-6, deniz seviyesi değişikliklerini milimetre hassasiyetine kadar ölçebilen gelişmiş radar altimetri teknolojisine sahiptir.
Bilim insanları, bu verilerin iklim modellerini ve kıyı planlama stratejilerini önemli ölçüde iyileştirmesini bekliyor.
Kaliforniya'daki Vandenberg Hava Üssü'nden fırlatılan uydu, ESA, NASA, NOAA ve diğer uluslararası ortaklar arasındaki bir işbirliği olan Copernicus programının bir parçasıdır.
""",
"reference_summary": """
ESA, gelişmiş radar altimetri kullanarak deniz seviyelerini milimetre hassasiyetinde izlemek üzere tasarlanan Sentinel-6 Dünya gözlem uydusunu başarıyla konuşlandırdı. Uluslararası Copernicus programının bir parçası olan bu görev, iklim değişikliği araştırmaları ve kıyı planlaması için çok önemli veriler sağlayacaktır.
"""
},
# Ek test makaleleri buraya eklenecektir
]
# Değerlendirme için test verilerimizi işleyin
run_data = []
for item in test_articles:
# İşlevimizi kullanarak özet oluşturun
article_data = ArticleSummaryData(**item)
result = generate_article_summary(article_data.article)
# Çalıştırma verisi girişini hazırlayın
run_data.append({
"item": article_data.model_dump(),
"sample": result
})
Bir Değerlendirme Çalıştırması Oluşturma ve Yürütme
Verilerimiz hazırlandıktan sonra, bir değerlendirme çalıştırması oluşturabiliriz:
eval_run_result = openai.evals.runs.create(
eval_id=eval_id,
name="baseline-summarization-run",
metadata={
"model": "gpt-4o",
"temperature": 0.3,
"max_tokens": 300
},
data_source={
"type": "jsonl",
"source": {
"type": "file_content",
"content": run_data,
}
},
)
print(f"Değerlendirme çalıştırması oluşturuldu: {eval_run_result.id}")
print(f"Ayrıntılı sonuçları görüntüle: {eval_run_result.report_url}")
Evals API'den Değerlendirme Sonuçlarını Alma ve Analiz Etme
Bir değerlendirme çalıştırması tamamlandıktan sonra, ayrıntılı sonuçları alabilirsiniz:
def analyze_run_results(run_id: str) -> Dict[str, Any]:
"""
Bir değerlendirme çalıştırmasından sonuçları alın ve analiz edin.
Argümanlar:
run_id: Değerlendirme çalıştırmasının kimliği
Döndürür:
Analiz edilmiş sonuçları içeren sözlük
"""
# Çalıştırma ayrıntılarını alın
run_details = openai.evals.runs.retrieve(run_id)
# Sonuçları çıkarın
results = {}
# Genel geçiş oranını hesaplayın
if run_details.results and "pass_rate" in run_details.results:
results["overall_pass_rate"] = run_details.results["pass_rate"]
# Kriterlere özgü metrikleri çıkarın
if run_details.criteria_results:
results["criteria_performance"] = {}
for criterion, data in run_details.criteria_results.items():
results["criteria_performance"][criterion] = {
"pass_rate": data.get("pass_rate", 0),
"sample_count": data.get("total_count", 0)
}
# Daha fazla analiz için hataları çıkarın
if run_details.raw_results:
results["failure_analysis"] = [
{
"item": item.get("item", {}),
"result": item.get("result", {}),
"criteria_results": item.get("criteria_results", {})
}
for item in run_details.raw_results
if not item.get("passed", True)
]
return results
# Çalıştırmamızı analiz edin
results_analysis = analyze_run_results(eval_run_result.id)
print(json.dumps(results_analysis, indent=2))
Gelişmiş OpenAI Evals API Teknikleri
Evals API ile A/B Testi Uygulama
Evals API, farklı uygulamaları karşılaştırmada mükemmeldir. İşte iki model yapılandırması arasında bir A/B testi nasıl kurulur:
def generate_summary_alternative_model(article_text: str) -> Dict[str, Any]:
"""Farklı bir model yapılandırması kullanan alternatif uygulama."""
response = openai.chat.completions.create(
model="gpt-4o-mini", # Farklı bir model kullanma
messages=[
{"role": "system", "content": "Bu makaleyi öz bir şekilde özetleyin."},
{"role": "user", "content": article_text},
],
temperature=0.7, # Karşılaştırma için daha yüksek sıcaklık
max_tokens=250
)
return response.model_dump()
# Alternatif modelle test verilerimizi işleyin
alternative_run_data = []
for item in test_articles:
article_data = ArticleSummaryData(**item)
result = generate_summary_alternative_model(article_data.article)
alternative_run_data.append({
"item": article_data.model_dump(),
"sample": result
})
# Alternatif değerlendirme çalıştırmasını oluşturun
alternative_eval_run = openai.evals.runs.create(
eval_id=eval_id,
name="alternative-model-run",
metadata={
"model": "gpt-4o-mini",
"temperature": 0.7,
"max_tokens": 250
},
data_source={
"type": "jsonl",
"source": {
"type": "file_content",
"content": alternative_run_data,
}
},
)
# Sonuçları programlı olarak karşılaştırın
def compare_evaluation_runs(run_id_1: str, run_id_2: str) -> Dict[str, Any]:
"""
İki değerlendirme çalıştırmasından sonuçları karşılaştırın.
Argümanlar:
run_id_1: İlk değerlendirme çalıştırmasının kimliği
run_id_2: İkinci değerlendirme çalıştırmasının kimliği
Döndürür:
Karşılaştırmalı analiz içeren sözlük
"""
run_1_results = analyze_run_results(run_id_1)
run_2_results = analyze_run_results(run_id_2)
comparison = {
"overall_comparison": {
"run_1_pass_rate": run_1_results.get("overall_pass_rate", 0),
"run_2_pass_rate": run_2_results.get("overall_pass_rate", 0),
"difference": run_1_results.get("overall_pass_rate", 0) - run_2_results.get("overall_pass_rate", 0)
},
"criteria_comparison": {}
}
# Her bir kriteri karşılaştırın
all_criteria = set(run_1_results.get("criteria_performance", {}).keys()) | set(run_2_results.get("criteria_performance", {}).keys())
for criterion in all_criteria:
run_1_criterion = run_1_results.get("criteria_performance", {}).get(criterion, {})
run_2_criterion = run_2_results.get("criteria_performance", {}).get(criterion, {})
comparison["criteria_comparison"][criterion] = {
"run_1_pass_rate": run_1_criterion.get("pass_rate", 0),
"run_2_pass_rate": run_2_criterion.get("pass_rate", 0),
"difference": run_1_criterion.get("pass_rate", 0) - run_2_criterion.get("pass_rate", 0)
}
return comparison
# İki çalıştırmamızı karşılaştırın
comparison_results = compare_evaluation_runs(eval_run_result.id, alternative_eval_run.id)
print(json.dumps(comparison_results, indent=2))
OpenAI Evals API ile Gerilemeleri Algılama
Evals API'sinin en değerli uygulamalarından biri, istemleri güncellerken gerileme tespitidir:
def create_regression_detection_pipeline(eval_id: str, baseline_run_id: str) -> None:
"""
Yeni bir istemi bir temel çalıştırmayla karşılaştıran bir gerileme algılama hattı oluşturun.
Argümanlar:
eval_id: Değerlendirme yapılandırmasının kimliği
baseline_run_id: Karşılaştırılacak temel çalıştırmanın kimliği
"""
def test_prompt_for_regression(new_prompt: str, threshold: float = 0.95) -> Dict[str, Any]:
"""
Yeni bir istemin temel çizgiye göre gerilemeye neden olup olmadığını test edin.
Argümanlar:
new_prompt: Test edilecek yeni istem
threshold: Kabul edilebilir minimum performans oranı (yeni/temel)
Döndürür:
Gerileme analizi içeren sözlük
"""
# Yeni istemi kullanarak işlev tanımlayın
def generate_summary_new_prompt(article_text: str) -> Dict[str, Any]:
response = openai.chat.completions.create(
model="gpt-4o", # Temel çizgiyle aynı model
messages=[
{"role": "system", "content": new_prompt},
{"role": "user", "content": article_text},
],
temperature=0.3,
max_tokens=300
)
return response.model_dump()
# Test verilerini yeni istemle işleyin
new_prompt_run_data = []
for item in test_articles:
article_data = ArticleSummaryData(**item)
result = generate_summary_new_prompt(article_data.article)
new_prompt_run_data.append({
"item": article_data.model_dump(),
"sample": result
})
# Yeni istem için değerlendirme çalıştırması oluşturun
new_prompt_run = openai.evals.runs.create(
eval_id=eval_id,
name=f"regression-test-{int(time.time())}",
metadata={
"prompt": new_prompt,
"test_type": "regression"
},
data_source={
"type": "jsonl",
"source": {
"type": "file_content",
"content": new_prompt_run_data,
}
},
)
# Tamamlanmasını bekleyin (üretimde, eşzamansız işlemeyi uygulamak isteyebilirsiniz)
# Bu basitleştirilmiş bir uygulamadır
time.sleep(10) # Değerlendirmenin tamamlanmasını bekleyin
# Temel çizgiye karşı karşılaştırın
comparison = compare_evaluation_runs(baseline_run_id, new_prompt_run.id)
# Bir gerileme olup olmadığını belirleyin
baseline_pass_rate = comparison["overall_comparison"]["run_1_pass_rate"]
new_pass_rate = comparison["overall_comparison"]["run_2_pass_rate"]
regression_detected = (new_pass_rate / baseline_pass_rate if baseline_pass_rate > 0 else 0) < threshold
return {
"regression_detected": regression_detected,
"baseline_pass_rate": baseline_pass_rate,
"new_pass_rate": new_pass_rate,
"performance_ratio": new_pass_rate / baseline_pass_rate if baseline_pass_rate > 0 else 0,
"threshold": threshold,
"detailed_comparison": comparison,
"report_url": new_prompt_run.report_url
}
return test_prompt_for_regression
# Bir gerileme algılama hattı oluşturun
regression_detector = create_regression_detection_pipeline(eval_id, eval_run_result.id)
# Potansiyel olarak sorunlu bir istemi test edin
problematic_prompt = """
Bu makaleyi aşırı ayrıntılı bir şekilde özetleyin ve her küçük noktayı eklediğinizden emin olun.
Özet kapsamlı olmalı ve hiçbir şeyi dışarıda bırakmamalıdır.
"""
regression_analysis = regression_detector(problematic_prompt)
print(json.dumps(regression_analysis, indent=2))
OpenAI Evals API'sinde Özel Metriklerle Çalışma
Özelleşmiş değerlendirme ihtiyaçları için, özel metrikler uygulayabilirsiniz:
# Özel bir sayısal puan değerlendirmesi örneği
numeric_score_grader = {
"name": "Özet Kalite Puanı",
"type": "score_model",
"model": "gpt-4o",
"input": [
{
"role": "system",
"content": """
Makale özetlerinin kalitesini değerlendiren bir uzman değerlendiricisiniz.
Özetin genel kalitesini 1,0 ile 10,0 arasında bir ölçekte değerlendirin; burada:
- 1,0-3,9: Zayıf kalite, önemli sorunlar
- 4,0-6,9: İyileştirme için yer olan kabul edilebilir kalite
- 7,0-8,9: İyi kalite, beklentileri karşılıyor
- 9,0-10,0: Mükemmel kalite, beklentileri aşıyor
Belirli bir sayısal puan ve ayrıntılı bir gerekçe sağlayın.
"""
},
{
"role": "user",
"content": """
Orijinal Makale:
{{item.article}}
Değerlendirilecek Özet:
{{sample.choices[0].message.content}}
Puan (1,0-10,0):
"""
}
],
"passing_threshold": 7.0, # Geçmek için minimum puan
"min_score": 1.0,
"max_score": 10.0
}
# Bir eval oluştururken bunu test kriterlerinize ekleyin
OpenAI Evals API'sini Geliştirme İş Akışlarına Entegre Etme
Evals API ile CI/CD Entegrasyonu
Evals API'sini CI/CD hattınıza entegre etmek, tutarlı kalite sağlar:
def ci_cd_evaluation_workflow(
prompt_file_path: str,
baseline_eval_id: str,
baseline_run_id: str,
threshold: float = 0.95
) -> bool:
"""
Dağıtımdan önce model istemlerini değerlendirmek için CI/CD entegrasyonu.
Argümanlar:
prompt_file_path: Güncellenen istem dosyasının yolu
baseline_eval_id: Temel değerlendirme yapılandırmasının kimliği
baseline_run_id: Karşılaştırılacak temel çalıştırmanın kimliği
threshold: Kabul edilebilir minimum performans oranı
Döndürür:
Yeni istemin değerlendirmeyi geçip geçmediğini gösteren Boole değeri
"""
# Yeni istemi sürüm kontrolünden yükleyin
with open(prompt_file_path, 'r') as f:
new_prompt = f.read()
# Temel çizgiyi kullanarak gerileme dedektörü oluşturun
regression_detector = create_regression_detection_pipeline(baseline_eval_id, baseline_run_id)
# Yeni istemi test edin
regression_analysis = regression_detector(new_prompt)
# İsteminin dağıtıma uygun olup olmadığını belirleyin
is_approved = not regression_analysis["regression_detected"]
# Değerlendirme sonuçlarını günlüğe kaydedin
print(f"{prompt_file_path} için Değerlendirme Sonuçları")
print(f"Temel Geçiş Oranı: {regression_analysis['baseline_pass_rate']:.2f}")
print(f"Yeni İstem Geçiş Oranı: {regression_analysis['new_pass_rate']:.2f}")
print(f"Performans Oranı: {regression_analysis['performance_ratio']:.2f}")
print(f"Dağıtım Kararı: {'ONAYLANDI' if is_approved else 'REDDEDİLDİ'}")
print(f"Ayrıntılı Rapor: {regression_analysis['report_url']}")
return is_approved
OpenAI Evals API ile Zamanlanmış İzleme
Düzenli değerlendirme, model kaymasını veya bozulmasını tespit etmeye yardımcı olur:
def schedule_periodic_evaluation(
eval_id: str,
baseline_run_id: str,
interval_hours: int = 24
) -> None:
"""
Performans değişikliklerini izlemek için periyodik değerlendirmeler planlayın.
Argümanlar:
eval_id: Değerlendirme yapılandırmasının kimliği
baseline_run_id: Karşılaştırılacak temel çalıştırmanın kimliği
interval_hours: Değerlendirmelerin sıklığı (saat cinsinden)
"""
# Bir üretim sisteminde, Airflow, Celery veya bulut tabanlı çözümler gibi bir görev zamanlayıcı kullanırsınız. Bu basitleştirilmiş bir örnektir.
def perform_periodic_evaluation():
while True:
try:
# Mevcut üretim yapılandırmasını eval'e karşı çalıştırın
print(f"Zamanlanmış değerlendirme {datetime.now()} tarihinde çalışıyor")
# Burada, gerileme testine benzer şekilde değerlendirme mantığınızı uygulayın
# Bir sonraki zamanlanmış çalıştırmaya kadar uyuyun
time.sleep(interval_