Savings Layer forma part de la plataforma BiVelio
Banc públic · reproduïble

El nostre banc A/B, obert. Mesura'ns.

Publiquem cada execució: quatre bateries amb conjunts de dades públics, 10 models, i els dos braços mesurats amb el comptador d'ús del mateix proveïdor. Cada xifra porta la seva n, el seu interval i la seva data. El que no estalvia també hi és.

bateries
4
models provats
10
models amb alguna mesura
10
informes en directe
15
última execució
29 de set. 2026

Què es mesura i com

  • Dos braços, la mateixa petició. A va directament al proveïdor, sense la capa; B passa per la capa amb la seva configuració per defecte. Mateix prompt, mateix mostreig i mateix límit de sortida.
  • El cost el compta el proveïdor. Cada braç es valora amb l<code>usage</code> que retorna lAPI a cada crida, al preu de llista. L'estalvi és 1 − cost(B) / cost(A) de la mateixa execució, no el que la capa diu de si mateixa.
  • Intervals al 95 %. Els calcula cada arnès (remostreig per famílies de preguntes, Wilson en les taxes de negativa). Un interval que travessa el zero és un «indistingible de zero», i així ho diem.
  • El paquet, el que s'instal·la. El braç B executa la font de l'etiqueta 0.4.31; el seu dist/index.js és idèntic byte a byte al del tarball d'npm (sha256 b52f99cacf9804ecd3153e56f26ec3adcdc2510d52a8446a369ecf914e0b5731).
  • Sense dreceres. Cada arnès vigila els hosts amb què parla i porta un límit de despesa per model escrit al codi. Un model que no s'ha pogut mesurar surt com a «no mesurat», amb el motiu.

Quatre bateries, conjunts de dades públics, fixats

BateriaQuè comprovaConjunt de dadesFitxers fixatsLlicència
GSM8KProblemes matemàtics amb repeticions i paràfrasis: quant estalvia la memòria cau i si es perd exactitud.openai/grade-school-mathcommit 3101c7d5072418e28b9008a6636bde82a006892cgsm8k-test
sha256 3730d312f6e3440559ace48831e51066acaca737f6eabec99bccb9e4b3c39d14
gsm8k-train
sha256 17f347dc51477c50d4efb83959dbb7c56297aba886e5544ee2aaed3024813465
MIT
BFCLCrides a eines: la capa no ha de canviar-ne cap, i el catàleg sencer ha d'arribar.ShishirPatil/gorillacommit f7cf7359b7ac615a0b294831c5ba2bc95ee4a000fixat per commitApache-2.0
XSTestNegatives: la capa no ha de canviar quan el model es nega, ni servir una negativa de la memòria cau.paul-rottger/exaggerated-safetycommit d7bb5bd738c1fcbc36edd83d5e7d1b71a3e2d84dxstest_prompts.csv
sha256 11783fb294ed017473ee53c207d71f2161c7672c8d0b037501e78387f801cb5a
CC-BY-4.0
MT-BenchXat de dos torns sense repeticions: la capa no ha d'empitjorar el cost, la latència ni la qualitat.lm-sys/FastChatcommit 587d5cfa1609a43d192cedb8441cac3c17db105dquestion.jsonl
sha256 119565adbab82227089cefdb44c8d7e2cf04dc0a0ec233634c82e7d4e2a944f7
gpt-4.jsonl
sha256 f957a5bc977badb66885ec970e6cd08527845780313f0995764260e5777b9b3f
judge_prompts.jsonl
sha256 fd283293406d024f44c174b094ef48031d0687a4682fd3a56b29b138f80281b6
Apache-2.0

Estalvi mesurat per model

GSM8K, amb un flux de peticions en què un 30 % són repeticions exactes i un 20 % paràfrasis. És la bateria amb trànsit repetit: el teu estalvi depèn de quant es repeteixi el teu. Sense repeticions, mira «El que no estalvia».

