Wie ich beim Entwickeln Tokens spare — du und der Planet habt euer Limit erreicht

MB

Kennst du den Moment, in dem du an etwas arbeitest oder auf andere Weise mit einem LLM-Agenten interagierst, und plötzlich erscheint die Meldung „Du hast dein Nutzungslimit erreicht“? Jetzt musst du auf einen Reset warten, oder du kannst vielleicht das Modell wechseln, aber es ist einfach nicht so gut wie das, welches das Limit erreicht hat. Keine Sorge — irgendwo unter dieser Meldung findest du die Option, eine Kreditkarte zu hinterlegen und zu sehen, wie viele Tokens es kostet, weiter zu interagieren.

In einer Welt, in der der Klimawandel weiterhin seine Auswirkungen zeigt — Waldbrände rund um den Globus, niedrige Wasserstände und schmelzende Gletscher —, könnte Tokens sparen bedeuten, ein Stück des Planeten zu retten. Wenn Nutzerinnen und Nutzer ihre Tokens effizient einsetzen, lässt sich der Strom reduzieren, der für den Betrieb von KI-Modellen nötig ist, und mit ihm alle Ressourcen, die darin stecken. Wir können an einen Punkt kommen, an dem dein PC zu Hause ein LLM-Modell ausführen kann und es alles erledigt, was du für die Arbeit brauchst.

Du kannst dir Tokens als die Währung von KI-Modellen vorstellen, aber damit ist es nicht getan. Tokens werden von jedem Modell anders berechnet, und sowohl die Größe der Eingabe als auch die der Ausgabe zählt. Als grobe Faustregel gilt: 1 Token entspricht ungefähr 4 Zeichen. Wenn ich zum Beispiel „My coffee machine does not turn on“ eingebe, hat dieser Satz 34 Zeichen, inklusive 6 Leerzeichen. Die meisten Modelle entfernen Leerzeichen, um Tokens zu sparen; ziehen wir sie also ab, bleiben 28 Zeichen, was 28 / 4 = 7 Tokens ergibt. Nehmen wir an, dein Modell kostet ähnlich viel wie Claude Fable 5 — 10 € pro 1 Mio. Eingabe-Tokens und 50 € pro 1 Mio. Ausgabe-Tokens. Allein für die Eingabe würdest du 0,00007 € zahlen, und je nachdem, wie lang die Ausgabe ist — sagen wir 300 Zeichen —, kämen etwa 0,00375 € für die Ausgabe dazu. Insgesamt zahlst du also fast 0,004 € für diese eine Frage.

Hier die vereinfachte Rechnung:

Satz: „My coffee machine does not turn on“ → 34 Zeichen (inklusive 6 Leerzeichen) → ohne Leerzeichen: 34 − 6 = 28 Zeichen

Eingabe-Tokens: 28 Zeichen ÷ 4 = 7 Tokens

Eingabekosten (10 € / 1 Mio. Tokens): 7 × (10 € ÷ 1.000.000) = 0,00007 €

Ausgabe: 300 Zeichen 300 ÷ 4 = 75 Tokens

Ausgabekosten (50 € / 1 Mio. Tokens): 75 × (50 € ÷ 1.000.000) = 0,00375 €

Gesamt: 0,00007 € + 0,00375 € = 0,00382 €

Eines können wir bei der Nutzung von LLMs wie ChatGPT oder Claude nicht steuern: wie lang die Antwort ausfällt oder wie viel Geld wir vorab für die Interaktion ausgeben wollen. Richtig chaotisch wird es, wenn man anfängt, LLMs zum Programmieren einzusetzen, denn wenn man dem LLM die Erlaubnis gibt, führt es Terminal-Befehle aus, strukturiert Dateien, schreibt Code, zieht Informationen aus MCP-Servern oder Skills und so weiter. Auf diese Weise verliert man sehr leicht die Kontrolle.

Ich habe mich gefragt, wie ich beim Entwickeln — oder generell bei der Arbeit mit KI — Tokens sparen kann. Mein Ziel war eine minimale bis mittlere Eingabe und eine minimale Ausgabe. Um das zu testen, habe ich Claude Code verwendet und versucht, dasselbe Projekt auf drei Arten aufzusetzen: ohne Framework und ohne MCP-Server, mit Framework, aber ohne MCP, und mit Framework und MCP-Server zusammen.

Hier sind die Ergebnisse:

Tabelle 1

Vanilla Node (T1)Next.js, ohne MCP (T2)Next.js + MCP (T3)
Eingabe-Tokens505114.800 (geschätzt)
Ausgabe-Tokens~27.00044.0655.700 (geschätzt)
Gesamt-Tokens~27.05044.116~20.500 (geschätzt) / ~30.200 (gemessen)
Kosten0,675 $1,102 $0,217 $

Das Ergebnis: Der Ansatz mit Framework + MCP-Server verbrauchte deutlich weniger Tokens — genauer gesagt war er fast 3,5-mal günstiger und brauchte halb so viele Tokens.

