Savings Layer, BiVelio platformunun bir parçası
Herkese açık test · yeniden üretilebilir

A/B testimiz, açıkta. Bizi ölçün.

Her koşuyu yayınlıyoruz: herkese açık veri kümeleri üzerinde dört batarya, 10 model ve her iki kol da sağlayıcının kendi kullanım sayacıyla ölçülüyor. Her sayı kendi n değerini, aralığını ve tarihini taşır. Tasarruf sağlamayan da burada.

batarya
4
denenen model
10
ölçümü olan model
10
canlı rapor
15
son koşu
29 Eyl 2026

Ne ölçülüyor ve nasıl

  • İki kol, aynı istek. A, katman olmadan doğrudan sağlayıcıya gider; B, varsayılan yapılandırmasıyla katmandan geçer. Aynı prompt, aynı örnekleme, aynı çıktı sınırı.
  • Maliyeti sağlayıcı sayar. Her kol, API'nin her çağrıda döndürdüğü usage değeriyle, liste fiyatı üzerinden fiyatlandırılır. Tasarruf, aynı koşunun 1 − maliyet(B) / maliyet(A) değeridir, katmanın kendisi hakkında söyledikleri değil.
  • %95 aralıkları. Bunları her test düzeneği hesaplar (bütün soru ailelerinin yeniden örneklenmesi, ret oranları için Wilson). Sıfırı kesen bir aralık “sıfırdan ayırt edilemez” demektir ve bunu böyle söylüyoruz.
  • Kurduğunuz paket. B kolu, 0.4.31 etiketinin kaynağını çalıştırır; dist/index.js dosyası npm paketininkiyle bayt bayt aynıdır (sha256 b52f99cacf9804ecd3153e56f26ec3adcdc2510d52a8446a369ecf914e0b5731).
  • Kestirme yok. Her test düzeneği konuştuğu sunucuları izler ve kod içinde yazılı, model başına bir harcama sınırı taşır. Ölçülemeyen bir model, nedeniyle birlikte “ölçülmedi” olarak raporlanır.

Dört batarya, herkese açık veri kümeleri, sabitlenmiş

BataryaNeyi kontrol ediyorVeri kümesiSabitlenmiş dosyalarLisans
GSM8KTekrarlar ve başka sözcüklerle ifade edilmiş halleriyle matematik problemleri: önbelleğin ne kadar tasarruf sağladığı ve doğruluğun düşüp düşmediği.openai/grade-school-mathcommit 3101c7d5072418e28b9008a6636bde82a006892cgsm8k-test
sha256 3730d312f6e3440559ace48831e51066acaca737f6eabec99bccb9e4b3c39d14
gsm8k-train
sha256 17f347dc51477c50d4efb83959dbb7c56297aba886e5544ee2aaed3024813465
MIT
BFCLAraç çağrıları: katman bunlardan hiçbirini değiştirmemeli ve kataloğun tamamı ulaşmalıdır.ShishirPatil/gorillacommit f7cf7359b7ac615a0b294831c5ba2bc95ee4a000commit ile sabitlenmişApache-2.0
XSTestReddler: katman, modelin ne zaman reddettiğini değiştirmemeli, önbellekten bir ret sunmamalıdır.paul-rottger/exaggerated-safetycommit d7bb5bd738c1fcbc36edd83d5e7d1b71a3e2d84dxstest_prompts.csv
sha256 11783fb294ed017473ee53c207d71f2161c7672c8d0b037501e78387f801cb5a
CC-BY-4.0
MT-BenchTekrarsız iki turlu sohbet: katman maliyeti, gecikmeyi veya kaliteyi kötüleştirmemelidir.lm-sys/FastChatcommit 587d5cfa1609a43d192cedb8441cac3c17db105dquestion.jsonl
sha256 119565adbab82227089cefdb44c8d7e2cf04dc0a0ec233634c82e7d4e2a944f7
gpt-4.jsonl
sha256 f957a5bc977badb66885ec970e6cd08527845780313f0995764260e5777b9b3f
judge_prompts.jsonl
sha256 fd283293406d024f44c174b094ef48031d0687a4682fd3a56b29b138f80281b6
Apache-2.0

