Savings Layer adalah bagian dari platform BiVelio
Uji publik · dapat direproduksi

Uji A/B kami, secara terbuka. Ukur kami.

Kami menerbitkan setiap jalannya uji: empat baterai pada dataset publik, 10 model, dan kedua lengan diukur dengan penghitung penggunaan milik penyedia sendiri. Setiap angka membawa n, interval, dan tanggalnya. Apa yang tidak menghemat juga ada di sini.

baterai
4
model diuji
10
model dengan pengukuran
10
laporan langsung
15
jalan uji terakhir
29 Sep 2026

Apa yang diukur, dan bagaimana

  • Dua lengan, permintaan yang sama. A langsung ke penyedia, tanpa lapisan; B melewati lapisan dengan konfigurasi bawaannya. Prompt yang sama, sampling yang sama, batas output yang sama.
  • Penyedia yang menghitung biaya. Setiap lengan dihargai berdasarkan usage yang dikembalikan API pada setiap panggilan, pada harga daftar. Penghematan adalah 1 − biaya(B) / biaya(A) dari jalan uji yang sama, bukan yang diklaim lapisan tentang dirinya sendiri.
  • Interval 95%. Dihitung oleh setiap harness (resampling seluruh keluarga pertanyaan, Wilson untuk tingkat penolakan). Interval yang melintasi nol berarti “tidak dapat dibedakan dari nol”, dan begitulah kami menyebutnya.
  • Paket yang Anda instal. Lengan B menjalankan sumber dari tag 0.4.31; dist/index.js-nya identik byte demi byte dengan tarball npm-nya (sha256 b52f99cacf9804ecd3153e56f26ec3adcdc2510d52a8446a369ecf914e0b5731).
  • Tanpa jalan pintas. Setiap harness mengawasi host yang dihubunginya dan membawa batas pengeluaran per model yang tertulis dalam kode. Model yang tidak dapat diukur dilaporkan sebagai “tidak diukur”, beserta alasannya.

Empat baterai, dataset publik, dipatok

BateraiApa yang diperiksaDatasetBerkas yang dipatokLisensi
GSM8KSoal cerita matematika dengan pengulangan dan parafrasa: berapa banyak yang dihemat cache dan apakah akurasi menurun.openai/grade-school-mathcommit 3101c7d5072418e28b9008a6636bde82a006892cgsm8k-test
sha256 3730d312f6e3440559ace48831e51066acaca737f6eabec99bccb9e4b3c39d14
gsm8k-train
sha256 17f347dc51477c50d4efb83959dbb7c56297aba886e5544ee2aaed3024813465
MIT
BFCLPanggilan tool: lapisan tidak boleh mengubah satu pun, dan seluruh katalog harus sampai.ShishirPatil/gorillacommit f7cf7359b7ac615a0b294831c5ba2bc95ee4a000dipatok pada commitApache-2.0
XSTestPenolakan: lapisan tidak boleh mengubah kapan model menolak, atau menyajikan penolakan dari cache.paul-rottger/exaggerated-safetycommit d7bb5bd738c1fcbc36edd83d5e7d1b71a3e2d84dxstest_prompts.csv
sha256 11783fb294ed017473ee53c207d71f2161c7672c8d0b037501e78387f801cb5a
CC-BY-4.0
MT-BenchObrolan dua giliran tanpa pengulangan: lapisan tidak boleh memperburuk biaya, latensi, atau kualitas.lm-sys/FastChatcommit 587d5cfa1609a43d192cedb8441cac3c17db105dquestion.jsonl
sha256 119565adbab82227089cefdb44c8d7e2cf04dc0a0ec233634c82e7d4e2a944f7
gpt-4.jsonl
sha256 f957a5bc977badb66885ec970e6cd08527845780313f0995764260e5777b9b3f
judge_prompts.jsonl
sha256 fd283293406d024f44c174b094ef48031d0687a4682fd3a56b29b138f80281b6
Apache-2.0

Penghematan terukur per model

GSM8K, dengan aliran permintaan di mana 30% adalah pengulangan eksak dan 20% adalah parafrasa. Ini baterai dengan trafik berulang: penghematan Anda bergantung pada seberapa banyak trafik Anda berulang. Tanpa pengulangan, lihat “Apa yang tidak menghemat”.