Der Framework-+-MCP-Ansatz war mit etwas manueller Arbeit verbunden. Ich musste den MCP-Server selbst installieren und die Ersteinrichtung übernehmen. Trotzdem sind die Vorteile auch mit dieser Handarbeit klar: Du verbrauchst weniger Tokens, wahrscheinlich weniger Strom, und du sparst Geld. Vielleicht bedeutet es auch, dass dein Umgang mit LLMs und dein Wissen darüber besser sind als bei Nutzern, die einfach große Mengen an Tokens verbrauchen.

Ich ermutige euch alle, Frameworks und MCP-Server einzusetzen und andere KI-Protokolle wie A2A, ACP, ANP und UCP auszuprobieren, denn sie liefern eurem LLM den relevantesten und schnellsten Kontext. Wahrscheinlich werden auch eure Ergebnisse besser — ich habe das nicht mit harten Belegen getestet, aber soweit ich sehen kann, wirken Struktur und Fundament des Projekts solide.

Achte auf deinen Token-Verbrauch und halte den Planeten sicher.

Unten findest du die restlichen Tabellen und die Prompts, die für dieses kleine Experiment verwendet wurden.

Claude Code v2.1.233, Modell: Opus 5 (Standard)

Prompt: „Erstelle ein Projekt, das einen API-Aufruf an meinen Endpunkt macht und Titel, Inhalt und Autor der Antwort anzeigt. Hier ist die Endpunkt-URL: http://URL:8081/endpoint. Liste außerdem auf, wie viele Tokens du für die Aufgabe verbraucht hast, in jedem Schritt.“

Tabelle 2

#Schritt~Tokens in diesem Schritt~Kumuliert
1curl an den Endpunkt (große JSON-Antwort)~9.500~9.500
2node/npm prüfen, Zielverzeichnis~1.600~11.100
3package.json schreiben~1.000~12.100
4api.js schreiben~1.300~13.400
5server.js schreiben~1.400~14.800
6public/index.html schreiben~2.400~17.200
7cli.js schreiben~1.000~18.200
8CLI ausführen (gibt den ganzen Artikel aus)~1.900~20.100
9Servertest — EADDRINUSE auf Port 3000~1.900~22.000
10Servertest erneut auf 4300~1.600~23.600
11Standard-Port anpassen~800~24.400
12README.md schreiben~1.200~25.600
13Zusammenfassung~1.300~26.900

Prompt: „Erstelle mit Next.js ein Projekt, das einen API-Aufruf an meinen Endpunkt macht und Titel, Inhalt und Autor der Antwort anzeigt. Hier ist die Endpunkt-URL: http://URL:8081/endpoint. Liste außerdem auf, wie viele Tokens du für die Aufgabe verbraucht hast, in jedem Schritt.“

Tabelle 3

#SchrittTokens
1Verzeichnis auflisten, node prüfen, Endpunkt testen24.411
2create-next-app-Gerüst1.951
3Erzeugte Dateien inspizieren396
4.env.local + drafts.ts schreiben1.251
5page.tsx schreiben972
6layout.tsx lesen (brachte AGENTS.md zum Vorschein)164
7Mitgelieferte Next-Docs auflisten904
8Docs-Index + App-Baum lesen163
9Fehlgeschlagenes cd (veralteter Shell-Pfad)1.960
10Leitfaden zum Daten-Fetching lesen204
11Nach force-dynamic greppen2.309
12Caching-Leitfaden lesen397
133 Änderungen (no-store/force-dynamic entfernen, Metadaten)2.156
14Build #1 — deckte den Static-Prerender-Bug auf507
15Alten Caching-Leitfaden greppen770
16Abschnitt zur Segment-Konfiguration lesen302
172 Änderungen, die force-dynamic wiederherstellen2.386
18Build #2 — bestätigt dynamisch337
19Dev-Server starten, HTML abrufen846
20Port-Konflikt diagnostizieren206
21Gerendertes Ergebnis auf :3001 prüfen751
22Author-Markup inspizieren451
23PID des Dev-Servers ermitteln1.271
Gesamt~44.065

Tabelle 4

#SchrittEingabe (geschätzt)Ausgabe (geschätzt)Zähler-Differenz (gemessen)
1Projektstruktur inspizieren + Docs finden400130468
2Docs-Index + 01-app-Baum lesen950110924
3Docs-Verzeichnisse auflisten4501201.791
4fetching-data.md + route-handlers.md lesen7.200901.190
5App-Dateien, Konfigurationen + caching.md lesen3.00012011.043
6fetch.md lesen + nach Deprecations greppen2.0201104.770
7lib/drafts.ts + route.ts schreiben806004.197
8app/page.tsx schreiben401.6502.496
9tsc --noEmit3070257
10Dev-Server starten150110324
11/api/drafts und / testen250330765
12Inhalt prüfen + Lint200230821
13Vorherige Zusammenfassung1.150~1.200
14Diese Nachricht900
Gesamt~14.800~5.700~30.200