{"id":13022,"date":"2026-09-13T12:45:00","date_gmt":"2026-09-13T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13022"},"modified":"2026-10-26T12:44:08","modified_gmt":"2026-10-26T11:44:08","slug":"tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/","title":{"rendered":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen"},"content":{"rendered":"<p>Ein brauchbares API-Budget verbindet drei Aufzeichnungen: eine Reservierung vor der Anfrage, gemessenen Verbrauch nach der Antwort und einen sp\u00e4teren Abgleich mit den Anbietergeb\u00fchren. Eine Token-Gesamtsumme reicht daf\u00fcr nicht. Anbieter, Modell, Verarbeitungstarif, Cacheklasse und zus\u00e4tzliche Werkzeuge k\u00f6nnen den Preis ver\u00e4ndern.<\/p>\n<h2>1. Das Verbrauchsschema des Anbieters verstehen<\/h2>\n<p>Bei Anthropic Messages bezeichnet <code>input_tokens<\/code> die nicht zwischengespeicherte Eingabe. Cacheaufbau und Cachezugriffe bilden zus\u00e4tzliche Eingabeklassen; f\u00fcr den Aufbau k\u00f6nnen je Speicherdauer unterschiedliche Preise gelten. Bei OpenAI Responses ist <code>input_tokens<\/code> dagegen die gesamte Eingabe, einschlie\u00dflich Cachezugriffen und unterst\u00fctzten Cache-Schreibklassen. Eine Addition dieser Unterklassen zur Gesamtsumme w\u00fcrde Eingabe doppelt z\u00e4hlen. Die Strukturen unterscheiden sich fachlich, nicht blo\u00df in ihren Namen.<\/p>\n<p>Der folgende erfundene, vereinheitlichte Datensatz verwendet vier \u00fcberschneidungsfreie Klassen. Die Preise in USD je Million Token dienen der Rechnung und sind kein aktuelles Angebot f\u00fcr ein benanntes Modell. Ein echter Adapter muss den gew\u00e4hlten Endpunkt und s\u00e4mtliche einschl\u00e4gigen Cachelaufzeiten ber\u00fccksichtigen.<\/p>\n<pre><code>from decimal import Decimal, ROUND_CEILING\n\n# Fictional normalized classes and example USD rates per million.\ncounts = {&quot;input&quot;: 12400, &quot;write_5m&quot;: 8200, &quot;read&quot;: 96000, &quot;output&quot;: 1850}\nrates = {k: Decimal(v) for k, v in {\n    &quot;input&quot;: &quot;3.00&quot;, &quot;write_5m&quot;: &quot;3.75&quot;, &quot;read&quot;: &quot;0.30&quot;, &quot;output&quot;: &quot;15.00&quot;\n}.items()}\ncost_usd = sum(Decimal(counts[k]) * rates[k] for k in counts) \/ Decimal(1_000_000)\nactual_u = int((cost_usd * 1_000_000).to_integral_value(rounding=ROUND_CEILING))\nprint(cost_usd, actual_u)  # 0.1245, 124500\n<\/code><\/pre>\n<p>Die exakten Teilbetr\u00e4ge lauten 0,0372, 0,03075, 0,0288 und 0,02775 USD, zusammen 0,1245 USD. Werden alle angezeigten Teilbetr\u00e4ge vorher gerundet, kann deren sichtbare Summe abweichen. Dezimalrechnung erh\u00e4lt die Berechnung; das Reservierungsjournal unten verwendet ganzzahlige Mikro-USD, also 1.000.000 Einheiten je USD. Aufrunden auf diese Einheit ist eine interne Budgetregel, keine Rechnungsregel des Anbieters.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-13020-token-budget-20261024-de.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Vier Stufen der API-Budgetkontrolle\"><figcaption>Vier Stufen der API-Budgetkontrolle<\/figcaption><\/figure>\n<h2>2. Vorher z\u00e4hlen, nach Abschluss protokollieren<\/h2>\n<p>Anthropics Z\u00e4hlendpunkt ist innerhalb seiner Ratenbegrenzungen kostenlos und liefert eine Sch\u00e4tzung ohne Cachelogik. Nicht alle von Messages unterst\u00fctzten Eingaben sind dort zul\u00e4ssig: Die aktuelle Dokumentation schlie\u00dft die meisten Serverwerkzeuge, den MCP-Connector und Bild- oder Dokumentbl\u00f6cke mit URL-\/Dateiquellen aus. Modell und vollst\u00e4ndige unterst\u00fctzte Anfrageform sind entscheidend. Ein reiner Texttokenizer sch\u00e4tzt Werkzeuge, Bilder und Nachrichtenrahmen nicht allgemeing\u00fcltig ab.<\/p>\n<p>Beim Streaming erscheint Verbrauch nicht grunds\u00e4tzlich erst im letzten Ereignis. Anthropic liefert anf\u00e4ngliche Angaben in <code>message_start<\/code> und kumulierte Aktualisierungen in <code>message_delta<\/code>. Die Addition s\u00e4mtlicher kumulierter Werte w\u00fcrde \u00fcberz\u00e4hlen. Aufeinanderfolgende Gesamtst\u00e4nde von 10 und 20 bedeuten beispielsweise bisher 20 Token, nicht 30. Eine unterst\u00fctzte SDK-Funktion f\u00fcr die abgeschlossene Nachricht erleichtert das Sammeln. Abgebrochene Streams und Verbindungsfehler k\u00f6nnen unvollst\u00e4ndige Angaben hinterlassen. Fehlende Daten bleiben unbekannt und werden nicht zu null.<\/p>\n<p>Ein dauerhaftes Pr\u00fcfprotokoll sollte logischen Vorgang, eindeutige Versuchs-ID, verf\u00fcgbare Anbieterkennungen, Zeitpunkte, Funktion, Anbieter und Modell, Preisstand, Reservierung und Rohverbrauch verkn\u00fcpfen. Prompts und API-Schl\u00fcssel werden daf\u00fcr nicht ben\u00f6tigt. Eine Wiederholung ist ein eigener Versuch mit eigener Reservierung f\u00fcr m\u00f6gliche Kosten. Ein Timeout beweist weder eine Berechnung noch einen Abbruch beim Anbieter; Antwortheader k\u00f6nnen den Client \u00fcberhaupt nicht erreicht haben.<\/p>\n<h2>3. Die vollst\u00e4ndige Obergrenze atomar reservieren<\/h2>\n<p>Die Obergrenze muss Eingabe, h\u00f6chstm\u00f6gliche einschl\u00e4gige Ausgabe, m\u00f6gliche Cache-Schreibkosten und begrenzte Werkzeug- oder Schleifenkosten abdecken. Nur die maximale Ausgabe gen\u00fcgt nicht. Unbekannte Preise, unbegrenzte Werkzeugschleifen oder ein fehlgeschlagener Journaleintrag m\u00fcssen den Versand verhindern. Cachetreffer d\u00fcrfen f\u00fcr diese Obergrenze nicht vorausgesetzt werden.<\/p>\n<p>Die ausf\u00fchrbare <code>ledger.py<\/code> zeigt eine Freigabepr\u00fcfung f\u00fcr eine Anwendung, eine W\u00e4hrung und eine UTC-Kalendermonatsregel. Alle Aufrufer m\u00fcssen dieselbe lokale SQLite-Datenbank verwenden. Eine Datenbank f\u00fcr mehrere Hosts oder eine vollst\u00e4ndige Abrechnungsintegration entsteht daraus nicht. Die Betragspr\u00fcfung begrenzt jeden Wert auf eine Million USD in Mikroeinheiten.<\/p>\n<p>Vor der ersten Reservierung legt <code>initialise(database_path)<\/code> die Tabellen an. Ausgabeverbrauch kann unsichtbare Denk- oder Formatierungstoken enthalten; die sichtbare Antwortl\u00e4nge ist kein Ausgabez\u00e4hler.<\/p>\n<pre><code>import sqlite3\nfrom datetime import datetime, timezone\n\nclass BudgetExceeded(Exception):\n    pass\n\ndef units(value):\n    if type(value) is not int or not 0 &lt;= value &lt;= 10**12:\n        raise ValueError(&quot;Expected non-negative integer micro-USD, at most 10^12&quot;)\n    return value\n\ndef connect(path):\n    db = sqlite3.connect(path, timeout=10, isolation_level=None)\n    db.execute(&quot;PRAGMA foreign_keys=ON&quot;)\n    return db\n\ndef initialise(path):\n    db = connect(path)\n    try:\n        db.executescript(&quot;&quot;&quot;\n        CREATE TABLE IF NOT EXISTS budgets(\n          month TEXT PRIMARY KEY, limit_u INTEGER NOT NULL,\n          breached INTEGER NOT NULL DEFAULT 0);\n        CREATE TABLE IF NOT EXISTS calls(\n          attempt_id TEXT PRIMARY KEY,\n          month TEXT NOT NULL REFERENCES budgets(month),\n          reserved_u INTEGER NOT NULL, actual_u INTEGER,\n          state TEXT NOT NULL CHECK(state IN (&#x27;pending&#x27;,&#x27;settled&#x27;)));\n        &quot;&quot;&quot;)\n    finally:\n        db.close()\n\ndef reserve(path, attempt_id, upper_u, limit_u, now=None):\n    upper_u, limit_u = units(upper_u), units(limit_u)\n    if not isinstance(attempt_id, str) or not attempt_id:\n        raise ValueError(&quot;Stable, nonempty attempt ID required&quot;)\n    now = datetime.now(timezone.utc) if now is None else now\n    if now.tzinfo is None or now.utcoffset() is None:\n        raise ValueError(&quot;Timezone-aware timestamp required&quot;)\n    month = now.astimezone(timezone.utc).strftime(&quot;%Y-%m&quot;)\n    db = connect(path)\n    try:\n        db.execute(&quot;BEGIN IMMEDIATE&quot;)\n        if db.execute(&quot;SELECT 1 FROM calls WHERE attempt_id=?&quot;,\n                      (attempt_id,)).fetchone():\n            db.commit()\n            return False  # No second permission to send.\n        db.execute(&quot;INSERT OR IGNORE INTO budgets(month,limit_u) VALUES (?,?)&quot;,\n                   (month, limit_u))\n        stored_limit, breached = db.execute(\n            &quot;SELECT limit_u,breached FROM budgets WHERE month=?&quot;, (month,)\n        ).fetchone()\n        if stored_limit != limit_u:\n            raise ValueError(&quot;Conflicting limit for this month&quot;)\n        used = db.execute(\n            &quot;SELECT COALESCE(SUM(COALESCE(actual_u,reserved_u)),0) &quot;\n            &quot;FROM calls WHERE month=?&quot;, (month,)\n        ).fetchone()[0]\n        if breached or used + upper_u &gt; limit_u:\n            raise BudgetExceeded(month)\n        db.execute(&quot;INSERT INTO calls VALUES (?,?,?,?,?)&quot;,\n                   (attempt_id, month, upper_u, None, &quot;pending&quot;))\n        db.commit()\n        return True\n    except BaseException:\n        db.rollback()\n        raise\n    finally:\n        db.close()\n\ndef settle(path, attempt_id, actual_u):\n    actual_u = units(actual_u)\n    db = connect(path)\n    try:\n        db.execute(&quot;BEGIN IMMEDIATE&quot;)\n        row = db.execute(\n            &quot;SELECT month,reserved_u,actual_u,state FROM calls WHERE attempt_id=?&quot;,\n            (attempt_id,)\n        ).fetchone()\n        if row is None:\n            raise ValueError(&quot;Unknown attempt&quot;)\n        month, reserved, old_actual, state = row\n        if state == &quot;settled&quot;:\n            if old_actual != actual_u:\n                raise ValueError(&quot;Conflicting settlement&quot;)\n            db.commit()\n            return\n        db.execute(&quot;UPDATE calls SET actual_u=?,state=&#x27;settled&#x27; WHERE attempt_id=?&quot;,\n                   (actual_u, attempt_id))\n        if actual_u &gt; reserved:\n            db.execute(&quot;UPDATE budgets SET breached=1 WHERE month=?&quot;, (month,))\n        db.commit()\n    except BaseException:\n        db.rollback()\n        raise\n    finally:\n        db.close()\n<\/code><\/pre>\n<p><code>BEGIN IMMEDIATE<\/code> beginnt die Schreibtransaktion bereits vor dem Lesen der Summe. Dadurch k\u00f6nnen zwei gleichzeitige Aufrufer nicht denselben verbleibenden Budgetbetrag reservieren. Die Reservierung wird vor der Netzwerkanfrage festgeschrieben; w\u00e4hrend des API-Aufrufs bleibt keine Transaktion offen. Nur ein wahrer R\u00fcckgabewert von <code>reserve()<\/code> erlaubt den Versand. False bedeutet einen bereits vorhandenen Versuch, keine erneute Versandfreigabe. Sperr- und Datenbankfehler m\u00fcssen den Aufruf stoppen.<\/p>\n<pre><code>PSEUDOCODE\nvalidate provider, model, pricing snapshot and complete cost bound\npersist a unique attempt ID and audit context\nif reserve(database, attempt_id, upper_bound_u, monthly_limit_u) is True:\n    send exactly one provider attempt outside the database transaction\n    on complete usage:\n        persist the original usage and provider identifiers\n        calculate cost with the recorded pricing snapshot\n        settle(database, attempt_id, actual_cost_u)\n    on unknown outcome or unknown cost:\n        keep the reservation pending and investigate\n<\/code><\/pre>\n<p>Das gespeicherte Limit bleibt f\u00fcr diesen Monat fest. Eine sp\u00e4tere \u00dcberschreitungsmarkierung bricht bereits freigegebene Anfragen nicht ab.<\/p>\n<p>Der Ablauf ist Pseudocode f\u00fcr den Anbieteradapter: Ein gepr\u00fcfter Preisstand und eine vollst\u00e4ndige Obergrenze sind Voraussetzungen. Der ausf\u00fchrbare Code dar\u00fcber ruft keine API auf. Eine Abrechnung wird einmal gespeichert; identische Wiederholungen bleiben m\u00f6glich, widerspr\u00fcchliche Betr\u00e4ge werden abgelehnt. \u00dcbersteigen tats\u00e4chliche Kosten die Reservierung, wird der Mehrverbrauch erfasst und der Monat f\u00fcr weitere Freigaben gesperrt. Bereits entstandene Kosten lassen sich damit nicht zur\u00fccknehmen.<\/p>\n<h2>4. Unklare Versuche sichtbar halten<\/h2>\n<p>Ein Absturz nach der Reservierung, aber vor dem Versand kann ungenutztes Budget blockieren. Ein Timeout nach dem Versand kann tats\u00e4chliche Kosten ungekl\u00e4rt lassen. Beide F\u00e4lle automatisch verfallen zu lassen, w\u00fcrde ohne Nachweis neuen Spielraum \u00f6ffnen. Die Wiederherstellung ben\u00f6tigt Pr\u00fcfprotokoll und Anbieterinformationen; nur nachweislich kostenfreie Versuche sollten mit null abgeschlossen werden.<\/p>\n<p>Der Monat wird bei der Reservierung anhand von UTC zugeordnet. Eine sp\u00e4tere Abrechnung bleibt diesem Monat zugeordnet. Das ist eine interne Regel, keine Aussage \u00fcber den Rechnungszeitpunkt. Einreichung, Ausf\u00fchrung, lokale Abrechnung und Anbieterperiode sollten bei asynchronen Stapeln und Monatsgrenzen getrennt erhalten bleiben.<\/p>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Bleibt die Anbieterrechnung damit garantiert unter dem Budget?<\/h3>\n<p>Nein. Obergrenze, Preisadapter und Einbindung s\u00e4mtlicher kostenpflichtiger Vorg\u00e4nge m\u00fcssen stimmen. Andere API-Schl\u00fcssel, fehlende Werkzeugkosten, Vertragsbedingungen, Steuern oder sp\u00e4tere Korrekturen k\u00f6nnen au\u00dferhalb des lokalen Journals liegen. Anbieterseitige Grenzen k\u00f6nnen zus\u00e4tzlich sch\u00fctzen, sofern vorhanden; ma\u00dfgeblich ist deren dokumentierter Umfang.<\/p>\n<h3>L\u00e4sst sich jede Anfrage beim Abgleich einzeln zuordnen?<\/h3>\n<p>Nein. Anthropics Usage- und Cost-APIs liefern aggregierte Zeitabschnitte und Gruppierungsmerkmale. Ein Export jeder einzelnen Anfrage darf nicht vorausgesetzt werden. Auch die Kostenabdeckung besitzt dokumentierte Grenzen. Zeitraum, W\u00e4hrung und Umfang m\u00fcssen vor der Interpretation einer Abweichung zusammenpassen.<\/p>\n<h3>Was belegen die Beispieltests?<\/h3>\n<p>Acht parallele Reservierungsversuche erlaubten bei einer Grenze von 100 genau zwei Betr\u00e4ge von 40. Weitere isolierte Pr\u00fcfungen betrafen doppelte Abrechnungen, ungekl\u00e4rte offene Versuche, widerspr\u00fcchliche Limits, ung\u00fcltige Betr\u00e4ge und UTC-Monatsgrenzen. Kostenpflichtige API-Aufrufe und echte Rechnungen wurden nicht getestet.<\/p>\n<\/div>\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/platform.claude.com\/docs\/en\/build-with-claude\/token-counting\">Anthropic: Token z\u00e4hlen<\/a><\/li>\n<li><a href=\"https:\/\/platform.claude.com\/docs\/en\/build-with-claude\/prompt-caching\">Anthropic: Prompt-Zwischenspeicherung<\/a><\/li>\n<li><a href=\"https:\/\/platform.claude.com\/docs\/en\/build-with-claude\/streaming\">Anthropic: Nachrichten schrittweise empfangen<\/a><\/li>\n<li><a href=\"https:\/\/platform.claude.com\/docs\/en\/api\/usage-cost-api\">Anthropic: Verbrauchs- und Kosten-API<\/a><\/li>\n<li><a href=\"https:\/\/developers.openai.com\/api\/docs\/guides\/token-counting\">OpenAI: Token z\u00e4hlen<\/a><\/li>\n<li><a href=\"https:\/\/developers.openai.com\/api\/docs\/guides\/prompt-caching\">OpenAI: Prompt-Zwischenspeicherung<\/a><\/li>\n<li><a href=\"https:\/\/developers.openai.com\/api\/reference\/resources\/responses\/methods\/retrieve\">OpenAI: Verbrauch in Responses<\/a><\/li>\n<li><a href=\"https:\/\/sqlite.org\/lang_transaction.html\">SQLite: Transaktionen<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>API-Verbrauchsschemata unterscheiden sich; abgebrochene Anfragen k\u00f6nnen Kosten offenlassen. Das Tutorial verbindet genaue Beispielkosten mit atomaren SQLite-Reservierungen, Schutz vor Doppelbuchungen und den Grenzen eines monatlichen Anwendungsbudgets.<\/p>\n","protected":false},"author":1,"featured_media":24198,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92638],"tags":[92406,92352,92418,92235],"class_list":["post-13022","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-cloud-ai-de","tag-artificial-intelligence-de","tag-budgeting-de","tag-llm-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-13T10:45:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T11:44:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen\",\"datePublished\":\"2026-09-13T10:45:00+00:00\",\"dateModified\":\"2026-10-26T11:44:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/\"},\"wordCount\":994,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-13022-token-budget-20261024-dark.png\",\"keywords\":[\"Artificial Intelligence\",\"Budgeting\",\"LLM\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/\",\"name\":\"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-13022-token-budget-20261024-dark.png\",\"datePublished\":\"2026-09-13T10:45:00+00:00\",\"dateModified\":\"2026-10-26T11:44:08+00:00\",\"description\":\"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-13022-token-budget-20261024-dark.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-13022-token-budget-20261024-dark.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik","description":"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik","og_description":"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-13T10:45:00+00:00","article_modified_time":"2026-10-26T11:44:08+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen","datePublished":"2026-09-13T10:45:00+00:00","dateModified":"2026-10-26T11:44:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/"},"wordCount":994,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png","keywords":["Artificial Intelligence","Budgeting","LLM","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/","name":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png","datePublished":"2026-09-13T10:45:00+00:00","dateModified":"2026-10-26T11:44:08+00:00","description":"Den usage-Block auslesen, je Anfrage eine Zeile schreiben, Token in Geld umrechnen und einen Lauf stoppen, bevor das Monatsbudget \u00fcberschritten ist.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13022-token-budget-20261024-dark.png","width":1200,"height":630,"caption":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/tutorial-tokenverbrauch-je-anfrage-messen-und-ein-monatsbudget-durchsetzen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Tokenverbrauch je Anfrage messen und ein Monatsbudget durchsetzen"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13022"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13022\/revisions"}],"predecessor-version":[{"id":27009,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13022\/revisions\/27009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/24198"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}