ModelnPenghematan terukur [IK]Dari cache eksakDalam panggilan (prefiks)Akurasi A → BVersi · tanggal
openai/gpt-4o-mini200 permintaan · 100 unik31,5% [25,7% – 36,7%]US$0,0124US$0,000695,0% → 96,1%Δ +1,1 pp [0,0, +2,8]0.4.31 · 28 Sep 2026
openai/gpt-5.4-mini176 permintaan · 88 unik31,7% [25,6% – 37,6%]US$0,0734US$0,000395,6% → 93,7%Δ -1,9 pp [-5,0, 0,0]0.4.31 · 28 Sep 2026
openai/gpt-5.522 permintaan · 11 unik33,4% [6,8% – 53,8%]US$0,0790-US$0,0023100,0% → 100,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
openai/gpt-5.6-sol32 permintaan · 16 unik29,2% [9,5% – 46,8%]US$0,0252-US$0,0003100,0% → 100,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
anthropic/claude-haiku-4-5116 permintaan · 58 unik32,2% [23,6% – 40,2%]US$0,0773US$0,000299,0% → 99,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
anthropic/claude-opus-5-532 permintaan · 16 unik77,2% [67,1% – 83,9%]US$0,0974US$0,1391100,0% → 100,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
anthropic/claude-sonnet-562 permintaan · 31 unik75,1% [69,3% – 79,6%]US$0,1054US$0,1313100,0% → 100,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
anthropic/claude-sonnet-5-562 permintaan · 31 unik77,5% [72,0% – 81,7%]US$0,0924US$0,1289100,0% → 100,0%Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 Sep 2026
google/gemini-3.1-pro-previewlapisan gagal: permintaan tidak melewati lapisan0.4.31 · 28 Sep 2026
google/gemini-3.8-flashlapisan gagal: permintaan tidak melewati lapisan0.4.31 · 28 Sep 2026

Dari mana penghematan berasal, posisi demi posisi: “dari cache eksak” adalah yang dibayar A untuk permintaan yang dilayani lapisan tanpa memanggil penyedia; “dalam panggilan” adalah selisih pada permintaan yang memang sampai ke penyedia, sebagian besar dari cache prefiks penyedia (ditambah sedikit variasi output). Keduanya berjumlah total penghematan.

Akurasi diukur pada pertanyaan dengan jawaban yang dipublikasikan; varian dengan angka yang diubah hanya berfungsi untuk memeriksa bahwa lapisan tidak pernah mengembalikan jawaban dari pertanyaan lain.

Jaminan, terhitung

Lapisan tidak pernah mengubah panggilan tool

0 panggilan yang diubah dalam 1.325 perbandingan BFCL, 6 model, sejak 0.4.31. Jika lapisan gagal (galat pada B yang tidak dialami A), itu tidak dihitung di sini: itu ada di bawah “Bug yang ditemukan uji ini”.

Tidak ada jawaban dari pertanyaan lain sejak 0.4.31

0 dari 198 varian (pertanyaan yang sama dengan angka lain, sehingga jawaban lain) disajikan dengan jawaban dari pertanyaan lain, di 8 model langsung dan setiap konfigurasi cache yang diukur.

Replay luring dari seluruh split uji GSM8K: 0 dalam 5.813 permintaan, di masing-masing dari 5 konfigurasi cache.

Tingkat penolakan yang sama, dengan dan tanpa lapisan

XSTest, 10 model diukur: tidak ada perbedaan A/B di bawah p = 0,05 (McNemar, prompt berpasangan). Lapisan menyampaikan teks dari 4.668 respons tanpa perubahan (0 diubah).

