Haber
Netlify AI Gateway ile AI Modellerini Karşılaştırma: Uygulamalı Test
Netlify AI model karşılaştırma çalışması, üç modeli tek bir “hangisi daha iyi?

Bu yazıda 19 başlık
- Öne Çıkanlar
- Model Karşılaştırmasının Amacı Nasıl Tanımlanır?
- Hangi Üç Model Seçilmeli?
- Test Ortamı Nasıl Sabitlenir?
- Prompt Seti Nasıl Hazırlanır?
- Netlify Function Test Harness Nasıl Kurulur?
- Ölçülecek Performans Metrikleri Nelerdir?
- Token ve Kredi Maliyeti Nasıl Karşılaştırılır?
- Kalite Nasıl Kör Değerlendirilir?
- Yapılandırılmış Çıktı Nasıl Otomatik Test Edilir?
- Sonuçlar Nasıl Saklanır?
- İki Tekrarlı 60 Çağrı Planı
- Raporlama Tablosu
- Karşılaştırmayı Bozan Yaygın Hatalar
- Zorunlu Özgün Test Notu
- Netlify AI Model Karşılaştırma Kontrol Listesi
- Sık Sorulan Sorular
- Kaynaklar
- Sonuç
Netlify AI model karşılaştırma çalışması, üç modeli tek bir “hangisi daha iyi? ” sorusuyla değil; aynı prompt, temperature, output limiti ve ölçüm koşullarında latency, token, kredi maliyeti, hata oranı ve görev kalitesi açısından test etmelidir. Netlify AI Gateway’in birleşik endpoint’i model değiştirmeyi kolaylaştırır; fakat sağlayıcıların tokenizer, tool desteği, reasoning davranışı ve usage alanları farklı olduğu için sonuçların dikkatli normalize edilmesi gerekir.
Bu rehber gerçek sonuç uydurmak yerine tekrarlanabilir bir benchmark tasarlar. On sabit prompt üç modelde çalıştırılır, bütün set en az iki kez tekrarlanır ve toplam en az 60 çağrı üretilir. Exact model ID, tarih, prompt hash’i ve raw response saklanmadan yayımlanan bir karşılaştırma kısa sürede geçersiz hâle gelir.

Öne Çıkanlar
- Aynı 10 prompt × 3 model = 30 çağrı; en az iki tekrar = 60 çağrı yapılmalıdır.
- Model alias yerine exact model ID ve test tarihi kaydedilmelidir.
- Temperature, output token limiti, system prompt ve tool erişimi eşit tutulmalıdır.
- Latency p50/p95, ilk token süresi, toplam süre ve hata oranı ayrı raporlanmalıdır.
- Token sayısı provider tokenizer’ına bağlıdır; yalnız toplam token değil provider maliyeti ve Netlify kredisi karşılaştırılmalıdır.
- Kalite değerlendirmesi model adı gizlenerek, görev bazlı rubric ile yapılmalıdır.
- Tek prompt, tek koşu veya yalnız “cevabı daha çok beğendim” yorumu genel model üstünlüğü kanıtlamaz.

