Savings Layer ist Teil der BiVelio-Plattform
Öffentlicher Benchmark · reproduzierbar

Unser A/B-Benchmark, offen einsehbar. Messen Sie uns.

Wir veröffentlichen jeden Lauf: vier Testreihen mit öffentlichen Datensätzen, 10 Modelle, und beide Arme gemessen mit dem eigenen Nutzungszähler des Anbieters. Jede Zahl trägt ihr n, ihr Intervall und ihr Datum. Was nicht einspart, steht auch hier.

Testreihen
4
getestete Modelle
10
Modelle mit einer Messung
10
Live-Berichte
15
letzter Lauf
29.09.2026

Was gemessen wird, und wie

  • Zwei Arme, dieselbe Anfrage. A geht direkt zum Anbieter, ohne die Schicht; B läuft durch die Schicht mit ihrer Standardkonfiguration. Gleicher Prompt, gleiches Sampling, gleiche Ausgabeobergrenze.
  • Die Kosten zählt der Anbieter. Jeder Arm wird anhand des usage-Werts bepreist, den die API bei jedem Aufruf zurückgibt, zum Listenpreis. Die Ersparnis ist 1 − Kosten(B) / Kosten(A) desselben Laufs, nicht das, was die Schicht über sich selbst sagt.
  • Intervalle zum 95 %. Jeder Testharness berechnet sie (Resampling ganzer Fragefamilien, Wilson für Ablehnungsraten). Ein Intervall, das die Null überschreitet, bedeutet „nicht von null unterscheidbar“, und das sagen wir dann auch.
  • Das Paket, das Sie installieren. Arm B läuft mit der Quelle des Tags 0.4.31; dessen dist/index.js ist byteidentisch mit dem des npm-Tarballs (sha256 b52f99cacf9804ecd3153e56f26ec3adcdc2510d52a8446a369ecf914e0b5731).
  • Keine Abkürzungen. Jeder Testharness überwacht die Hosts, mit denen er spricht, und trägt ein im Code festgelegtes Ausgabenlimit pro Modell. Ein Modell, das nicht gemessen werden konnte, wird als „nicht gemessen“ ausgewiesen, mit Begründung.

Vier Testreihen, öffentliche Datensätze, festgelegt

TestreiheWas geprüft wirdDatensatzFestgelegte DateienLizenz
GSM8KTextaufgaben in Mathematik mit Wiederholungen und Umformulierungen: wie viel der Cache einspart und ob die Genauigkeit sinkt.openai/grade-school-mathcommit 3101c7d5072418e28b9008a6636bde82a006892cgsm8k-test
sha256 3730d312f6e3440559ace48831e51066acaca737f6eabec99bccb9e4b3c39d14
gsm8k-train
sha256 17f347dc51477c50d4efb83959dbb7c56297aba886e5544ee2aaed3024813465
MIT
BFCLTool-Aufrufe: die Schicht darf keinen einzigen ändern, und der gesamte Katalog muss ankommen.ShishirPatil/gorillacommit f7cf7359b7ac615a0b294831c5ba2bc95ee4a000per Commit festgelegtApache-2.0
XSTestAblehnungen: die Schicht darf nicht ändern, wann das Modell ablehnt, noch eine Ablehnung aus dem Cache ausliefern.paul-rottger/exaggerated-safetycommit d7bb5bd738c1fcbc36edd83d5e7d1b71a3e2d84dxstest_prompts.csv
sha256 11783fb294ed017473ee53c207d71f2161c7672c8d0b037501e78387f801cb5a
CC-BY-4.0
MT-BenchChat mit zwei Runden ohne Wiederholungen: die Schicht darf Kosten, Latenz oder Qualität nicht verschlechtern.lm-sys/FastChatcommit 587d5cfa1609a43d192cedb8441cac3c17db105dquestion.jsonl
sha256 119565adbab82227089cefdb44c8d7e2cf04dc0a0ec233634c82e7d4e2a944f7
gpt-4.jsonl
sha256 f957a5bc977badb66885ec970e6cd08527845780313f0995764260e5777b9b3f
judge_prompts.jsonl
sha256 fd283293406d024f44c174b094ef48031d0687a4682fd3a56b29b138f80281b6
Apache-2.0

Gemessene Ersparnis pro Modell

