El conteo de tokens te permite determinar el número de tokens en un mensaje antes de enviarlo a Claude. Esto te ayuda a tomar decisiones informadas sobre tus prompts y tu uso. Con el conteo de tokens, puedes:
Esta función es elegible para Zero Data Retention (ZDR). Cuando tu organización tiene un acuerdo de ZDR, los datos enviados a través de esta función no se almacenan después de que se devuelve la respuesta de la API.
El endpoint de conteo de tokens acepta la misma lista estructurada de entradas que se usa para crear un mensaje, incluyendo compatibilidad con indicaciones del sistema, herramientas, imágenes y PDFs. La respuesta contiene el número total de tokens de entrada.
El conteo de tokens debe considerarse una estimación. En algunos casos, el número real de tokens de entrada utilizados al crear un mensaje puede diferir en una pequeña cantidad.
Los conteos de tokens pueden incluir tokens agregados automáticamente por Anthropic para optimizaciones del sistema. No se te factura por los tokens agregados por el sistema. La facturación refleja únicamente tu contenido.
Todos los modelos activos admiten el conteo de tokens, incluido Claude Sonnet 5.
Claude Opus 4.7 y los modelos Opus posteriores, Claude Fable 5, Claude Mythos 5, Claude Mythos Preview y Claude Sonnet 5 usan un tokenizador más reciente. El mismo texto de entrada produce aproximadamente un 30 % más de tokens que en modelos anteriores. Vuelve a contar los prompts con el modelo que planeas usar en lugar de reutilizar conteos medidos con modelos anteriores.
client = anthropic.Anthropic()
response = client.messages.count_tokens(
model="claude-opus-4-8",
system="You are a scientist",
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(response.json()){ "input_tokens": 14 }Los conteos de tokens de herramientas de servidor solo aplican a la primera llamada de muestreo.
client = anthropic.Anthropic()
response = client.messages.count_tokens(
model="claude-opus-4-8",
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
}
},
"required": ["location"],
},
}
],
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)
print(response.json()){ "input_tokens": 403 }import base64
import httpx
image_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image_media_type = "image/jpeg"
image_data = base64.standard_b64encode(httpx.get(image_url).content).decode("utf-8")
client = anthropic.Anthropic()
response = client.messages.count_tokens(
model="claude-opus-4-8",
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image_media_type,
"data": image_data,
},
},
{"type": "text", "text": "Describe this image"},
],
}
],
)
print(response.json()){ "input_tokens": 1551 }Consulta cómo se calcula la ventana de contexto con el pensamiento extendido para obtener más detalles
client = anthropic.Anthropic()
response = client.messages.count_tokens(
model="claude-sonnet-4-6",
thinking={"type": "enabled", "budget_tokens": 16000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
},
{
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "This is a nice number theory question. Let's think about it step by step...",
"signature": "EuYBCkQYAiJAgCs1le6/Pol5Z4/JMomVOouGrWdhYNsH3ukzUECbB6iWrSQtsQuRHJID6lWV...",
},
{
"type": "text",
"text": "Yes, there are infinitely many prime numbers p such that p mod 4 = 3...",
},
],
},
{"role": "user", "content": "Can you write a formal proof?"},
],
)
print(response.json()){ "input_tokens": 88 }El conteo de tokens admite PDFs con las mismas limitaciones que la API de Messages.
import base64
import anthropic
client = anthropic.Anthropic()
with open("/path/to/document.pdf", "rb") as pdf_file:
pdf_base64 = base64.standard_b64encode(pdf_file.read()).decode("utf-8")
response = client.messages.count_tokens(
model="claude-opus-4-8",
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_base64,
},
},
{"type": "text", "text": "Please summarize this document."},
],
}
],
)
print(response.json()){ "input_tokens": 2188 }Claude Fable 5 y Claude Mythos 5 usan el tokenizador introducido con Claude Opus 4.7, que produce aproximadamente un 30 % más de tokens que los modelos anteriores a Claude Opus 4.7 para el mismo texto. El endpoint de conteo de tokens devuelve el conteo según el tokenizador del model que pases, así que para medir la diferencia en tu carga de trabajo, cuenta la misma solicitud dos veces: una con tu modelo actual y otra con model: "claude-fable-5" (o "claude-mythos-5"), y compara los dos valores de input_tokens.
Facturación y migración: El uso y la facturación en Claude Fable 5 y Claude Mythos 5 reflejan los conteos de este tokenizador. Si estás migrando desde un modelo anterior a Claude Opus 4.7, el mismo contenido consume aproximadamente un 30 % más de tokens. Al migrar una carga de trabajo a Claude Fable 5 y Claude Mythos 5, no reutilices conteos de tokens medidos en un modelo anterior a Claude Opus 4.7 para estimar costos o el ajuste a la ventana de contexto. Cuenta tus prompts con model: "claude-fable-5" (o "claude-mythos-5").
El conteo de tokens es gratuito, pero está sujeto a límites de velocidad de solicitudes por minuto según tu nivel de uso. Si necesitas límites más altos, usa Request rate limit increase en la página Limits.
| Nivel de uso | Solicitudes por minuto (RPM) |
|---|---|
| Start | 2,000 |
| Build | 4,000 |
| Scale | 8,000 |
El conteo de tokens y la creación de mensajes tienen límites de velocidad separados e independientes. El uso de uno no cuenta para los límites del otro.
Lee la referencia completa de la API para el endpoint de conteo de tokens.
Usa los conteos de tokens para mantener los prompts dentro de la ventana de contexto de un modelo.
Verifica los conteos de tokens antes de enviar una solicitud para mantenerte dentro de tu nivel de uso.
Reduce el costo y la latencia en prompts repetidos almacenando en caché los prefijos de los prompts.
Was this page helpful?