Model başına ölçülen tasarruf

GSM8K, isteklerin %30 kadarının tam tekrar, %20 kadarının başka sözcüklerle ifade edilmiş olduğu bir istek akışında. Bu, tekrarlayan trafiğe sahip batarya: sizin tasarrufunuz kendi trafiğinizin ne kadar tekrarlandığına bağlıdır. Tekrar yoksa “Tasarruf sağlamayan” bölümüne bakın.

ModelnÖlçülen tasarruf [GA]Tam önbellektenÇağrılarda (önek)Doğruluk A → BSürüm · tarih
openai/gpt-4o-mini200 istek · 100 benzersiz%31,5 [%25,7 – %36,7]$0,0124$0,0006%95,0 → %96,1Δ +1,1 pp [0,0, +2,8]0.4.31 · 28 Eyl 2026
openai/gpt-5.4-mini176 istek · 88 benzersiz%31,7 [%25,6 – %37,6]$0,0734$0,0003%95,6 → %93,7Δ -1,9 pp [-5,0, 0,0]0.4.31 · 28 Eyl 2026
openai/gpt-5.522 istek · 11 benzersiz%33,4 [%6,8 – %53,8]$0,0790-$0,0023%100,0 → %100,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
openai/gpt-5.6-sol32 istek · 16 benzersiz%29,2 [%9,5 – %46,8]$0,0252-$0,0003%100,0 → %100,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
anthropic/claude-haiku-4-5116 istek · 58 benzersiz%32,2 [%23,6 – %40,2]$0,0773$0,0002%99,0 → %99,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
anthropic/claude-opus-5-532 istek · 16 benzersiz%77,2 [%67,1 – %83,9]$0,0974$0,1391%100,0 → %100,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
anthropic/claude-sonnet-562 istek · 31 benzersiz%75,1 [%69,3 – %79,6]$0,1054$0,1313%100,0 → %100,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
anthropic/claude-sonnet-5-562 istek · 31 benzersiz%77,5 [%72,0 – %81,7]$0,0924$0,1289%100,0 → %100,0Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Eyl 2026
google/gemini-3.1-pro-previewkatman başarısız oldu: istekler katmandan geçmedi0.4.31 · 28 Eyl 2026
google/gemini-3.8-flashkatman başarısız oldu: istekler katmandan geçmedi0.4.31 · 28 Eyl 2026

Tasarrufun nereden geldiği, pozisyon pozisyon: “tam önbellekten” olan, katmanın sağlayıcıyı çağırmadan sunduğu isteklerde A'nın ödediği tutardır; “çağrılarda” olan ise, sağlayıcıya gerçekten ulaşanlardaki farktır, çoğunlukla sağlayıcının önek önbelleğinden (artı bir miktar çıktı değişkenliği). İkisi toplamda toplam tasarrufu oluşturur.

Doğruluk, yayınlanmış bir cevabı olan sorular üzerinden ölçülür; sayısı değiştirilmiş varyantlar yalnızca katmanın başka bir sorunun cevabını asla geri vermediğini doğrulamaya yarar.

Garantiler, sayılmış

Katman hiçbir zaman bir araç çağrısını değiştirmedi

1.325 BFCL karşılaştırmasında, 6 modelde, 0.4.31 tarihinden bu yana 0 değiştirilmiş çağrı. Katman başarısız olursa (B'de A'da olmayan bir hata varsa), bu burada sayılmaz: “Testin bulduğu hatalar” altındadır.

0.4.31 tarihinden bu yana başka bir sorudan cevap yok

198 varyanttan 0 tanesi (aynı soru, başka bir sayıyla, dolayısıyla başka bir cevapla) başka bir sorunun cevabıyla sunuldu; 8 canlı model ve ölçülen tüm önbellek yapılandırmaları genelinde.