GSM8K, mit einem Anfragestrom, in dem 30 % exakte Wiederholungen sind und 20 % Umformulierungen. Das ist die Testreihe mit wiederholtem Traffic: Ihre Ersparnis hängt davon ab, wie stark sich Ihrer wiederholt. Ohne Wiederholungen siehe „Was nicht einspart“.

ModellnGemessene Ersparnis [CI]Aus dem exakten CacheIn den Aufrufen (Präfix)Genauigkeit A → BVersion · Datum
openai/gpt-4o-mini200 Anfragen · 100 eindeutig31,5 % [25,7 % – 36,7 %]0,0124 $0,0006 $95,0 % → 96,1 %Δ +1,1 pp [0,0, +2,8]0.4.31 · 28.09.2026
openai/gpt-5.4-mini176 Anfragen · 88 eindeutig31,7 % [25,6 % – 37,6 %]0,0734 $0,0003 $95,6 % → 93,7 %Δ -1,9 pp [-5,0, 0,0]0.4.31 · 28.09.2026
openai/gpt-5.522 Anfragen · 11 eindeutig33,4 % [6,8 % – 53,8 %]0,0790 $-0,0023 $100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
openai/gpt-5.6-sol32 Anfragen · 16 eindeutig29,2 % [9,5 % – 46,8 %]0,0252 $-0,0003 $100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
anthropic/claude-haiku-4-5116 Anfragen · 58 eindeutig32,2 % [23,6 % – 40,2 %]0,0773 $0,0002 $99,0 % → 99,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
anthropic/claude-opus-5-532 Anfragen · 16 eindeutig77,2 % [67,1 % – 83,9 %]0,0974 $0,1391 $100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
anthropic/claude-sonnet-562 Anfragen · 31 eindeutig75,1 % [69,3 % – 79,6 %]0,1054 $0,1313 $100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
anthropic/claude-sonnet-5-562 Anfragen · 31 eindeutig77,5 % [72,0 % – 81,7 %]0,0924 $0,1289 $100,0 % → 100,0 %Δ 0,0 pp [0,0, 0,0]0.4.31 · 28.09.2026
google/gemini-3.1-pro-previewdie Schicht ist fehlgeschlagen: Anfragen liefen nicht über die Schicht0.4.31 · 28.09.2026
google/gemini-3.8-flashdie Schicht ist fehlgeschlagen: Anfragen liefen nicht über die Schicht0.4.31 · 28.09.2026

Woher die Ersparnis stammt, Position für Position: „aus dem exakten Cache“ ist das, was A für die Anfragen bezahlt hat, die die Schicht bedient hat, ohne den Anbieter aufzurufen; „in den Aufrufen“ ist die Differenz bei denen, die ihn tatsächlich erreicht haben, meist der Präfix-Cache des Anbieters (plus etwas Variation in der Ausgabe). Beide zusammen ergeben die Gesamtersparnis.

Die Genauigkeit wird anhand der Fragen mit veröffentlichter Antwort gemessen; die Varianten mit einer geänderten Zahl dienen nur dazu zu prüfen, dass die Schicht niemals die Antwort einer anderen Frage zurückgibt.

Garantien, gezählt

Die Schicht hat noch nie einen Tool-Aufruf verändert

0 veränderte Aufrufe bei 1.325 BFCL-Vergleichen, 6 Modelle, seit 0.4.31. Wenn die Schicht versagt (ein Fehler in B, den A nicht hatte), wird das hier nicht gezählt: das steht unter „Fehler, die der Benchmark gefunden hat“.

Keine Antwort einer anderen Frage seit 0.4.31

0 von 198 Varianten (dieselbe Frage mit einer anderen Zahl, also einer anderen Antwort) mit der Antwort einer anderen Frage ausgeliefert, über 8 Live-Modelle und alle gemessenen Cache-Konfigurationen hinweg.

Offline-Replay des gesamten GSM8K-Testsplits: 0 bei 5.813 Anfragen, in jeder der 5 Cache-Konfigurationen.

Dieselbe Ablehnungsrate, mit und ohne die Schicht

XSTest, 10 gemessene Modelle: kein A/B-Unterschied unterhalb von p = 0,05 (McNemar, gepaarte Prompts). Die Schicht hat den Text von 4.668 Antworten unverändert ausgeliefert (0 verändert).