ModelnEstalvi mesurat [IC]De la memòria cau exactaA les crides (prefix)Exactitud A → BVersió · data
openai/gpt-4o-mini200 peticions · 100 úniques31,5 % [25,7 % – 36,7 %]0,0124 USD0,0006 USD95,0 % → 96,1 %Δ +1,1 pp [0,0, +2,8]0.4.31 · 28 de set. 2026
openai/gpt-5.4-mini176 peticions · 88 úniques31,7 % [25,6 % – 37,6 %]0,0734 USD0,0003 USD95,6 % → 93,7 %Δ -1,9 pp [-5,0, 0,0]0.4.31 · 28 de set. 2026
openai/gpt-5.522 peticions · 11 úniques33,4 % [6,8 % – 53,8 %]0,0790 USD-0,0023 USD100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
openai/gpt-5.6-sol32 peticions · 16 úniques29,2 % [9,5 % – 46,8 %]0,0252 USD-0,0003 USD100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
anthropic/claude-haiku-4-5116 peticions · 58 úniques32,2 % [23,6 % – 40,2 %]0,0773 USD0,0002 USD99,0 % → 99,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
anthropic/claude-opus-5-532 peticions · 16 úniques77,2 % [67,1 % – 83,9 %]0,0974 USD0,1391 USD100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
anthropic/claude-sonnet-562 peticions · 31 úniques75,1 % [69,3 % – 79,6 %]0,1054 USD0,1313 USD100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
anthropic/claude-sonnet-5-562 peticions · 31 úniques77,5 % [72,0 % – 81,7 %]0,0924 USD0,1289 USD100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28 de set. 2026
google/gemini-3.1-pro-previewla capa ha fallat: les peticions no han passat per la capa0.4.31 · 28 de set. 2026
google/gemini-3.8-flashla capa ha fallat: les peticions no han passat per la capa0.4.31 · 28 de set. 2026

Origen de l'estalvi, posició a posició: «de la memòria cau exacta» és el que A va pagar en les peticions que la capa va servir sense trucar al proveïdor; «a les crides» és la diferència en les que sí que hi van arribar, sobretot memòria cau de prefix del proveïdor (més una mica de variació de la sortida). Les dues sumen l'estalvi total.

L'exactitud es mesura sobre les preguntes amb resposta publicada; les variants amb una xifra canviada només serveixen per comprovar que la capa no lliura la resposta d'una altra pregunta.

Garanties, comptades

La capa mai no ha canviat una crida a eines

0 crides alterades en 1.325 comparacions de BFCL, 6 models, des de 0.4.31. Si la capa falla (un error a B que A no tenia), no compta aquí: és a «Errors que el banc ha trobat».

Cap resposta d'una altra pregunta des de 0.4.31

0 de 198 variants (la mateixa pregunta amb un altre número, i per tant una altra resposta) servides amb la resposta d'una altra pregunta, en 8 models en directe i en totes les configuracions de memòria cau mesurades.

Rèplica fora de línia de tot el split de test de GSM8K: 0 en 5.813 peticions, en cadascuna de les 5 configuracions de memòria cau.

La mateixa taxa de negatives, amb i sense la capa

XSTest, 10 models mesurats: cap diferència A/B per sota de p = 0,05 (McNemar, prompts aparellats). La capa ha lliurat sense alterar el text de 4.668 respostes (0 alterades).

Taxa de negativa per model, sense la capa (A) i amb ella (B), sobre els mateixos prompts.
ModelPromptsNegatives, prompts segurs (A → B)Negatives, prompts insegurs (A → B)Versió · data
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 de set. 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 de set. 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 de set. 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 de set. 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 de set. 2026
anthropic/claude-opus-5-581—67,1 % → 67,1 % (n = 79, p = 1,00)0.4.31 · 29 de set. 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 de set. 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 de set. 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 de set. 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 de set. 2026

El que no estalvia

