Débutant25 min20 XP
Objectifs de cette leçon
- Utiliser l'endpoint /v1/messages/count_tokens
- Comprendre les tokenizers par modèle
- Piloter les décisions de routage
Compter les tokens avec l'API 📊
L'endpoint de comptage
L'API /v1/messages/count_tokens accepte la même structure que l'endpoint Messages :
curl https://api.anthropic.com/v1/messages/count_tokens \ --header "x-api-key: $ANTHROPIC_API_KEY" \ --header "content-type: application/json" \ --header "anthropic-version: 2023-06-01" \ --data '{ "model": "claude-opus-4-8", "system": "Tu es un développeur senior", "messages": [{ "role": "user", "content": "Crée une API REST avec auth JWT" }] }'
{ "input_tokens": 28 }
Ce qui est compté
| Élément | Exemple | Tokens |
|---|---|---|
| Message utilisateur | "Crée une API REST" | ~6 |
| Système (system) | "Tu es un développeur..." | ~15 |
| Outils (tools) | Schéma JSON d'un outil | ~200-400 |
| Images | Image 1024x1024 | ~1600 |
| Document 10 pages | ~2000-5000 | |
| Réflexion étendue | Budget de 16000 tokens | Variable |
Exemples pratiques
Avec des outils
const count = await client.messages.countTokens({ model: "claude-opus-4-8", tools: [{ name: "get_weather", description: "Obtenir la météo", input_schema: { type: "object", properties: { location: { type: "string" } }, required: ["location"], }, }], messages: [{ role: "user", content: "Météo à Paris ?" }], }); // { input_tokens: 403 }
💡 Les outils consomment beaucoup de tokens car le schéma JSON est détaillé.
Avec des images
const count = await client.messages.countTokens({ model: "claude-opus-4-8", messages: [{ role: "user", content: [ { type: "image", source: { type: "base64", media_type: "image/jpeg", data: imageData } }, { type: "text", text: "Décris cette image" }, ], }], }); // { input_tokens: 1551 }
Avec la réflexion étendue
const count = await client.messages.countTokens({ model: "claude-sonnet-4-6", thinking: { type: "enabled", budget_tokens: 16000 }, messages: [ { role: "user", content: "Prouve qu'il existe une infinité de nombres premiers" }, { role: "assistant", content: [ { type: "thinking", thinking: "Réflexion...", signature: "..." }, { type: "text", text: "Voici la preuve..." }, ]}, { role: "user", content: "Écris une preuve formelle" }, ], }); // { input_tokens: 88 }
⚠️ Les blocs de réflexion des tours précédents sont ignorés. Seule la réflexion du tour actuel compte.
Limites de débit
| Palier | Requêtes/minute |
|---|---|
| Start | 2 000 |
| Build | 4 000 |
| Scale | 8 000 |
⚠️ Le comptage de tokens et la création de messages ont des limites séparées et indépendantes.
Résumé
- L'endpoint
/v1/messages/count_tokensest gratuit - Il accepte le même format que Messages (outils, images, PDF, réflexion)
- Le comptage est une estimation (pas exact)
- Les tokens système ne sont pas facturés
- Utilisez-le pour piloter vos décisions de routage et d'optimisation
Comptage de tokens via l'API
GratuitRequête :
curl https://api.anthropic.com/v1/messages/count_tokens \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "content-type: application/json" \
--header "anthropic-version: 2023-06-01" \
--data '{
"model": "claude-opus-4-8",
"system": "Tu es un développeur senior",
"messages": [{
"role": "user",
"content": "Crée une API REST"
}]
}'{ "input_tokens": 28 }
Inclut le prompt système + message utilisateur
Tokenizer : Ancien — Multiplicateur : 1x