GSM8K test bölünmesinin tamamının çevrimdışı tekrarı: 5 önbellek yapılandırmasının her birinde, 5.813 istekte 0.

Katmanla ve katmansız aynı ret oranı

XSTest, 10 model ölçüldü: p = 0,05 altında A/B farkı yok (McNemar, eşleştirilmiş promptlar). Katman, 4.668 yanıtın metnini değiştirmeden teslim etti (0 değiştirilmiş).

Aynı promptlar üzerinde, katman olmadan (A) ve katmanla (B), model başına ret oranı.
ModelPromptlarReddler, güvenli promptlar (A → B)Reddler, güvensiz promptlar (A → B)Sürüm · tarih
openai/gpt-4o-mini450%5,2 → %5,2 (n = 250, p = 1,00)%81,5 → %81,5 (n = 200, p = 1,00)0.4.31 · 28 Eyl 2026
openai/gpt-5.4-mini441%11,0 → %9,8 (n = 245, p = 0,63)%87,2 → %86,7 (n = 196, p = 1,00)0.4.31 · 28 Eyl 2026
openai/gpt-5.5120%6,3 → %4,7 (n = 64, p = 1,00)%80,0 → %80,0 (n = 55, p = 1,00)0.4.31 · 29 Eyl 2026
openai/gpt-5.6-sol199%2,7 → %2,7 (n = 111, p = 1,00)%75,6 → %76,7 (n = 86, p = 1,00)0.4.31 · 29 Eyl 2026
anthropic/claude-haiku-4-5450%1,6 → %2,0 (n = 250, p = 1,00)%42,5 → %42,5 (n = 200, p = 1,00)0.4.31 · 29 Eyl 2026
anthropic/claude-opus-5-581—%67,1 → %67,1 (n = 79, p = 1,00)0.4.31 · 29 Eyl 2026
anthropic/claude-sonnet-5264%2,7 → %2,0 (n = 147, p = 1,00)%68,4 → %71,8 (n = 117, p = 0,34)0.4.31 · 29 Eyl 2026
anthropic/claude-sonnet-5-5311%1,5 → %0,0 (n = 135, p = 0,50)%64,3 → %65,3 (n = 98, p = 1,00)0.4.31 · 29 Eyl 2026
google/gemini-3.1-pro-preview58%0,0 → %0,0 (n = 32, p = 1,00)%80,8 → %84,6 (n = 26, p = 1,00)0.4.31 · 29 Eyl 2026
google/gemini-3.8-flash450%0,4 → %0,4 (n = 249, p = 1,00)%67,8 → %66,8 (n = 199, p = 0,73)0.4.31 · 29 Eyl 2026

Tasarruf sağlamayan

Tekrar olmadan tasarruf ≈ %0 olur. Yine de yayınlıyoruz, çünkü trafiğiniz tekrarlanmıyorsa göreceğiniz şey budur.

MT-Bench, her soru için yepyeni bir katmanla iki turlu bir sohbettir: önbelleğin yeniden kullanabileceği hiçbir şey yoktur ve prompt neredeyse hiçbir zaman sağlayıcının bir öneki önbelleğe almak için gerektirdiği minimuma ulaşmaz. BFCL'de her araç çağrısı farklıdır. Bu iki bataryanın ölçtüğü şey, katmanın hiçbir şeyi kötüleştirmediğidir; geriye kalan maliyet farkı modelin çıktısındaki gürültüdür, katman değil.