Tingkat penolakan per model, tanpa lapisan (A) dan dengan lapisan (B), pada prompt yang sama.
ModelPromptPenolakan, prompt aman (A → B)Penolakan, prompt tidak aman (A → B)Versi · tanggal
openai/gpt-4o-mini4505,2% → 5,2% (n = 250, p = 1,00)81,5% → 81,5% (n = 200, p = 1,00)0.4.31 · 28 Sep 2026
openai/gpt-5.4-mini44111,0% → 9,8% (n = 245, p = 0,63)87,2% → 86,7% (n = 196, p = 1,00)0.4.31 · 28 Sep 2026
openai/gpt-5.51206,3% → 4,7% (n = 64, p = 1,00)80,0% → 80,0% (n = 55, p = 1,00)0.4.31 · 29 Sep 2026
openai/gpt-5.6-sol1992,7% → 2,7% (n = 111, p = 1,00)75,6% → 76,7% (n = 86, p = 1,00)0.4.31 · 29 Sep 2026
anthropic/claude-haiku-4-54501,6% → 2,0% (n = 250, p = 1,00)42,5% → 42,5% (n = 200, p = 1,00)0.4.31 · 29 Sep 2026
anthropic/claude-opus-5-581—67,1% → 67,1% (n = 79, p = 1,00)0.4.31 · 29 Sep 2026
anthropic/claude-sonnet-52642,7% → 2,0% (n = 147, p = 1,00)68,4% → 71,8% (n = 117, p = 0,34)0.4.31 · 29 Sep 2026
anthropic/claude-sonnet-5-53111,5% → 0,0% (n = 135, p = 0,50)64,3% → 65,3% (n = 98, p = 1,00)0.4.31 · 29 Sep 2026
google/gemini-3.1-pro-preview580,0% → 0,0% (n = 32, p = 1,00)80,8% → 84,6% (n = 26, p = 1,00)0.4.31 · 29 Sep 2026
google/gemini-3.8-flash4500,4% → 0,4% (n = 249, p = 1,00)67,8% → 66,8% (n = 199, p = 0,73)0.4.31 · 29 Sep 2026

Apa yang tidak menghemat

Tanpa pengulangan, penghematan ≈ 0%. Kami tetap mempublikasikannya, karena itulah yang akan Anda lihat jika trafik Anda tidak berulang.

MT-Bench adalah obrolan dua giliran dengan lapisan baru untuk setiap pertanyaan: tidak ada yang bisa digunakan kembali oleh cache, dan prompt hampir tidak pernah mencapai minimum yang disyaratkan penyedia untuk meng-cache sebuah prefiks. Di BFCL setiap panggilan tool berbeda. Yang diukur kedua baterai ini adalah bahwa lapisan tidak memperburuk apa pun; selisih biaya yang tersisa adalah noise dari output model, bukan lapisan.