Ablehnungsrate pro Modell, ohne die Schicht (A) und mit ihr (B), bei denselben Prompts.
ModellPromptsAblehnungen, sichere Prompts (A → B)Ablehnungen, unsichere Prompts (A → B)Version · Datum
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.09.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.09.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.09.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.09.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.09.2026
anthropic/claude-opus-5-581—67,1 % → 67,1 % (n = 79, p = 1,00)0.4.31 · 29.09.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.09.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.09.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.09.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.09.2026

Was nicht einspart

Ohne Wiederholungen liegt die Ersparnis bei ≈ 0 %. Wir veröffentlichen es trotzdem, weil es das ist, was Sie sehen werden, wenn sich Ihr Traffic nicht wiederholt.

MT-Bench ist ein Chat mit zwei Runden mit einer frischen Schicht pro Frage: Es gibt nichts, was der Cache wiederverwenden könnte, und der Prompt erreicht fast nie das Minimum, das der Anbieter verlangt, um einen Präfix zu cachen. Bei BFCL ist jeder Tool-Aufruf anders. Was diese beiden Testreihen messen, ist, dass die Schicht nichts verschlechtert; die verbleibende Kostendifferenz ist Rauschen in der Ausgabe des Modells, nicht die Schicht.

TestreiheModellnGemessene Ersparnis [CI]EinordnungVersion · Datum
BFCLopenai/gpt-4o-mini400 Einträge0,1 % [0,0 % – 0,3 %]nicht von null unterscheidbar0.4.31 · 28.09.2026
BFCLopenai/gpt-5.4-mini400 Einträge-0,2 % [-1,0 % – 0,5 %]nicht von null unterscheidbar0.4.31 · 28.09.2026
BFCLanthropic/claude-haiku-4-548 Einträge0,1 % [0,0 % – 0,2 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
BFCLanthropic/claude-sonnet-548 Einträge1,5 % [-1,6 % – 5,8 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
BFCLgoogle/gemini-3.1-pro-preview97 Einträge4,8 % [-6,6 % – 15,6 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
BFCLgoogle/gemini-3.8-flash324 Einträge-10,7 % [-27,8 % – 3,2 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
MT-Benchopenai/gpt-4o-mini80 Fragen3,3 % [0,8 % – 6,0 %]Ersparnis · nicht der Schicht zuzuschreiben0.4.31 · 28.09.2026
MT-Benchopenai/gpt-5.4-mini80 Fragen-3,5 % [-8,6 % – 1,6 %]nicht von null unterscheidbar · nicht der Schicht zuzuschreiben0.4.31 · 28.09.2026
MT-Benchopenai/gpt-5.58 Fragen2,1 % [-4,4 % – 9,7 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
MT-Benchopenai/gpt-5.6-sol13 Fragen-0,4 % [-21,2 % – 13,5 %]nicht von null unterscheidbar · nicht der Schicht zuzuschreiben0.4.31 · 29.09.2026
MT-Benchanthropic/claude-haiku-4-580 Fragen-2,6 % [-4,6 % – -0,9 %]Mehrkosten · nicht der Schicht zuzuschreiben0.4.31 · 28.09.2026
MT-Benchanthropic/claude-opus-5-518 Fragen1,1 % [-2,0 % – 4,9 %]nicht von null unterscheidbar0.4.31 · 29.09.2026
MT-Benchanthropic/claude-sonnet-523 Fragen1,7 % [-8,9 % – 12,7 %]nicht von null unterscheidbar0.4.31 · 28.09.2026
MT-Benchanthropic/claude-sonnet-5-537 Fragen-0,8 % [-2,5 % – 0,9 %]nicht von null unterscheidbar0.4.31 · 29.09.2026

Status nach Modell und Testreihe

Jede Zelle zeigt den Lauf mit der höchsten Version der Schicht. Wenn ein Modell nicht gemessen werden konnte, sagen wir, warum, statt eine Lücke zu lassen.

ModellGSM8KBFCLXSTestMT-Bench
openai/gpt-4o-minigemessen · n = 200
0.4.31 · 28.09.2026
gemessen · n = 400
0.4.31 · 28.09.2026
gemessen · n = 450
0.4.31 · 28.09.2026
gemessen · n = 80
0.4.31 · 28.09.2026
openai/gpt-5.4-minigemessen · n = 176
0.4.31 · 28.09.2026
gemessen · n = 400
0.4.31 · 28.09.2026
gemessen · n = 441
0.4.31 · 28.09.2026
gemessen · n = 80
0.4.31 · 28.09.2026
openai/gpt-5.5gemessen · n = 22
0.4.31 · 28.09.2026
nicht gemessen: Ausgabenlimit erschöpft
0.4.31 · 29.09.2026
gemessen · n = 120
0.4.31 · 29.09.2026
gemessen · n = 8
0.4.31 · 29.09.2026
openai/gpt-5.6-solgemessen · n = 32
0.4.31 · 28.09.2026
nicht gemessen: der Anbieter hat die Anfrage in beiden Armen abgelehnt
0.4.31 · 29.09.2026
gemessen · n = 199
0.4.31 · 29.09.2026
gemessen · n = 13
0.4.31 · 29.09.2026
anthropic/claude-haiku-4-5gemessen · n = 116
0.4.31 · 28.09.2026
gemessen · n = 48
0.4.31 · 29.09.2026
gemessen · n = 450
0.4.31 · 29.09.2026
gemessen · n = 80
0.4.31 · 28.09.2026
anthropic/claude-opus-5-5gemessen · n = 32
0.4.31 · 28.09.2026
nicht gemessen: Ausgabenlimit erschöpft
0.4.31 · 29.09.2026
gemessen · n = 81
0.4.31 · 29.09.2026
gemessen · n = 18
0.4.31 · 29.09.2026
anthropic/claude-sonnet-5gemessen · n = 62
0.4.31 · 28.09.2026
gemessen · n = 48
0.4.31 · 29.09.2026
gemessen · n = 264
0.4.31 · 29.09.2026
gemessen · n = 23
0.4.31 · 28.09.2026
anthropic/claude-sonnet-5-5gemessen · n = 62
0.4.31 · 28.09.2026
nicht gemessen: Ausgabenlimit erschöpft
0.4.31 · 29.09.2026
gemessen · n = 311
0.4.31 · 29.09.2026
gemessen · n = 37
0.4.31 · 29.09.2026
google/gemini-3.1-pro-previewdie Schicht ist fehlgeschlagen: Anfragen liefen nicht über die Schicht
0.4.31 · 28.09.2026
gemessen · n = 97
0.4.31 · 29.09.2026
gemessen · n = 58
0.4.31 · 29.09.2026
nicht gemessen: Kontingent des Anbieters erschöpft
0.4.31 · 29.09.2026
google/gemini-3.8-flashdie Schicht ist fehlgeschlagen: Anfragen liefen nicht über die Schicht
0.4.31 · 28.09.2026
gemessen · n = 324
0.4.31 · 29.09.2026
gemessen · n = 450
0.4.31 · 29.09.2026
die Schicht ist fehlgeschlagen: Anfragen liefen nicht über die Schicht
0.4.31 · 29.09.2026

Fehler, die der Benchmark gefunden hat

Der Benchmark ist nicht dazu da, gut auszusehen: Er ist dazu da, die Fehler zu finden, bevor Sie es tun. Er hat diese gefunden, mit der Version, in der sie auftraten, und der, die sie behebt.

  1. Der unkalibrierte semantische Cache lieferte die Antwort einer anderen Frage 0.4.30 → 0.4.31

    Bei unkalibriertem semantischem Cache konnte eine Variante mit einer anderen Zahl („three baskets“ gegenüber „two baskets“) die Antwort der ursprünglichen Frage erhalten. Gezählt über die GSM8K-Varianten.

    • Gefunden in 0.4.30: 15 von 111. gsm8k.json
    • Behoben in 0.4.31 (#383).
    • Live verifiziert mit 0.4.31: 0 von 198.
  2. Die Schicht kürzte den Tool-Katalog ohne jedes Signal dafür 0.4.30 → 0.4.31

    In mehrteiligen Unterhaltungen sendete Arm B weniger Tools als Arm A, obwohl nichts darauf hindeutete, welche unnötig waren. Gezählt über die mehrteiligen BFCL-Unterhaltungen.

    • Gefunden in 0.4.30: 20 von 20. bfcl.json
    • Behoben in 0.4.31 (#382).
    • Live verifiziert mit 0.4.31: 0 von 83.
  3. Manche als Text geschriebenen Ablehnungen wurden gecacht 0.4.31 → 0.4.32

    Eine Ablehnung, die das Modell als Text schreibt (ohne das Signal der API), konnte gecacht, wiederholt und als Ersparnis angerechnet werden. Gezählt in XSTest-Prompts.

  4. Ein Gemini-Inhaltsfilter wurde als Antwort gecacht 0.4.31 → 0.4.32

    Gemini kennzeichnet seinen Filter mit einem eigenen Stop-Grund, den die Schicht nicht als Ablehnung erkannte, sodass sie ihn cachen und wiederholen konnte. Gezählt in XSTest-Prompts.

  5. Gemini lief nicht über die Schicht 0.4.31 → 0.4.32

    Die Schicht sendete ein für die OpenAI-API spezifisches Feld an jeden kompatiblen Endpunkt, und Gemini lehnt es ab: Jede Anfrage in Arm B schlug fehl. Gezählt in GSM8K-Anfragen.

    • Gefunden in 0.4.31: 504 von 504. gsm8k-0431-gama-alta.json
    • Behoben in 0.4.32 (#402).
    • Wartet auf erneute Live-Messung mit 0.4.32.
  6. Bei Gemini 3 schlug die zweite Runde mit Tools fehl 0.4.31 → 0.4.32

    Die Schicht gab die Thought-Signatur nicht zurück, die Gemini 3 bei jedem Tool-Aufruf verlangt, sodass die nächste Runde abgelehnt wurde. Gezählt in mehrteiligen BFCL-Fortsetzungen.

    • Gefunden in 0.4.31: 50 von 50. bfcl-0431-gama-alta.json
    • Behoben in 0.4.32 (#402).
    • Wartet auf erneute Live-Messung mit 0.4.32.

Wie man es reproduziert

Der Code des Benchmarks ist noch nicht öffentlich; die Methode schon, und sie passt in fünf Schritte. Mit Ihren eigenen Anbieter-Schlüsseln können Sie ihn wiederholen und Zahl für Zahl mit unseren Berichten vergleichen.

  1. Der Datensatz. Laden Sie jeden öffentlichen Datensatz beim Commit aus der Tabelle oben herunter und prüfen Sie vor der Nutzung den sha256 jeder Datei. Stimmt er nicht, ist es nicht derselbe Datensatz.
  2. Die Schicht. Installieren Sie @bivelio/savings-layer von npm in der Version, die der Bericht nennt, und prüfen Sie den sha256 von dist/index.js: Jeder Bericht enthält seinen.
  3. Zwei Arme pro Prompt. A geht direkt zum Anbieter; B schickt denselben Prompt an dasselbe Modell mit demselben Ausgabelimit durch die Schicht in ihrer Standardkonfiguration. Ein Teil der Prompts wird wiederholt oder umformuliert, wie im echten Verkehr, und die Reihenfolge A/B wird ausgelost.
  4. Die Kosten nennt der Anbieter. Summieren Sie, was jeder Arm laut dem vom Anbieter gelieferten usage zum veröffentlichten Preis kostet. Die Ersparnis ist 1 − Kosten B / Kosten A, mit ihrem Intervall.
  5. Die Qualität, im selben Lauf. Bewerten Sie die Antworten beider Arme gleich (exakte Antwort bei GSM8K, Tool-Aufruf bei BFCL, Ablehnung oder nicht bei XSTest, ein Richter bei MT-Bench) und vergleichen Sie sie mit dem JSON-Bericht derselben Batterie und Version.

Die Berichte

Jeder Lauf hinterlässt einen JSON-Bericht mit seinem Design, seinen Grenzen und jedem gemessenen Aufruf: usage, Kosten pro Arm und Einstufung der Antwort. Sie werden von dieser Website ausgeliefert.

Die Berichte werden so ausgeliefert, wie der Benchmark sie geschrieben hat, mit einer Ausnahme: Angaben zur Umgebung der messenden Person (Dateipfade, E-Mail-Adressen) werden entfernt. Von XSTest wird kein Antworttext veröffentlicht, nur seine Einstufung.

Messen Sie uns selbst

Eine unabhängige Messung ist mehr wert als unsere. Der Code des Benchmarks ist noch nicht öffentlich: Wenn Sie die Messung wiederholen oder die Schicht mit Ihrem eigenen Harness oder Ihrem eigenen Verkehr messen möchten, schreiben Sie uns, und wir geben Ihnen, was Sie dafür brauchen.

Schreiben Sie uns an support@bivelio.com

E-Mail schreiben