Sense repeticions, l'estalvi és ≈ 0 %. El publiquem igualment, perquè és el que veuràs si el teu trànsit no es repeteix.

MT-Bench és xat de dos torns amb una capa nova per pregunta: no hi ha res que la memòria cau pugui reutilitzar, i el prompt gairebé mai arriba al mínim que el proveïdor exigeix per fer memòria cau d'un prefix. A BFCL cada crida a eines és diferent. El que mesuren aquestes dues bateries és que la capa no empitjori res; la diferència de cost que queda és soroll de la sortida del model, no la capa.

BateriaModelnEstalvi mesurat [IC]LecturaVersió · data
BFCLopenai/gpt-4o-mini400 ítems0,1 % [0,0 % – 0,3 %]indistingible de zero0.4.31 · 28 de set. 2026
BFCLopenai/gpt-5.4-mini400 ítems-0,2 % [-1,0 % – 0,5 %]indistingible de zero0.4.31 · 28 de set. 2026
BFCLanthropic/claude-haiku-4-548 ítems0,1 % [0,0 % – 0,2 %]indistingible de zero0.4.31 · 29 de set. 2026
BFCLanthropic/claude-sonnet-548 ítems1,5 % [-1,6 % – 5,8 %]indistingible de zero0.4.31 · 29 de set. 2026
BFCLgoogle/gemini-3.1-pro-preview97 ítems4,8 % [-6,6 % – 15,6 %]indistingible de zero0.4.31 · 29 de set. 2026
BFCLgoogle/gemini-3.8-flash324 ítems-10,7 % [-27,8 % – 3,2 %]indistingible de zero0.4.31 · 29 de set. 2026
MT-Benchopenai/gpt-4o-mini80 preguntes3,3 % [0,8 % – 6,0 %]estalvi · no atribuïble a la capa0.4.31 · 28 de set. 2026
MT-Benchopenai/gpt-5.4-mini80 preguntes-3,5 % [-8,6 % – 1,6 %]indistingible de zero · no atribuïble a la capa0.4.31 · 28 de set. 2026
MT-Benchopenai/gpt-5.58 preguntes2,1 % [-4,4 % – 9,7 %]indistingible de zero0.4.31 · 29 de set. 2026
MT-Benchopenai/gpt-5.6-sol13 preguntes-0,4 % [-21,2 % – 13,5 %]indistingible de zero · no atribuïble a la capa0.4.31 · 29 de set. 2026
MT-Benchanthropic/claude-haiku-4-580 preguntes-2,6 % [-4,6 % – -0,9 %]sobrecost · no atribuïble a la capa0.4.31 · 28 de set. 2026
MT-Benchanthropic/claude-opus-5-518 preguntes1,1 % [-2,0 % – 4,9 %]indistingible de zero0.4.31 · 29 de set. 2026
MT-Benchanthropic/claude-sonnet-523 preguntes1,7 % [-8,9 % – 12,7 %]indistingible de zero0.4.31 · 28 de set. 2026
MT-Benchanthropic/claude-sonnet-5-537 preguntes-0,8 % [-2,5 % – 0,9 %]indistingible de zero0.4.31 · 29 de set. 2026

Estat per model i bateria

Cada cel·la mostra l'execució de la versió més alta de la capa. Si un model no s'ha pogut mesurar, es diu per què, en lloc de deixar el buit.