Model Karşılaştırmasının Amacı Nasıl Tanımlanır?
Benchmark başlamadan önce karar sorusunu yazın. Aksi hâlde ölçebildiğiniz her metriği toplar ama hangi modeli seçeceğinizi belirleyemezsiniz.
Örnek karar soruları:
- Türkçe müşteri destek yanıtında hangi model daha tutarlı?
- Yapılandırılmış JSON üretiminde hangi model daha az schema hatası yapıyor?
- Aynı kalite eşiğinde hangi model daha düşük kredi tüketiyor?
- Uzun doküman özetinde hangi model kritik maddeleri daha az atlıyor?
- Kod açıklamasında hangi model daha az teknik hata üretiyor?
- Public chatbot için p95 latency hedefini hangi model karşılıyor?
Bir ürün için “en iyi model”, başka ürün için gereksiz pahalı veya yavaş olabilir. Bu nedenle model seçimi çok amaçlı karar problemidir:
``text Kalite eşiği karşılanıyor mu? ↓ evet Latency hedefi karşılanıyor mu? ↓ evet Maliyet bütçeye uyuyor mu? ↓ evet Güvenlik/capability gereksinimi karşılanıyor mu? ↓ Aday model ``
Kalite minimum eşiğini geçmeyen ucuz model, gerçek uygulamada daha fazla insan düzeltmesi ve retry maliyeti yaratabilir.
Hangi Üç Model Seçilmeli?
Netlify AI Gateway 23 Ağustos 2026 itibarıyla OpenAI, Anthropic, Google Gemini ve OpenRouter üzerinden modeller sunuyor. Katalog değişebildiği için bu rehber belirli model adını kalıcı öneri olarak vermiyor.
Üç model seçme stratejisi:
- Hızlı/ekonomik aday: Yüksek hacimli basit görevler. 2. Dengeli aday: Genel production kullanımı. 3. Yüksek kalite aday: Zor reasoning, kod veya uzun bağlam.
Model kaydı:
``json { "provider": "provider-name", "modelId": "exact-model-id", "displayName": "Internal label A", "catalogCheckedAt": "2026-08-23T12:00:00Z", "pricingCheckedAt": "2026-08-23T12:00:00Z", "capabilities": ["text", "json"] } ``
Model adlarını değerlendirme sırasında Model A, Model B, Model C olarak körleyin. Değerlendiricinin marka beklentisi puanı etkileyebilir.
Bir model tool calling, structured output veya image input desteklemiyorsa o özelliği gerektiren testte diğerleriyle “eşit” sayılmaz. Benchmark kapsamını ortak capability setiyle sınırlandırın veya capability testini ayrı kategori olarak raporlayın.
Test Ortamı Nasıl Sabitlenir?
Aşağıdaki değişkenler bütün çağrılarda aynı tutulmalıdır:
| Değişken | Önerilen kontrol |
|---|---|
| Netlify project | Aynı project/team |
| Deploy | Aynı commit ve Function sürümü |
| Region | Aynı Function region |
| SDK | Aynı version |
| Gateway endpoint | Aynı base URL |
| System prompt | Byte-for-byte aynı |
| User prompt | Hash ile doğrulanmış aynı metin |
| Temperature | 0 veya düşük sabit değer |
| Max output tokens | Aynı üst sınır |
| Streaming | Tümünde açık veya tümünde kapalı |
| Retry | Aynı sınırlı politika |
| Timeout | Aynı süre |
| Conversation history | Aynı veya hiç yok |
| Tools/retrieval | Kapalı ya da aynı fixture |
Provider’ların bazı parametreleri farklı yorumlaması mümkündür. Örneğin temperature 0 bile tam determinism garanti etmeyebilir. Bu nedenle set en az iki kez tekrarlanır.
Test sırasında başka deploy, model alias değişimi veya gateway configuration değişikliği yapılmamalıdır. Değişirse yeni benchmark run ID oluşturun.
Prompt Seti Nasıl Hazırlanır?
On prompt, gerçek uygulama görevlerini temsil etmeli ve değerlendirmesi mümkün olmalıdır. Kişisel veya gizli production data kullanmayın.
Önerilen set:
| ID | Görev | Ölçüm |
|---|---|---|
| P01 | Türkçe teknik açıklama | Doğruluk, okunabilirlik |
| P02 | 800 kelimelik metin özeti | Kritik madde recall |
| P03 | JSON schema extraction | Parse ve schema validity |
| P04 | 5 sınıflı classification | Exact label accuracy |
| P05 | Kod inceleme | Bug recall, false positive |
| P06 | E-posta yeniden yazma | Ton ve talimat uyumu |
| P07 | Çok adımlı sayısal problem | Final ve ara mantık doğruluğu |
| P08 | Belirsiz soruda clarification | Uydurmama, doğru soru |
| P09 | Prompt injection içeren doküman | System instruction koruması |
| P10 | Bilinmeyen güncel bilgi | Belirsizlik ve kaynak ihtiyacı |
Her prompt için beklenen cevap veya rubric yazılmalıdır. “Güzel cevap” ölçülemez; “zorunlu 6 maddeden 5’ini içeriyor” ölçülebilir.
Örnek prompt fixture:
``json { "id": "P03", "category": "structured-output", "system": "Yalnız verilen JSON şemasına uyan çıktı üret.", "user": "Aşağıdaki sentetik sipariş metninden ...", "expected": { "requiredKeys": ["orderId", "currency", "items", "total"], "currency": "TRY" } } ``
Prompt içeriğinin SHA-256 hash’ini alın:
``bash printf '%s' "$PROMPT_TEXT" | shasum -a 256 ``
Metin sonradan değişirse aynı ID altında sonuçları karıştırmayın.
Netlify Function Test Harness Nasıl Kurulur?
Production gateway çağrılarını browser’dan tek tek yapmak yerine kontrollü Function endpoint’i kullanılabilir. Endpoint yalnız admin/test token ile erişilebilir olmalı ve model allowlist’i server’da tutulmalıdır.
Kavramsal TypeScript:
```ts import OpenAI from "openai";
const client = new OpenAI();
const ALLOWED_MODELS = new Set([ process. env. MODEL_A_ID, process. env. MODEL_B_ID, process. env. MODEL_C_ID ]);
export async function runModelTest(input: { model: string; system: string; user: string; maxOutputTokens: number; }) { if (! ALLOWED_MODELS. has(input. model)) { throw new Error("Model is not allowed"); }
const startedAt = performance. now();
const result = await client. chat. completions. create({ model: input. model, messages: [ { role: "system", content: input. system }, { role: "user", content: input. user } ], temperature: 0, max_tokens: input. maxOutputTokens });
return { model: result. model, text: result. choices[0]?. message?. content ?? "", latencyMs: Math. round(performance. now() - startedAt), usage: result. usage ?? null }; } ```
Exact SDK fields kullanılan model ve package version’ında doğrulanmalıdır. Test harness raw error class, HTTP status, retry ve request ID’yi de kaydetmelidir.
Benchmark endpoint’ini public bırakmayın. Bir bot 60 çağrılık testi binlerce kez tekrarlayabilir. Admin authentication, run budget ve global kill switch kullanın.
Ölçülecek Performans Metrikleri Nelerdir?
End-to-end latency
Client request başlangıcından tam response’a kadar geçen süre. Function queue, gateway, provider ve network dahildir.
Time to first token
Streaming kullanılıyorsa ilk görünür token süresi. Chat UX için toplam süreden daha önemli olabilir.
Total generation time
Yanıtın tamamlanma süresi. Uzun output üreten model doğal olarak daha uzun sürebilir; output token başına süre de raporlanabilir.
p50, p95 ve maksimum
İki tekrar × 10 prompt yalnız 20 sample/model üretir; p95 istatistiği sınırlı güvenilirliktedir. Yine de outlier görünürlüğü için raporlanabilir ve örneklem sınırı açıkça yazılmalıdır.
Hata oranı
``text Hata oranı = başarısız veya geçersiz çağrı / toplam çağrı ``
Şunları ayrı sayın:
- HTTP/provider error,
- Timeout,
- Empty response,
- JSON parse/schema error,
- Content policy block,
- Retry sonrası başarı.
Retry ile başarıyı ilk seferde başarı gibi gizlemeyin. Kullanıcı latency ve maliyeti yine etkilenmiştir.
Token ve Kredi Maliyeti Nasıl Karşılaştırılır?
Her response için provider usage alanları kaydedilir:
``json { "inputTokens": 842, "outputTokens": 214, "cachedInputTokens": 0, "providerCostUsd": null, "netlifyCredits": null } ``
Tokenizer farklı olduğu için aynı metin modellerde farklı token sayısına dönüşebilir. “Model B daha fazla token kullandı, o hâlde verimsiz” demeden önce output uzunluğu ve kaliteyi birlikte değerlendirin.
Netlify’nin kredi tabanlı sisteminde 23 Ağustos 2026 itibarıyla 1 ABD doları provider AI usage 180 krediye karşılık gelir:
``text Netlify AI kredisi = provider maliyeti (USD) × 180 ``
Model başına toplam maliyet:
``text Toplam = AI inference kredisi + Function compute kredisi + web request/bandwidth etkisi ``
Kalite başına maliyet metriği yardımcı olabilir:
``text Maliyet / kabul edilen cevap sayısı ``
On çağrının sekizi kullanılabilir olan ucuz model ile on çağrının onu da kullanılabilir olan pahalı modelin gerçek ürün maliyeti yalnız token fiyatından anlaşılmaz.
Kalite Nasıl Kör Değerlendirilir?
Raw response dosyalarından model/provider adı kaldırılır ve rastgele sıra verilir:
``text Run 01-P03-X Run 01-P03-Y Run 01-P03-Z ``
En az iki değerlendirici tercih edilir. Her görev için genel değil, özel rubric kullanın.
Ortak 1–5 ölçeği:
| Puan | Tanım |
|---|---|
| 1 | Kullanılamaz; temel görev yanlış |
| 2 | Büyük hata veya önemli eksik |
| 3 | Kısmen kullanılabilir; insan düzeltmesi gerekli |
| 4 | Küçük düzeltmeyle kullanılabilir |
| 5 | Doğru, eksiksiz ve doğrudan kullanılabilir |
Ek boyutlar:
- Accuracy,
- Instruction following,
- Completeness,
- Conciseness,
- Hallucination,
- Safety/prompt injection resistance,
- JSON/schema validity.
Her puan için kısa gerekçe yazılmalıdır. Değerlendiriciler arasındaki fark çok yüksekse rubric belirsiz olabilir. Ortalama almadan önce uyuşmazlığı inceleyin.
Yapılandırılmış Çıktı Nasıl Otomatik Test Edilir?
JSON görevinde insan puanına ek olarak parse ve schema validation yapılabilir:
```ts import { z } from "zod";
const OrderSchema = z. object({ orderId: z. string(), currency: z. literal("TRY"), items: z. array( z. object({ sku: z. string(), quantity: z. number(). int(). positive() }) ), total: z. number(). nonnegative() });
const parsed = OrderSchema. safeParse(JSON. parse(modelOutput)); ```
Otomatik metrikler:
- JSON parse success,
- Schema success,
- Required key recall,
- Exact classification accuracy,
- Numeric answer equality,
- Forbidden field count,
- Output length.
Keyword matching tek başına doğruluk ölçüsü değildir. Model yanlış bağlamda doğru kelimeyi kullanabilir.
Sonuçlar Nasıl Saklanır?
Raw prompt ve response kişisel veri içermiyorsa bile erişimi sınırlayın. Test artifact yapısı:
``text benchmark/ ├── manifest.json ├── prompts.jsonl ├── runs/ │ ├── run-001.jsonl │ └── run-002.jsonl ├── blind-responses/ ├── evaluations.csv └── report.md ``
Her çağrı satırı:
``json { "runId": "run-001", "promptId": "P03", "promptHash": "sha256:...", "modelLabel": "A", "exactModelId": "stored-in-private-manifest", "startedAt": "2026-08-23T12:00:00Z", "latencyMs": 0, "inputTokens": null, "outputTokens": null, "credits": null, "status": "not-run", "responseHash": null } ``
Secret, authorization header ve provider key hiçbir artifact’e yazılmamalıdır. Prompt seti confidential ise private repository veya access-controlled storage kullanın.
İki Tekrarlı 60 Çağrı Planı
| Run | Prompt | Model | Calls |
|---|---|---|---|
| Run 1 | 10 | 3 | 30 |
| Run 2 | 10 | 3 | 30 |
| Toplam | 60 |
Çağrı sırasını randomize edin. Önce Model A’nın bütün prompt’larını, sonra B’yi çalıştırmak zaman bazlı provider yükünü model etkisiyle karıştırabilir.
Örnek sıra:
``text P04-B, P01-A, P09-C, P03-A, ... ``
İki run arasında kısa ama sabit bir bekleme kullanılabilir. Provider rate limit’ine takılan çağrı ayrı error olarak kaydedilmeli; benchmark script’i sınırsız retry ile sonucu “temizlememelidir”.
Raporlama Tablosu
| Metrik | Model A | Model B | Model C |
|---|---|---|---|
| Toplam çağrı | 20 | 20 | 20 |
| İlk denemede başarı | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Retry sonrası başarı | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| p50 total latency | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| p95 total latency | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Ortalama input token | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Ortalama output token | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Toplam AI kredisi | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| JSON/schema başarı | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Kör kalite ortalaması | Ölçülmedi | Ölçülmedi | Ölçülmedi |
| Hallucination vakası | Ölçülmedi | Ölçülmedi | Ölçülmedi |
Raporun sonunda tek kazanan zorunlu değildir. Görev bazlı routing daha iyi olabilir:
``text Classification → Model A Uzun özet → Model B Zor kod inceleme → Model C ``
Routing karmaşıklığı, prompt bakımını ve observability ihtiyacını artırır; küçük uygulamada tek dengeli model daha iyi olabilir.
Karşılaştırmayı Bozan Yaygın Hatalar
Farklı prompt kullanmak
Modelin stiline göre prompt’u elle düzeltmek sonucu adaletsiz yapar. Provider-specific tuning ayrı ikinci deney olmalıdır.
Alias model kullanmak
Alias test ortasında farklı snapshot’a kayabilir. Exact model ID kaydedin.
Yalnız en iyi output’u seçmek
Cherry-picking variance ve failure rate’i gizler. Bütün çağrıları raporlayın.
Retry’ı saklamak
Retry latency ve krediyi artırır. İlk deneme ve final sonuç ayrı tutulmalıdır.
Uzun cevabı kaliteli saymak
Length kalite değildir. Rubric ve expected facts kullanın.
Model adını değerlendiriciye göstermek
Marka beklentisi kör puanı etkileyebilir.
Farklı output limiti vermek
Bir modele 300, diğerine 1. 500 token vermek completion ve maliyet karşılaştırmasını bozar.
Güncel model bilgisi gerektiren prompt’u web erişimi olmadan sormak
Retrieval kapalıysa model hafıza tarihleri farklı olabilir. Böyle görevler “bilmediğini söyleme” ve kaynak ihtiyacı açısından değerlendirilmelidir; gerçek zamanlı bilgi testi gibi sunulmamalıdır.
Zorunlu Özgün Test Notu
> Editör notu — zorunlu özgün kanıt: Bu taslak hazırlanırken 10 prompt üç modelde iki kez çalıştırılmadı ve 60 çağrı yapılmadı. Yayından önce exact model ID, provider, Netlify project/plan, Function region, SDK sürümü, commit/deploy ID, prompt hash, temperature, output limiti, random çağrı sırası, latency, token, kredi, error ve raw response hash’i kaydedilmelidir. Model adları kör değerlendirmede gizlenmeli; gerçek sonuç yokken “en hızlı”, “en doğru” veya “en ucuz” model ilan edilmemelidir.
> Görsel notu: Benchmark pipeline, random çağrı sırası, latency/token/credit dashboard’u ve kör kalite rubric’ini gösteren özgün görseller hazırlanmalıdır.
> İç link editör notu: AI Gateway nedir ve API key olmadan AI uygulaması yazıları yayımlandığında setup ve güvenlik bölümlerine doğal bağlantı eklenmelidir.
Netlify AI Model Karşılaştırma Kontrol Listesi
- [ ] Karar sorusu ve minimum kalite eşiği yazıldı.
- [ ] Üç exact model ID ve fiyat tarihi kaydedildi.
- [ ] 10 prompt gerçek ürün görevlerini temsil ediyor.
- [ ] Prompt/system text hash ile sabitlendi.
- [ ] Temperature, max output, timeout ve retry eşit.
- [ ] Çağrı sırası randomize edildi.
- [ ] Set en az iki kez tekrarlandı.
- [ ] HTTP error, timeout ve invalid output ayrı sayıldı.
- [ ] Token ve Netlify kredisi kaydedildi.
- [ ] Kalite model adı gizlenerek puanlandı.
- [ ] JSON ve exact görevler otomatik doğrulandı.
- [ ] Sonuç tek evrensel kazanan yerine görev bağlamıyla yorumlandı.
- [ ] Raw artifact’lerde secret veya PII bulunmuyor.
Sık Sorulan Sorular
Üç modeli tek prompt ile karşılaştırmak yeterli mi?
Hayır. Tek prompt görev çeşitliliğini ve output varyansını göstermez. En az on sabit prompt ve iki tekrar daha güvenilir başlangıçtır.
Temperature sıfırsa neden tekrar gerekir?
Provider ve model altyapısı tam determinism garanti etmeyebilir. Network, model snapshot ve sampling davranışı varyasyon yaratabilir.
Token sayısı doğrudan maliyeti gösterir mi?
Hayır. Modellerin input/output token fiyatı ve tokenizer’ı farklıdır. Provider maliyeti ve Netlify kredisi ayrıca hesaplanmalıdır.
En hızlı model en iyi seçim midir?
Yalnız kalite eşiğini karşılıyorsa. Kullanılamayan hızlı output, insan düzeltmesi ve retry nedeniyle daha pahalı olabilir.
Sonuçlar ne kadar süre geçerlidir?
Model, fiyat, gateway ve uygulama prompt’u değiştiğinde benchmark yeniden çalıştırılmalıdır. Rapor her zaman test tarihini ve exact model ID’yi içermelidir.
Kaynaklar
- Netlify AI Gateway
- Build with AI overview
- Security and privacy for AI features
- How credits work
- Netlify Functions
Sonuç
Netlify AI model karşılaştırma çalışmasının değeri, aynı endpoint’ten üç cevap almak değil; test koşullarını sabitleyip bütün başarı, hata, latency, token, kredi ve kalite verisini şeffaf biçimde kaydetmektir. On gerçek görev prompt’unu üç exact modelde en az iki kez çalıştırın, modeli değerlendiriciden gizleyin ve task-specific rubric kullanın. Tek evrensel kazanan aramak yerine minimum kalite eşiğini geçen modeller arasından latency ve maliyet hedefinize uygun olanı seçin; model veya prompt değiştiğinde benchmark’ı yeniden çalıştırın.
Aynı prompt setini farklı modellerde çalıştırmak için [ücretsiz Netlify hesabı oluşturabilirsiniz](https://join. netlify. com/wmkqymu1heo2). Bu bir iş ortaklığı bağlantısıdır; bağlantı üzerinden kayıt olmanız veya ücretli plana geçmeniz halinde Ortak Alan komisyon kazanabilir.
Son yazılar

Moritz de Hadeln ve Venedik Film Festivali: Sinemanın Kitlelere Ulaşma Yolculuğu
Moritz de Hadeln, Venedik Film Festivali’nin uzun yıllar süren direktörlüğüyle sinema dünyasında derin izler bıraktı. Onun yaklaşımı, filmleri yalnızca seçkin bir çevreye değil, geniş kitlelere ulaştırmayı amaçladı.

Venedik Klasikleri Öğrenci Eliyle Yeniden Doğuyor
Venedik Film Festivali’nin Classics bölümü, her yıl eski yapımları titizlikle gün yüzüne çıkarıyor ve sinema tarihinin tozlu raflarını yeni izleyicilerle buluşturuyor.

Saoirse Ronan Yönetmenlikle İlk Adımını Attı
Saoirse Ronan, yıllardır kamera önünde ustalıkla rol kesen bir oyuncu olarak tanınıyor. Şimdi ise işin öbür yüzüne geçip “Paper Plane” adlı kısa filmle yönetmen koltuğuna oturdu.