BateraiModelnPenghematan terukur [IK]PembacaanVersi · tanggal
BFCLopenai/gpt-4o-mini400 item0,1% [0,0% – 0,3%]tidak dapat dibedakan dari nol0.4.31 · 28 Sep 2026
BFCLopenai/gpt-5.4-mini400 item-0,2% [-1,0% – 0,5%]tidak dapat dibedakan dari nol0.4.31 · 28 Sep 2026
BFCLanthropic/claude-haiku-4-548 item0,1% [0,0% – 0,2%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
BFCLanthropic/claude-sonnet-548 item1,5% [-1,6% – 5,8%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
BFCLgoogle/gemini-3.1-pro-preview97 item4,8% [-6,6% – 15,6%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
BFCLgoogle/gemini-3.8-flash324 item-10,7% [-27,8% – 3,2%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
MT-Benchopenai/gpt-4o-mini80 pertanyaan3,3% [0,8% – 6,0%]penghematan · tidak dapat diatribusikan ke lapisan0.4.31 · 28 Sep 2026
MT-Benchopenai/gpt-5.4-mini80 pertanyaan-3,5% [-8,6% – 1,6%]tidak dapat dibedakan dari nol · tidak dapat diatribusikan ke lapisan0.4.31 · 28 Sep 2026
MT-Benchopenai/gpt-5.58 pertanyaan2,1% [-4,4% – 9,7%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
MT-Benchopenai/gpt-5.6-sol13 pertanyaan-0,4% [-21,2% – 13,5%]tidak dapat dibedakan dari nol · tidak dapat diatribusikan ke lapisan0.4.31 · 29 Sep 2026
MT-Benchanthropic/claude-haiku-4-580 pertanyaan-2,6% [-4,6% – -0,9%]biaya tambahan · tidak dapat diatribusikan ke lapisan0.4.31 · 28 Sep 2026
MT-Benchanthropic/claude-opus-5-518 pertanyaan1,1% [-2,0% – 4,9%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026
MT-Benchanthropic/claude-sonnet-523 pertanyaan1,7% [-8,9% – 12,7%]tidak dapat dibedakan dari nol0.4.31 · 28 Sep 2026
MT-Benchanthropic/claude-sonnet-5-537 pertanyaan-0,8% [-2,5% – 0,9%]tidak dapat dibedakan dari nol0.4.31 · 29 Sep 2026

Status per model dan baterai

Setiap sel menampilkan jalan uji pada versi lapisan tertinggi. Jika sebuah model tidak dapat diukur, kami menyebutkan alasannya alih-alih membiarkan kekosongan.

ModelGSM8KBFCLXSTestMT-Bench
openai/gpt-4o-minidiukur · n = 200
0.4.31 · 28 Sep 2026
diukur · n = 400
0.4.31 · 28 Sep 2026
diukur · n = 450
0.4.31 · 28 Sep 2026
diukur · n = 80
0.4.31 · 28 Sep 2026
openai/gpt-5.4-minidiukur · n = 176
0.4.31 · 28 Sep 2026
diukur · n = 400
0.4.31 · 28 Sep 2026
diukur · n = 441
0.4.31 · 28 Sep 2026
diukur · n = 80
0.4.31 · 28 Sep 2026
openai/gpt-5.5diukur · n = 22
0.4.31 · 28 Sep 2026
tidak diukur: batas pengeluaran habis
0.4.31 · 29 Sep 2026
diukur · n = 120
0.4.31 · 29 Sep 2026
diukur · n = 8
0.4.31 · 29 Sep 2026
openai/gpt-5.6-soldiukur · n = 32
0.4.31 · 28 Sep 2026
tidak diukur: penyedia menolak permintaan di kedua lengan
0.4.31 · 29 Sep 2026
diukur · n = 199
0.4.31 · 29 Sep 2026
diukur · n = 13
0.4.31 · 29 Sep 2026
anthropic/claude-haiku-4-5diukur · n = 116
0.4.31 · 28 Sep 2026
diukur · n = 48
0.4.31 · 29 Sep 2026
diukur · n = 450
0.4.31 · 29 Sep 2026
diukur · n = 80
0.4.31 · 28 Sep 2026
anthropic/claude-opus-5-5diukur · n = 32
0.4.31 · 28 Sep 2026
tidak diukur: batas pengeluaran habis
0.4.31 · 29 Sep 2026
diukur · n = 81
0.4.31 · 29 Sep 2026
diukur · n = 18
0.4.31 · 29 Sep 2026
anthropic/claude-sonnet-5diukur · n = 62
0.4.31 · 28 Sep 2026
diukur · n = 48
0.4.31 · 29 Sep 2026
diukur · n = 264
0.4.31 · 29 Sep 2026
diukur · n = 23
0.4.31 · 28 Sep 2026
anthropic/claude-sonnet-5-5diukur · n = 62
0.4.31 · 28 Sep 2026
tidak diukur: batas pengeluaran habis
0.4.31 · 29 Sep 2026
diukur · n = 311
0.4.31 · 29 Sep 2026
diukur · n = 37
0.4.31 · 29 Sep 2026
google/gemini-3.1-pro-previewlapisan gagal: permintaan tidak melewati lapisan
0.4.31 · 28 Sep 2026
diukur · n = 97
0.4.31 · 29 Sep 2026
diukur · n = 58
0.4.31 · 29 Sep 2026
tidak diukur: kuota penyedia habis
0.4.31 · 29 Sep 2026
google/gemini-3.8-flashlapisan gagal: permintaan tidak melewati lapisan
0.4.31 · 28 Sep 2026
diukur · n = 324
0.4.31 · 29 Sep 2026
diukur · n = 450
0.4.31 · 29 Sep 2026
lapisan gagal: permintaan tidak melewati lapisan
0.4.31 · 29 Sep 2026

Bug yang ditemukan uji ini

Uji ini bukan untuk terlihat bagus: ia ada untuk menemukan bug sebelum Anda menemukannya. Ia menemukan ini, beserta versi tempat bug muncul dan versi yang memperbaikinya.

  1. Cache semantik yang tidak dikalibrasi menyajikan jawaban dari pertanyaan lain 0.4.30 → 0.4.31

    Dengan cache semantik yang tidak dikalibrasi, varian dengan angka lain (“three baskets” versus “two baskets”) dapat menerima jawaban dari pertanyaan aslinya. Dihitung atas varian GSM8K.

    • Ditemukan di 0.4.30: 15 dari 111. gsm8k.json
    • Diperbaiki di 0.4.31 (#383).
    • Diverifikasi langsung pada 0.4.31: 0 dari 198.
  2. Lapisan memangkas katalog tool tanpa sinyal apa pun untuk melakukannya 0.4.30 → 0.4.31

    Dalam percakapan multi-giliran, lengan B mengirim lebih sedikit tool daripada lengan A meskipun tidak ada yang menunjukkan mana yang tidak diperlukan. Dihitung atas percakapan multi-giliran BFCL.

    • Ditemukan di 0.4.30: 20 dari 20. bfcl.json
    • Diperbaiki di 0.4.31 (#382).
    • Diverifikasi langsung pada 0.4.31: 0 dari 83.
  3. Beberapa penolakan yang ditulis sebagai teks di-cache 0.4.31 → 0.4.32

    Penolakan yang ditulis model sebagai teks (tanpa sinyal API) dapat di-cache, diulang, dan dikreditkan sebagai penghematan. Dihitung dalam prompt XSTest.

  4. Filter konten Gemini di-cache sebagai jawaban 0.4.31 → 0.4.32

    Gemini menandai filternya dengan alasan berhenti miliknya sendiri, yang tidak dikenali lapisan sebagai penolakan, sehingga bisa di-cache dan diulang. Dihitung dalam prompt XSTest.

    • Ditemukan di 0.4.31: 6 dari 508. xstest-0431-gama-alta.json
    • Diperbaiki di 0.4.32 (#402).
    • Menunggu diukur ulang secara langsung pada 0.4.32.
  5. Gemini tidak melewati lapisan 0.4.31 → 0.4.32

    Lapisan mengirim bidang khusus API OpenAI ke setiap endpoint yang kompatibel, dan Gemini menolaknya: setiap permintaan di lengan B gagal. Dihitung dalam permintaan GSM8K.

    • Ditemukan di 0.4.31: 504 dari 504. gsm8k-0431-gama-alta.json
    • Diperbaiki di 0.4.32 (#402).
    • Menunggu diukur ulang secara langsung pada 0.4.32.
  6. Dengan Gemini 3, giliran kedua dengan tool gagal 0.4.31 → 0.4.32

    Lapisan tidak mengembalikan thought signature yang disyaratkan Gemini 3 pada setiap panggilan tool, sehingga giliran berikutnya ditolak. Dihitung dalam kelanjutan multi-giliran BFCL.

    • Ditemukan di 0.4.31: 50 dari 50. bfcl-0431-gama-alta.json
    • Diperbaiki di 0.4.32 (#402).
    • Menunggu diukur ulang secara langsung pada 0.4.32.

Cara mereproduksinya

Kode uji ini belum publik; metodenya publik, dan cukup dalam lima langkah. Dengan kunci penyedia Anda sendiri, Anda dapat mengulanginya dan membandingkan angka demi angka dengan laporan kami.

  1. Dataset. Unduh setiap dataset publik pada commit di tabel di atas dan periksa sha256 setiap berkas sebelum digunakan. Jika tidak cocok, itu bukan dataset yang sama.
  2. Lapisan. Pasang @bivelio/savings-layer dari npm pada versi yang disebut laporan dan periksa sha256 dari dist/index.js: setiap laporan mencantumkannya.
  3. Dua lengan per prompt. A langsung ke penyedia; B mengirim prompt yang sama, ke model yang sama dan dengan batas keluaran yang sama, melalui lapisan dengan konfigurasi bawaannya. Sebagian prompt diulang atau diparafrasekan, seperti pada lalu lintas nyata, dan urutan A/B diacak.
  4. Biaya ditentukan penyedia. Jumlahkan tagihan setiap lengan menurut usage yang dikembalikan penyedia, dengan tarif resminya. Penghematan adalah 1 − biaya B / biaya A, beserta intervalnya.
  5. Kualitas, dalam proses yang sama. Nilai jawaban kedua lengan dengan cara yang sama (jawaban tepat di GSM8K, pemanggilan alat di BFCL, penolakan atau tidak di XSTest, juri di MT-Bench) dan bandingkan dengan laporan JSON dari baterai dan versi yang sama.

Laporan

Setiap proses meninggalkan laporan JSON berisi desain, keterbatasan, dan setiap panggilan yang diukur: usage, biaya per lengan, dan klasifikasi jawaban. Laporan disajikan dari situs ini.

Laporan disajikan persis seperti yang ditulis oleh uji, dengan satu pengecualian: data tentang lingkungan orang yang mengukur (jalur disk, alamat email) dihapus. Untuk XSTest tidak ada teks jawaban yang diterbitkan, hanya klasifikasinya.

Ukur kami sendiri

Pengukuran independen lebih berharga daripada milik kami. Kode uji ini belum publik: jika Anda ingin mengulang pengukuran, atau mengukur lapisan dengan harness Anda sendiri atau lalu lintas Anda, tulis kepada kami dan kami akan memberikan apa yang Anda perlukan.

Tulis kepada kami di support@bivelio.com

Kirim email