ModelGSM8KBFCLXSTestMT-Bench
openai/gpt-4o-minimesurat · n = 200
0.4.31 · 28 de set. 2026
mesurat · n = 400
0.4.31 · 28 de set. 2026
mesurat · n = 450
0.4.31 · 28 de set. 2026
mesurat · n = 80
0.4.31 · 28 de set. 2026
openai/gpt-5.4-minimesurat · n = 176
0.4.31 · 28 de set. 2026
mesurat · n = 400
0.4.31 · 28 de set. 2026
mesurat · n = 441
0.4.31 · 28 de set. 2026
mesurat · n = 80
0.4.31 · 28 de set. 2026
openai/gpt-5.5mesurat · n = 22
0.4.31 · 28 de set. 2026
no mesurat: límit de despesa exhaurit
0.4.31 · 29 de set. 2026
mesurat · n = 120
0.4.31 · 29 de set. 2026
mesurat · n = 8
0.4.31 · 29 de set. 2026
openai/gpt-5.6-solmesurat · n = 32
0.4.31 · 28 de set. 2026
no mesurat: el proveïdor ha rebutjat la petició en els dos braços
0.4.31 · 29 de set. 2026
mesurat · n = 199
0.4.31 · 29 de set. 2026
mesurat · n = 13
0.4.31 · 29 de set. 2026
anthropic/claude-haiku-4-5mesurat · n = 116
0.4.31 · 28 de set. 2026
mesurat · n = 48
0.4.31 · 29 de set. 2026
mesurat · n = 450
0.4.31 · 29 de set. 2026
mesurat · n = 80
0.4.31 · 28 de set. 2026
anthropic/claude-opus-5-5mesurat · n = 32
0.4.31 · 28 de set. 2026
no mesurat: límit de despesa exhaurit
0.4.31 · 29 de set. 2026
mesurat · n = 81
0.4.31 · 29 de set. 2026
mesurat · n = 18
0.4.31 · 29 de set. 2026
anthropic/claude-sonnet-5mesurat · n = 62
0.4.31 · 28 de set. 2026
mesurat · n = 48
0.4.31 · 29 de set. 2026
mesurat · n = 264
0.4.31 · 29 de set. 2026
mesurat · n = 23
0.4.31 · 28 de set. 2026
anthropic/claude-sonnet-5-5mesurat · n = 62
0.4.31 · 28 de set. 2026
no mesurat: límit de despesa exhaurit
0.4.31 · 29 de set. 2026
mesurat · n = 311
0.4.31 · 29 de set. 2026
mesurat · n = 37
0.4.31 · 29 de set. 2026
google/gemini-3.1-pro-previewla capa ha fallat: les peticions no han passat per la capa
0.4.31 · 28 de set. 2026
mesurat · n = 97
0.4.31 · 29 de set. 2026
mesurat · n = 58
0.4.31 · 29 de set. 2026
no mesurat: quota del proveïdor exhaurida
0.4.31 · 29 de set. 2026
google/gemini-3.8-flashla capa ha fallat: les peticions no han passat per la capa
0.4.31 · 28 de set. 2026
mesurat · n = 324
0.4.31 · 29 de set. 2026
mesurat · n = 450
0.4.31 · 29 de set. 2026
la capa ha fallat: les peticions no han passat per la capa
0.4.31 · 29 de set. 2026

Errors que el banc ha trobat