BataryaModelnÖlçülen tasarruf [GA]YorumSürüm · tarih
BFCLopenai/gpt-4o-mini400 öğe%0,1 [%0,0 – %0,3]sıfırdan ayırt edilemez0.4.31 · 28 Eyl 2026
BFCLopenai/gpt-5.4-mini400 öğe-%0,2 [-%1,0 – %0,5]sıfırdan ayırt edilemez0.4.31 · 28 Eyl 2026
BFCLanthropic/claude-haiku-4-548 öğe%0,1 [%0,0 – %0,2]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
BFCLanthropic/claude-sonnet-548 öğe%1,5 [-%1,6 – %5,8]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
BFCLgoogle/gemini-3.1-pro-preview97 öğe%4,8 [-%6,6 – %15,6]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
BFCLgoogle/gemini-3.8-flash324 öğe-%10,7 [-%27,8 – %3,2]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
MT-Benchopenai/gpt-4o-mini80 soru%3,3 [%0,8 – %6,0]tasarruf · katmana atfedilemez0.4.31 · 28 Eyl 2026
MT-Benchopenai/gpt-5.4-mini80 soru-%3,5 [-%8,6 – %1,6]sıfırdan ayırt edilemez · katmana atfedilemez0.4.31 · 28 Eyl 2026
MT-Benchopenai/gpt-5.58 soru%2,1 [-%4,4 – %9,7]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
MT-Benchopenai/gpt-5.6-sol13 soru-%0,4 [-%21,2 – %13,5]sıfırdan ayırt edilemez · katmana atfedilemez0.4.31 · 29 Eyl 2026
MT-Benchanthropic/claude-haiku-4-580 soru-%2,6 [-%4,6 – -%0,9]ek maliyet · katmana atfedilemez0.4.31 · 28 Eyl 2026
MT-Benchanthropic/claude-opus-5-518 soru%1,1 [-%2,0 – %4,9]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026
MT-Benchanthropic/claude-sonnet-523 soru%1,7 [-%8,9 – %12,7]sıfırdan ayırt edilemez0.4.31 · 28 Eyl 2026
MT-Benchanthropic/claude-sonnet-5-537 soru-%0,8 [-%2,5 – %0,9]sıfırdan ayırt edilemez0.4.31 · 29 Eyl 2026

Model ve bataryaya göre durum

Her hücre, katmanın en yüksek sürümündeki koşuyu gösterir. Bir model ölçülemediyse, boşluk bırakmak yerine nedenini söylüyoruz.

ModelGSM8KBFCLXSTestMT-Bench
openai/gpt-4o-miniölçüldü · n = 200
0.4.31 · 28 Eyl 2026
ölçüldü · n = 400
0.4.31 · 28 Eyl 2026
ölçüldü · n = 450
0.4.31 · 28 Eyl 2026
ölçüldü · n = 80
0.4.31 · 28 Eyl 2026
openai/gpt-5.4-miniölçüldü · n = 176
0.4.31 · 28 Eyl 2026
ölçüldü · n = 400
0.4.31 · 28 Eyl 2026
ölçüldü · n = 441
0.4.31 · 28 Eyl 2026
ölçüldü · n = 80
0.4.31 · 28 Eyl 2026
openai/gpt-5.5ölçüldü · n = 22
0.4.31 · 28 Eyl 2026
ölçülmedi: harcama sınırı tükendi
0.4.31 · 29 Eyl 2026
ölçüldü · n = 120
0.4.31 · 29 Eyl 2026
ölçüldü · n = 8
0.4.31 · 29 Eyl 2026
openai/gpt-5.6-solölçüldü · n = 32
0.4.31 · 28 Eyl 2026
ölçülmedi: sağlayıcı her iki kolda da isteği reddetti
0.4.31 · 29 Eyl 2026
ölçüldü · n = 199
0.4.31 · 29 Eyl 2026
ölçüldü · n = 13
0.4.31 · 29 Eyl 2026
anthropic/claude-haiku-4-5ölçüldü · n = 116
0.4.31 · 28 Eyl 2026
ölçüldü · n = 48
0.4.31 · 29 Eyl 2026
ölçüldü · n = 450
0.4.31 · 29 Eyl 2026
ölçüldü · n = 80
0.4.31 · 28 Eyl 2026
anthropic/claude-opus-5-5ölçüldü · n = 32
0.4.31 · 28 Eyl 2026
ölçülmedi: harcama sınırı tükendi
0.4.31 · 29 Eyl 2026
ölçüldü · n = 81
0.4.31 · 29 Eyl 2026
ölçüldü · n = 18
0.4.31 · 29 Eyl 2026
anthropic/claude-sonnet-5ölçüldü · n = 62
0.4.31 · 28 Eyl 2026
ölçüldü · n = 48
0.4.31 · 29 Eyl 2026
ölçüldü · n = 264
0.4.31 · 29 Eyl 2026
ölçüldü · n = 23
0.4.31 · 28 Eyl 2026
anthropic/claude-sonnet-5-5ölçüldü · n = 62
0.4.31 · 28 Eyl 2026
ölçülmedi: harcama sınırı tükendi
0.4.31 · 29 Eyl 2026
ölçüldü · n = 311
0.4.31 · 29 Eyl 2026
ölçüldü · n = 37
0.4.31 · 29 Eyl 2026
google/gemini-3.1-pro-previewkatman başarısız oldu: istekler katmandan geçmedi
0.4.31 · 28 Eyl 2026
ölçüldü · n = 97
0.4.31 · 29 Eyl 2026
ölçüldü · n = 58
0.4.31 · 29 Eyl 2026
ölçülmedi: sağlayıcı kotası tükendi
0.4.31 · 29 Eyl 2026
google/gemini-3.8-flashkatman başarısız oldu: istekler katmandan geçmedi
0.4.31 · 28 Eyl 2026
ölçüldü · n = 324
0.4.31 · 29 Eyl 2026
ölçüldü · n = 450
0.4.31 · 29 Eyl 2026
katman başarısız oldu: istekler katmandan geçmedi
0.4.31 · 29 Eyl 2026

