API-Kostenrechner: Tokens, Cache und Anfragevolumen
Nutzen Sie Formel und Python-Rechner, um Input-, Output-, Cache-Write- und Cache-Read-Kosten für drei Anfragevolumen-Szenarien zu schätzen.
Inhalt
Dies ist kein interaktives Webformular. Dieser „Rechner“ besteht aus einer transparenten Formel und einem lokalen Python-Skript: Sie tragen input, output, cache write, cache read, die Zahl der Aufrufe und aktuelle Preise selbst ein.
Ein API-Kostenrechner multipliziert jede Nutzungskategorie mit dem aktuellen Preis und der Zahl der Aufrufe. Berechnen Sie Input, Output, Cache Write und Cache Read getrennt; alle Preise müssen in einer Währung je 1.000.000 Tokens angegeben sein. Ersetzen Sie unbekannte Werte nicht stillschweigend durch null. Definieren Sie zuerst die Basisanfrage, danach das Anfragevolumen und die Cache-Hit-Rate.
Welche Daten benötigt der Rechner?
Für die Text-API brauchen Sie sieben Eingaben:
input_tokens_per_call
output_tokens_per_call
cache_write_tokens_per_miss
cache_read_tokens_per_hit
calls
cache_hit_rate
prices_per_1m_tokens
Möchten Sie die Prognose mit einer echten Anfrage abgleichen? Erstellen Sie ein BetterToken-Konto und einen API Key, übernehmen Sie die aktuellen Preise von der Preisseite und führen Sie eine kontrollierte Anfrage aus. Vergleichen Sie dann Modell, Status, Input, Output, gegebenenfalls Cache Token und Verbrauch im Dashboard. So erkennen Sie sofort, welche Annahmen korrigiert werden müssen.
Caching hängt von Modell und Protokoll ab. Prüfen Sie vor dem Ausfüllen die BetterToken API-Referenz, OpenAI Prompt Caching oder Anthropic Prompt Caching.
Universelle Formel
Bezeichnungen:
I — reguläre Input Tokens
O — Output Tokens
W — Cache Write / Creation Tokens
R — Cache Read / Cached Tokens
Pi — Input-Preis je 1.000.000 Tokens
Po — Output-Preis je 1.000.000 Tokens
Pw — Cache-Write-Preis je 1.000.000 Tokens
Pr — Cache-Read-Preis je 1.000.000 Tokens
Kosten eines Aufrufs:
C = I / 1_000_000 × Pi
+ O / 1_000_000 × Po
+ W / 1_000_000 × Pw
+ R / 1_000_000 × Pr
+ Cextra
Cextra umfasst getrennt berechnete Einheiten wie Websuche, Bilder, Audio, Storage, Tools oder andere Operationen. Gibt es keine, ist der Wert null. Ist unklar, ob eine Zusatzgebühr anfällt, lassen Sie das Feld unbekannt und prüfen Sie die Dokumentation; null würde falsche Genauigkeit vortäuschen.
Der häufigste Fehler ist das vergessene Teilen durch eine Million. Ist ein Preis je 1.000.000 Tokens angegeben, teilen Sie die Token zuerst durch 1_000_000 und multiplizieren dann mit dem Preis.
Kopierbarer Python-Rechner
Das Skript enthält weder Preise noch API Key. Es fragt die Eingaben ab und berechnet ein Szenario. Das Ergebnis verwendet dieselbe Währung wie Ihre eingegebenen Preise.
from decimal import Decimal, InvalidOperation
MILLION = Decimal("1000000")
def read_decimal(label: str, *, allow_empty: bool = False) -> Decimal:
raw = input(label).strip().replace(",", ".")
if allow_empty and raw == "":
return Decimal("0")
try:
value = Decimal(raw)
except InvalidOperation as exc:
raise SystemExit(f"Invalid number for {label!r}") from exc
if value < 0:
raise SystemExit(f"Negative value is not allowed for {label!r}")
return value
input_tokens = read_decimal("Input tokens per call: ")
output_tokens = read_decimal("Output tokens per call: ")
cache_write_tokens = read_decimal("Cache write tokens per call: ")
cache_read_tokens = read_decimal("Cache read tokens per call: ")
calls = read_decimal("Number of calls: ")
price_input = read_decimal("Input price per 1M tokens: ")
price_output = read_decimal("Output price per 1M tokens: ")
price_cache_write = read_decimal("Cache write price per 1M tokens: ")
price_cache_read = read_decimal("Cache read price per 1M tokens: ")
extra_per_call = read_decimal("Extra cost per call (empty = 0): ", allow_empty=True)
per_call = (
input_tokens / MILLION * price_input
+ output_tokens / MILLION * price_output
+ cache_write_tokens / MILLION * price_cache_write
+ cache_read_tokens / MILLION * price_cache_read
+ extra_per_call
)
total = per_call * calls
print(f"Cost per call: {per_call:.8f}")
print(f"Total cost: {total:.8f}")
Speichern Sie den Code als api_cost_calculator.py und starten Sie ihn:
python3 api_cost_calculator.py
Tragen Sie keine tatsächlichen Tokens in Cache-Write/-Read-Felder ein, wenn der aktuelle Endpoint diese Kategorien nicht getrennt ausweist. Überführen Sie die Nutzungsangaben zuerst in sich gegenseitig ausschließende Gruppen, damit ein Token nicht doppelt gezählt wird.
Cache-Hit-Rate berücksichtigen
Für eine Reihe von Anfragen ist es sinnvoll, Cache Hits und Misses zu trennen:
N — Gesamtzahl der Aufrufe
h — Cache-Hit-Rate von 0 bis 1
Nhits — N × h
Nmiss — N - Nhits
Chit — Kosten eines Aufrufs mit Cache Read
Cmiss — Kosten eines Aufrufs ohne Hit oder mit Cache Write
Ergebnis:
Ctotal = Nhits × Chit + Nmiss × Cmiss + Cextra_total
Runden Sie für die Planung Nhits ab und Nmiss auf. Das ergibt eine etwas vorsichtigere Schätzung. In echten Logs verwenden Sie die tatsächliche Zahl jeder Aufrufart.
Drei Szenarien statt einer Zahl
Basisszenario
Verwenden Sie den Median von Input und Output aus jüngsten Aufgaben, die erwartete Zahl der Aufrufe und die beobachtete Cache-Hit-Rate. Ohne Historie müssen die Werte als Annahmen gekennzeichnet werden.
Günstiges Szenario
Stabiler langer Präfix, hohe Cache-Hit-Rate, begrenzter Output und keine wiederholten Fehler. Es zeigt eine Untergrenze, darf aber nicht zur Budgetzusage werden.
Schlechtester Fall
Fügen Sie Cache Misses, langen Output, einen begrenzten Retry und getrennt berechnete Tools hinzu. Erhöhen Sie nicht willkürlich alle Parameter: Jede Annahme muss einem realen Prozessrisiko entsprechen.
Notieren Sie die Ergebnisse in einer einfachen Tabelle:
scenario, calls, hit_rate, input, output, write, read, extra, total
base, ..., ..., ..., ..., ..., ..., ..., ...
low, ..., ..., ..., ..., ..., ..., ..., ...
high, ..., ..., ..., ..., ..., ..., ..., ...
Agent-Workflow bewerten
Ein sichtbarer Agent-Lauf entspricht nicht immer einem Modellaufruf. Darin können Planung, Tool Call, Tool Result, Retry und finale Antwort stecken. Deshalb:
- Führen Sie eine sichere Testaufgabe aus.
- Zählen Sie die tatsächlichen API-Aufrufe.
- Gruppieren Sie sie nach Modell und Nutzungskategorie.
- Wenden Sie die Formel auf jede Gruppe an.
- Fügen Sie Tool- oder Search-Einheiten getrennt hinzu.
- Vergleichen Sie den Betrag mit dem Dashboard.
Multiplizieren Sie nicht die Kosten eines zufälligen Aufrufs mit der Nutzerzahl, wenn die Anfragegrößen stark schwanken. Besser sind mehrere Aufgabenklassen: kurze Frage, Dateireview, Agent-Aufgabe.
Prognose mit dem tatsächlichen Wert abgleichen
Gleichen Sie nach dem Testaufruf Folgendes ab:
- Zeitpunkt und Request Status;
- Model ID;
- Input- und Output-Tokens;
- Cache-Kategorie;
- Zahl der Retries;
- tatsächlicher Verbrauch;
- Währung und Preisdatum.
Die Differenz zwischen Prognose und Tatsache weist meist auf einen von vier Punkten: falscher Preis, doppelt gezählte Cached Tokens, versteckter Retry oder zusätzliche abrechenbare Transaktion.
Für BetterToken verwenden Sie die aktuelle Preisseite und prüfen anschließend den echten Dashboard-Eintrag. Übernehmen Sie keine Preise aus alten Screenshots oder Artikeln.
Bevor Sie den normalen input-Preis anwenden, prüfen Sie im aktuellen Leitfaden zu usage-Feldern, wie cache read getrennt wird, wenn es im gesamten input-Kontext enthalten ist; sonst kann eine Kategorie doppelt gezählt werden.
Grenzen des Rechners
Die Formel deckt nur bekannte Kategorien ab. Sie sagt keine Tarifänderungen, zukünftigen Preise, dynamisches Routing oder die Zahl der Agent-Schritte voraus. Bilder, Audio, Websuche, Storage und einige Tools können eigene Einheiten haben.
Sie bewertet auch nicht die Antwortqualität. Ein billigerer Aufruf, der manuell wiederholt werden muss, kann die Gesamtkosten erhöhen. Das misst ein eigenes Experiment, kein erfundener Koeffizient.
FAQ
Was trage ich ein, wenn kein Cache genutzt wird?
Setzen Sie Cache Write und Cache Read nur dann auf null, wenn der Endpoint tatsächlich keinen Cache verwendet hat. Bei unbekannten Werten prüfen Sie zuerst die Nutzung.
In welcher Währung erscheint das Ergebnis?
Das Ergebnis verwendet die Währung Ihrer Preise und von extra_per_call. Mischen Sie Dollar und Rubel nicht ohne expliziten Wechselkurs und Datum.
Sind Cached Tokens in Input Tokens enthalten?
Das hängt vom Nutzungsformat der jeweiligen API ab. Prüfen Sie vor der Rechnung die Dokumentation und überführen Sie die Felder in sich gegenseitig ausschließende Kategorien, um Doppelzählungen zu vermeiden.
Wie berechne ich Monatskosten?
Berechnen Sie zuerst die Kosten einer Aufgabenklasse und multiplizieren Sie dann mit der tatsächlichen oder prognostizierten Aufrufzahl. Verwenden Sie für unterschiedliche Modelle und Aufgaben getrennte Zeilen und summieren Sie danach.
Warum ist die tatsächliche Belastung höher als die Schätzung?
Prüfen Sie Output, Retries, Agent-Schritte, Cache Misses und zusätzliche Tools. Ordnen Sie jede Nutzungszeile dem Dashboard zu, nicht nur die Gesamtsumme.