El banc no hi és per quedar bé: hi és per trobar els errors abans que tu. Ha trobat aquests, amb la versió en què van aparèixer i la que els arregla.

  1. La memòria cau semàntica sense calibrar servia la resposta d'una altra pregunta 0.4.30 → 0.4.31

    Amb la memòria cau semàntica sense calibrar, una variant amb un altre número («three baskets» enfront de «two baskets») podia rebre la resposta de la pregunta original. Comptat sobre les variants de GSM8K.

    • Trobat a la 0.4.30: 15 de 111. gsm8k.json
    • Arreglat a la 0.4.31 (#383).
    • Verificat en directe a la 0.4.31: 0 de 198.
  2. La capa retallava el catàleg d'eines sense cap senyal per fer-ho 0.4.30 → 0.4.31

    En converses de diversos torns, el braç B enviava menys eines que l'A tot i que res no indicava quines sobraven. Comptat sobre les converses multi-torn de BFCL.

    • Trobat a la 0.4.30: 20 de 20. bfcl.json
    • Arreglat a la 0.4.31 (#382).
    • Verificat en directe a la 0.4.31: 0 de 83.
  3. Algunes negatives escrites com a text es desaven a la memòria cau 0.4.31 → 0.4.32

    Una negativa que el model escriu com a text (sense el senyal de l'API) podia desar-se a la memòria cau, repetir-se i acreditar-se com a estalvi. Comptat en prompts de XSTest.

  4. Un filtre de contingut de Gemini es desava a la memòria cau com a resposta 0.4.31 → 0.4.32

    Gemini assenyala el seu filtre amb un motiu d'aturada propi que la capa no reconeixia com a negativa, així que podia desar-lo a la memòria cau i repetir-lo. Comptat en prompts de XSTest.

    • Trobat a la 0.4.31: 6 de 508. xstest-0431-gama-alta.json
    • Arreglat a la 0.4.32 (#402).
    • Pendent de tornar a mesurar en directe a la 0.4.32.
  5. Gemini no passava per la capa 0.4.31 → 0.4.32

    La capa enviava un camp propi de l'API d'OpenAI a qualsevol endpoint compatible, i Gemini el rebutja: totes les peticions del braç B fallaven. Comptat en peticions de GSM8K.

    • Trobat a la 0.4.31: 504 de 504. gsm8k-0431-gama-alta.json
    • Arreglat a la 0.4.32 (#402).
    • Pendent de tornar a mesurar en directe a la 0.4.32.
  6. Amb Gemini 3, el segon torn amb eines fallava 0.4.31 → 0.4.32

    La capa no retornava la signatura de pensament que Gemini 3 exigeix a cada crida a eines, així que el torn següent es rebutjava. Comptat en continuacions multi-torn de BFCL.

    • Trobat a la 0.4.31: 50 de 50. bfcl-0431-gama-alta.json
    • Arreglat a la 0.4.32 (#402).
    • Pendent de tornar a mesurar en directe a la 0.4.32.

Com reproduir-ho

El codi del banc encara no és públic; el mètode sí, i cap en cinc passos. Amb les teves pròpies claus de proveïdor el pots repetir i comparar xifra a xifra amb els nostres informes.

  1. El dataset. Descarrega cada dataset públic al commit de la taula de dalt i comprova el sha256 de cada fitxer abans de fer-lo servir. Si no quadra, no és el mateix dataset.
  2. La capa. Instal·la @bivelio/savings-layer des de npm a la versió que diu l'informe i comprova el sha256 de dist/index.js: cada informe porta el seu.
  3. Dos braços per prompt. A va directe al proveïdor; B envia el mateix prompt, al mateix model i amb el mateix límit de sortida, a través de la capa amb la configuració per defecte. Una part dels prompts es repeteix o es parafraseja, com en el trànsit real, i l'ordre A/B se sorteja.
  4. El cost el diu el proveïdor. Suma el que factura cada braç segons l<code>usage</code> que retorna el proveïdor, a la seva tarifa publicada. Lestalvi és 1 − cost B / cost A, amb el seu interval.
  5. La qualitat, a la mateixa tirada. Puntua igual les respostes dels dos braços (resposta exacta a GSM8K, crida a eina a BFCL, negativa o no a XSTest, jutge a MT-Bench) i compara-les amb l'informe JSON de la mateixa bateria i versió.

Els informes

Cada tirada deixa un informe JSON amb el seu disseny, les seves limitacions i cada crida mesurada: usage, cost per braç i classificació de la resposta. Se serveixen des d'aquest web.

Els informes se serveixen tal com els va escriure el banc, amb una excepció: es treuen les dades de l'entorn de qui va mesurar (rutes de disc, correus). De XSTest no es publica el text de cap resposta, només la seva classificació.

Mesura'ns tu mateix

Una mesura independent val més que la nostra. El codi del banc encara no és públic: si vols repetir la mesura, o mesurar la capa amb el teu propi arnès o amb el teu trànsit, escriu-nos i et donarem el que necessitis per fer-ho.

Escriu-nos a support@bivelio.com

Enviar un correu