Testin bulduğu hatalar

Test iyi görünmek için değil, hataları siz bulmadan önce bulmak için var. Ortaya çıktıkları sürümle ve onları düzelten sürümle birlikte şunları buldu.

  1. Kalibre edilmemiş anlamsal önbellek, başka bir sorunun cevabını sundu 0.4.30 → 0.4.31

    Anlamsal önbellek kalibre edilmediğinde, başka bir sayıya sahip bir varyant (“three baskets”e karşı “two baskets”) orijinal sorunun cevabını alabiliyordu. GSM8K varyantları üzerinden sayıldı.

    • 0.4.30 sürümünde bulundu: 111 üzerinden 15. gsm8k.json
    • 0.4.31 sürümünde düzeltildi (#383).
    • 0.4.31 sürümünde canlı olarak doğrulandı: 198 üzerinden 0.
  2. Katman, bunu yapması için hiçbir sinyal olmadan araç kataloğunu kısalttı 0.4.30 → 0.4.31

    Çok turlu konuşmalarda, hiçbir şey hangi araçların gereksiz olduğunu göstermese de B kolu A kolundan daha az araç gönderdi. BFCL çok turlu konuşmaları üzerinden sayıldı.

    • 0.4.30 sürümünde bulundu: 20 üzerinden 20. bfcl.json
    • 0.4.31 sürümünde düzeltildi (#382).
    • 0.4.31 sürümünde canlı olarak doğrulandı: 83 üzerinden 0.
  3. Metin olarak yazılan bazı reddler önbelleğe alındı 0.4.31 → 0.4.32

    Modelin metin olarak yazdığı bir ret (API sinyali olmadan) önbelleğe alınabilir, tekrarlanabilir ve tasarruf olarak hesaba geçirilebilirdi. XSTest promptlarında sayıldı.

  4. Bir Gemini içerik filtresi cevap olarak önbelleğe alındı 0.4.31 → 0.4.32

    Gemini, filtresini kendi durdurma nedeniyle işaretler; katman bunu bir ret olarak tanımadığından, önbelleğe alıp tekrarlayabiliyordu. XSTest promptlarında sayıldı.

    • 0.4.31 sürümünde bulundu: 508 üzerinden 6. xstest-0431-gama-alta.json
    • 0.4.32 sürümünde düzeltildi (#402).
    • 0.4.32 sürümünde canlı olarak yeniden ölçülmeyi bekliyor.
  5. Gemini katmandan geçmiyordu 0.4.31 → 0.4.32

    Katman, OpenAI API'sine özgü bir alanı uyumlu her uç noktaya gönderiyordu ve Gemini bunu reddediyor: B kolundaki her istek başarısız oluyordu. GSM8K isteklerinde sayıldı.

    • 0.4.31 sürümünde bulundu: 504 üzerinden 504. gsm8k-0431-gama-alta.json
    • 0.4.32 sürümünde düzeltildi (#402).
    • 0.4.32 sürümünde canlı olarak yeniden ölçülmeyi bekliyor.
  6. Gemini 3 ile araçlı ikinci tur başarısız oluyordu 0.4.31 → 0.4.32

    Katman, Gemini 3'ün her araç çağrısında gerektirdiği düşünce imzasını geri döndürmüyordu, bu yüzden bir sonraki tur reddediliyordu. BFCL çok turlu devamları üzerinden sayıldı.

    • 0.4.31 sürümünde bulundu: 50 üzerinden 50. bfcl-0431-gama-alta.json
    • 0.4.32 sürümünde düzeltildi (#402).
    • 0.4.32 sürümünde canlı olarak yeniden ölçülmeyi bekliyor.

Nasıl yeniden üretilir

Testin kodu henüz herkese açık değil; yöntem açık ve beş adıma sığıyor. Kendi sağlayıcı anahtarlarınızla testi tekrarlayabilir ve raporlarımızla rakam rakam karşılaştırabilirsiniz.

  1. Veri kümesi. Her herkese açık veri kümesini yukarıdaki tablodaki commit'te indirin ve kullanmadan önce her dosyanın sha256 değerini kontrol edin. Tutmuyorsa aynı veri kümesi değildir.
  2. Katman. @bivelio/savings-layer paketini npm'den raporun belirttiği sürümde kurun ve dist/index.js dosyasının sha256 değerini kontrol edin: her rapor kendi değerini içerir.
  3. Prompt başına iki kol. A doğrudan sağlayıcıya gider; B aynı prompt'u, aynı modele ve aynı çıktı sınırıyla, varsayılan yapılandırmasıyla katman üzerinden gönderir. Gerçek trafikte olduğu gibi prompt'ların bir kısmı tekrarlanır ya da başka sözcüklerle yazılır ve A/B sırası kurayla belirlenir.
  4. Maliyeti sağlayıcı söyler. Sağlayıcının döndürdüğü usage değerine göre her kolun faturasını yayımlanan fiyattan toplayın. Tasarruf, aralığıyla birlikte 1 − maliyet B / maliyet A olur.
  5. Kalite, aynı çalıştırmada. İki kolun yanıtlarını aynı şekilde puanlayın (GSM8K'da kesin yanıt, BFCL'de araç çağrısı, XSTest'te ret olup olmadığı, MT-Bench'te bir hakem) ve aynı batarya ile sürümün JSON raporuyla karşılaştırın.

Raporlar

Her çalıştırma tasarımını, sınırlarını ve ölçülen her çağrıyı içeren bir JSON raporu bırakır: usage, kol başına maliyet ve yanıtın sınıflandırması. Raporlar bu web sitesinden sunulur.

Raporlar testin yazdığı gibi sunulur, tek bir istisnayla: ölçümü yapan kişinin ortamına ait veriler (disk yolları, e-posta adresleri) çıkarılır. XSTest için hiçbir yanıt metni yayımlanmaz, yalnızca sınıflandırması.

Bizi kendiniz ölçün

Bağımsız bir ölçüm bizimkinden daha değerlidir. Testin kodu henüz herkese açık değil: ölçümü tekrarlamak ya da katmanı kendi test düzeneğiniz veya kendi trafiğinizle ölçmek isterseniz bize yazın, bunun için gereken her şeyi verelim.

Bize şu adresten yazın: support@bivelio.com

E-posta gönder