Tokenzählung für GPT, Claude und Llama in einer API
Zählen und kürzen Sie Token in 15 LLM-Modellen mit einer einzigen POST-Anfrage. Verhindern Sie Kontextfensterüberläufe und schätzen Sie die Kosten vor jedem API-Aufruf.
Sie senden eine Eingabeaufforderung an GPT-4o und die Antwort wird mitten im Satz abgebrochen. Sie überprüfen Ihre Rechnung und finden Ein Batch-Job hat 40 US-Dollar verschlungen, weil die Eingabe dreimal so groß war wie erwartet. Sie fügen eine lange ein Dokument in Claude importieren und eine Fehlermeldung erhalten: Kontextfenster überschritten. Jedes dieser Probleme hat Spuren zurück zur gleichen Grundursache; Sie wussten vor dem Absenden nicht, wie viele Token Ihr Text enthielt.
Die Tokenzählung ist die Preflight-Prüfung, die jede LLM-Integration benötigt. Die Anzahl der Zeichen wird Ihnen nicht helfen. Durch die Wortzählung sind Sie auf dem richtigen Weg, Tokenizer teilen den Text jedoch je nach Modell unterschiedlich auf. Sie benötigen die genaue Anzahl für das Modell, das Sie anrufen.
Warum die Zeichenanzahl nicht die Tokenanzahl ist
LLMs verarbeiten keine Rohzeichen. Sie zerlegen Text mithilfe eines Tokenizers in Token Vokabular von Unterwortstücken, trainiert auf einem großen Korpus. Die Zuordnung von Text zu Token ist nicht offensichtlich und modellspezifisch.
Einige Beispiele, die zeigen, warum das Zählen von Zeichen Sie in die Irre führt:
-
„Ich kann nicht“ teilt sich in GPT-4 in 3 Token auf:
I,can,'t. Das sind 7 Zeichen, aber 3 Token. - „Antidisestablishmentarismus“ ist ein Wort, aber je nach Wort 6-8 Token Modell. Der Tokenizer zerlegt es in Teilwortteile, die er erkennt.
- "Hallo" ist 1 Token. " Hallo" (mit führenden Leerzeichen) könnte sein 2 Token, da das Leerzeichen ein eigenes Token erhält.
- Codeausschnitte anders symbolisieren als Prosa. Geschweifte Klammern, Semikolons usw Einrückung verbraucht jeweils Token. Eine Funktion mit 500 Zeichen kann leicht mehr als 200 Token kosten.
GPT-Modelle verwenden BPE (Byte-Pair-Codierung) mit dem cl100k_base- oder o200k_base-Vokabular. Claude verwendet ein ähnlicher, aber unterschiedlicher BPE-Tokenizer. Lama verwendet SentencePiece. Der gleiche Absatz erzeugt etwas anderes Token zählt über alle drei hinweg.
Zählen Sie Token mit einem API-Aufruf
Senden Sie Ihren Text an die Botoi /v1/token/count Endpunkt mit dem Zielmodell. Die API
gibt die geschätzte Token-Anzahl zusammen mit der Anzahl der Zeichen und Wörter zurück.
curl -X POST https://api.botoi.com/v1/token/count \\
-H "Content-Type: application/json" \\
-d '{
"text": "The quick brown fox jumps over the lazy dog. This sentence is used to test tokenizers across different language models.",
"model": "gpt-4o"
}'
Antwort:
{
"success": true,
"data": {
"tokens": 24,
"model": "gpt-4o",
"method": "estimated",
"characters": 116,
"words": 20
}
}
Die Antwort besagt, dass dieser 20-Wörter-Satz in GPT-4o 24 Token kostet. Du bekommst auch
characters Und words zum schnellen Nachschlagen. Der method Feld
gibt den verwendeten Zählansatz an.
Token zählt nach Modell
Derselbe Text führt zu unterschiedlichen Token-Zählungen, je nachdem, auf welches Modell Sie abzielen. Der
model Der Parameter akzeptiert 15 Modelle der wichtigsten Familien. So vergleichen sie sich
für die gleiche Eingabe:
| Modell | Tokenizer | Kontextfenster | Token (gleicher Text) |
|---|---|---|---|
| gpt-4o | o200k_base (BPE) | 128K | 24 |
| gpt-3.5-turbo | cl100k_base (BPE) | 16K | 24 |
| Claude-3.5-Sonett | Claude BPE | 200.000 | 25 |
| close-4-work | Claude BPE | 200.000 | 25 |
| Lama-3.2 | Satzstück | 128K | 24 |
| Gemini-2.0-Flash | Satzstück | 1M | 24 |
| Mistral | Satzstück (BPE) | 32K | 24 |
Bei kurzen englischen Sätzen sind die Unterschiede gering, nehmen aber mit zunehmender Eingabelänge zu. Nicht-Englisch Text, Code und strukturierte Daten (JSON, XML) können größere Unterschiede aufweisen. Zählen Sie Token immer mit spezifisches Modell, das Sie anrufen möchten.
Text auf ein Token-Limit kürzen
Wenn Ihre Eingabeaufforderung über das Kontextfenster hinausgeht, müssen Sie sie kürzen, ohne mitten im Wort abzubrechen.
Der /v1/token/truncate Der Endpunkt schneidet Text an einer Wortgrenze auf eine Ziel-Token-Anzahl ab.
curl -X POST https://api.botoi.com/v1/token/truncate \\
-H "Content-Type: application/json" \\
-d '{
"text": "You are a helpful assistant. Summarize the following document in three bullet points. The document discusses the impact of renewable energy adoption on global carbon emissions over the past decade, with specific focus on solar and wind installations in Europe and Southeast Asia.",
"max_tokens": 20,
"model": "claude-3.5-sonnet"
}'
Antwort:
{
"success": true,
"data": {
"truncated": "You are a helpful assistant. Summarize the following document in three bullet points. The",
"tokens": 18,
"was_truncated": true,
"model": "claude-3.5-sonnet",
"max_tokens": 20,
"original_tokens": 48
}
}
Die ursprüngliche Eingabeaufforderung betrug 48 Token. Die API hat es auf 18 Token gekürzt (innerhalb des 20-Token-Budgets).
an einer sauberen Wortgrenze. Der was_truncated Flag sagt Ihnen, ob der Text geändert wurde.
Der original_tokens Das Feld zeigt an, wie viele Token der Volltext enthielt.
Dies ist nützlich, um Systemaufforderungen in knappe Token-Budgets einzupassen und den Chat-Verlauf so zu kürzen, dass er erhalten bleibt innerhalb des Kontextfensters und das Aufteilen von Dokumenten, bevor sie an eine Einbettungs-API gesendet werden.
Erstellen Sie eine Vorflugprüfung für LLM-Anrufe
Die Integration mit dem höchsten Wert: eine Funktion, die Token zählt und mit dem Kontext des Modells vergleicht Fenster und schneidet ab, wenn die Eingabeaufforderung zu lang ist. Dies verhindert sowohl stilles Abschneiden als auch API-Fehler.
const MODEL_LIMITS = {
"gpt-4o": 128000,
"gpt-4o-mini": 128000,
"claude-3.5-sonnet": 200000,
"claude-4-sonnet": 200000,
"llama-3.2": 128000,
};
async function countTokens(text, model = "gpt-4o") {
const res = await fetch("https://api.botoi.com/v1/token/count", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text, model }),
});
const { data } = await res.json();
return data.tokens;
}
async function truncateText(text, maxTokens, model = "gpt-4o") {
const res = await fetch("https://api.botoi.com/v1/token/truncate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text, max_tokens: maxTokens, model }),
});
const { data } = await res.json();
return data;
}
async function preflightCheck(prompt, model = "gpt-4o") {
const limit = MODEL_LIMITS[model];
if (!limit) throw new Error("Unknown model: " + model);
const tokens = await countTokens(prompt, model);
// Reserve 20% of the context window for the model's response
const inputBudget = Math.floor(limit * 0.8);
if (tokens <= inputBudget) {
return { safe: true, tokens, limit, model };
}
// Truncate to fit within the input budget
const result = await truncateText(prompt, inputBudget, model);
return {
safe: false,
original_tokens: tokens,
truncated_tokens: result.tokens,
truncated_text: result.truncated,
limit,
model,
};
}
// Usage
const prompt = buildPromptFromChatHistory(messages);
const check = await preflightCheck(prompt, "claude-3.5-sonnet");
if (!check.safe) {
console.log(
"Prompt truncated from " +
check.original_tokens + " to " +
check.truncated_tokens + " tokens"
);
prompt = check.truncated_text;
}
const response = await callLLM(prompt, "claude-3.5-sonnet");
Die Funktion reserviert 20 % des Kontextfensters für die Antwort des Modells. Wenn die Eingabe passt, dann geht unverändert durch. Wenn es zu groß ist, wird es auf das Eingabebudget gekürzt. Du immer Sie wissen genau, wie viele Token Sie senden.
Schließen Sie dies um jeden LLM-Aufruf in Ihrer Anwendung ein. Es fügt eine HTTP-Anfrage hinzu (zwei, wenn eine Kürzung erfolgt). erforderlich) und eliminiert eine ganze Klasse von Produktionsausfällen.
Anwendungsfälle aus der Praxis
- Kostenschätzung vor API-Aufrufen. Zählen Sie Token in einer Reihe von Eingabeaufforderungen und multiplizieren Sie sie anhand des Modellpreis pro Token und kennen Sie die Gesamtkosten, bevor Sie sich verpflichten. Diese Node.js-Funktion macht es in ein paar Zeilen:
async function estimateCost(text, model = "gpt-4o") {
const tokens = await countTokens(text, model);
// Price per 1M input tokens (March 2026 pricing)
const rates = {
"gpt-4o": 2.50,
"gpt-4o-mini": 0.15,
"claude-3.5-sonnet": 3.00,
"claude-4-sonnet": 4.00,
"llama-3.2": 0.00, // self-hosted
};
const rate = rates[model] || 0;
const cost = (tokens / 1_000_000) * rate;
return {
tokens,
model,
estimated_cost_usd: cost.toFixed(6),
};
}
// Check cost before sending a large document
const estimate = await estimateCost(longDocument, "gpt-4o");
console.log(estimate);
// { tokens: 14320, model: "gpt-4o", estimated_cost_usd: "0.035800" }
- Sofortige Größenvalidierung. Lehnen Sie vom Benutzer übermittelte Eingabeaufforderungen ab, die über Ihre hinausgehen Token-Budget der Anwendung. Verhindern Sie, dass eine einzelne lange Eingabe Ihr gesamtes Ratenlimit verbraucht.
- Chunk-Dokumente für Einbettungen. Teilen Sie lange Dokumente in passende Stücke auf innerhalb des Token-Limits Ihres Einbettungsmodells (normalerweise 512 oder 8.192 Token). Zählen Sie Token pro Chunk, um sicherzustellen, dass keiner den Grenzwert überschreitet.
- Chat-Verlaufsverwaltung. Wenn die Konversationen zunehmen, erhöhen ältere Nachrichten die Gesamtzahl Tokenanzahl über das Kontextfenster hinaus. Zählen Sie die kumulative Token-Gesamtsumme nach jeder Nachricht und Löschen Sie die ältesten Nachrichten, wenn Sie sich dem Limit nähern.
- CI/CD-Pipeline-Wächter. Fügen Sie Ihrer Bereitstellungspipeline einen Token-Zählungsschritt hinzu. Wenn Wenn eine Eingabeaufforderungsvorlage einen definierten Schwellenwert überschreitet, schlägt der Build fehl, bevor er die Produktion erreicht.
Wichtige Punkte
- Die Anzahl der Token variiert je nach Modell. GPT, Claude und Llama tokenisieren denselben Text anders. Geben Sie beim Zählen immer das Zielmodell an.
-
Zwei Endpunkte decken den gesamten Workflow ab.
/v1/token/countsagt es dir die Größe./v1/token/truncatepassend zuschneiden. Beide unterstützen 15 Modelle. - Vorflugkontrollen verhindern Produktionsausfälle. Zählen Sie die Token vor jedem LLM Anruf, um abgeschnittene Antworten, Kontextfensterfehler und Überraschungskosten zu vermeiden.
- Kein Konto erforderlich. Das kostenlose Kontingent ermöglicht 5 Anfragen pro Minute ohne Anmeldung. Holen Sie sich einen API-Schlüssel für höheres Volumen unter botoi.com/api.
Der Vollständige API-Dokumente decken die vollständige Liste der unterstützten Modelle und zusätzlicher Entwickler-Utility-Endpunkte ab.
FAQ
- Wie viele Token enthält ein Wort?
- Im Durchschnitt entspricht ein englisches Wort etwa 1,3 Token. Kurze gebräuchliche Wörter wie „das“ oder „ist“ sind ein Zeichen. Längere oder ungewöhnliche Wörter wie „Authentifizierung“ werden in 2–4 Unterwort-Tokens aufgeteilt. Die genaue Anzahl hängt vom Tokenizer des Modells ab.
- Was ist ein Token in GPT?
- Ein Token ist ein Textblock, den das Modell als einzelne Einheit verarbeitet. GPT-Modelle verwenden einen BPE-Tokenizer (Byte-Pair-Encoding), der Text in Teilwortteile aufteilt. Gewöhnliche Wörter bleiben vollständig, während seltene oder lange Wörter in kleinere Fragmente zerfallen. Satzzeichen und Leerzeichen werden ebenfalls tokenisiert.
- Wie zähle ich Token vor einem API-Aufruf?
- Senden Sie Ihren Text an POST https://api.botoi.com/v1/token/count mit einem optionalen Modellparameter (gpt-4o, claude-3.5-sonnet, llama-3 usw.). Die API gibt die geschätzte Tokenanzahl, Wortanzahl und Zeichenanzahl in einer einzigen Antwort zurück.
- Tokenisieren verschiedene LLMs Text auf die gleiche Weise?
- Nein. GPT-Modelle verwenden die Codierung cl100k_base oder o200k_base. Claude verwendet einen ähnlichen, aber unterschiedlichen BPE-Tokenizer. Lama verwendet SentencePiece. Derselbe Satz führt modellübergreifend zu unterschiedlichen Token-Zählungen. Zählen Sie immer Token mit dem spezifischen Modell, das Sie anrufen möchten.
- Was passiert, wenn Sie das Kontextfenster eines Modells überschreiten?
- Die meisten LLM-APIs geben einen Fehler zurück, wenn die Eingabe das Kontextfenster überschreitet. Einige kürzen die Eingabe stillschweigend, wodurch wichtige Anweisungen oder der Kontext abgeschnitten werden können. Durch Vorabprüfung der Tokenanzahl und entsprechendes Kürzen werden beide Fehlermodi verhindert.
Starte mit botoi zu entwickeln
150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.