Ayer alcanzaste un límite de tokens. No porque tu prompt fuera verboso, sino porque no entendiste cómo funcionan los tokens. Enviéste un documento de 3.000 palabras a Claude, viste cómo procesaba las primeras 2.800 palabras y luego te devolvía una respuesta truncada. El problema no fue tu solicitud. Fue que no tuviste en cuenta los tokens de salida, los prompts del sistema y cómo diferentes modelos cuentan el mismo texto de manera distinta.
La tokenización es cómo los LLM dividen el texto en fragmentos antes de procesarlo. Entiéndelo y dejarás de malgastar créditos de API. Ignóralo y cada integración que construyas se comportará de forma inesperada a escala.
Qué Son Realmente los Tokens
Un token no es una palabra. Esto importa.
En la mayoría del texto en inglés, un token ≈ 4 caracteres o 0.75 palabras. Pero esa proporción se desmorona rápido. La puntuación, los espacios en blanco, los números, el código y el texto no inglés se tokenizan de manera diferente. Una coma puede ser un token. Un número como 1.234.567 podría ser tres o cuatro. La palabra tokenización es un token. El acrónimo CPU a veces es uno, a veces tres, dependiendo del modelo.
Diferentes modelos usan diferentes tokenizadores. GPT-4o usa un tokenizador diferente a Claude Sonnet 4. El tokenizador cl100k_base de OpenAI cuenta el texto de una manera. El tokenizador de Anthropic lo cuenta de otra. El mismo prompt puede costar 150 tokens en GPT-4o y 140 tokens en Claude, o viceversa.
Esta inconsistencia es la razón por la que no puedes estimar el recuento de tokens mentalmente. Necesitas medir.
Tokens de Entrada vs. Salida (y Por Qué Ambos Importan)
Los límites de tokens tienen dos caras: lo que envías y lo que regresa.
Tu entrada incluye el prompt del sistema, el mensaje del usuario, cualquier historial de conversación y cualquier contexto que hayas añadido. Tu salida es la respuesta del modelo. La mayoría de las plataformas los cobran por separado; los tokens de salida a menudo cuestan más que los tokens de entrada. GPT-4o, por ejemplo, cobra 5 $ por 1 millón de tokens de entrada y 15 $ por 1 millón de tokens de salida. Esa proporción de 3:1 cambia cómo deberías estructurar tus solicitudes.
Si estás resumiendo documentos, esos tokens son predominantemente de entrada. Si estás generando código, los tokens de salida dominan. Si estás teniendo una conversación de varios turnos donde repites el contexto en cada turno, estás pagando costos de tokens de entrada repetidamente por la misma información.
Límites de Tokens en Producción: Dónde Fallan
Las ventanas de contexto han crecido — Claude 3.5 Sonnet soporta 200k tokens, GPT-4o soporta 128k. Pero el crecimiento no significa que tus límites hayan desaparecido. Significa que tus límites son diferentes ahora.
Este es el patrón real: a medida que tu ventana crece, tus prompts crecen para llenarla. Los ingenieros empiezan a incluir bases de código completas en lugar de fragmentos. Los analistas incluyen conjuntos de datos completos en lugar de muestras. Los abogados incluyen documentos completos en lugar de extractos. El costo por solicitud aumenta. La latencia de respuesta se incrementa. Y alrededor del 80-85% de tu contexto disponible, la mayoría de los modelos empiezan a rendir peor, no mejor. Pierden el foco en contextos largos.
El límite práctico no es el máximo técnico. Es el punto donde el costo o la latencia se vuelven inaceptables, o donde la precisión del modelo disminuye.
Cómo Contar Tokens Sin Adivinar
Usa el propio tokenizador del modelo. No estimas.
Para modelos de OpenAI, usa la biblioteca tiktoken:
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
text = "Tu texto del prompt aquí"
tokens = enc.encode(text)
print(f"Conteo de tokens: {len(tokens)}")
print(f"Costo estimado (entrada): ${len(tokens) * 0.000005:.4f}")
Para modelos de Anthropic, usa la API count_tokens o su biblioteca Python:
from anthropic import Anthropic
client = Anthropic()
messsage = client.messages.count_tokens(
model="claude-3-5-sonnet-20241022",
system="Eres un asistente útil.",
messages=[
{"role": "user", "content": "Tu texto del prompt aquí"}
]
)
print(f"Conteo de tokens: {message.input_tokens}")
Esto no es opcional. Cuando envías una integración, necesitas recuentos exactos, no aproximaciones. La diferencia entre «aproximadamente 100 tokens» y «106 tokens» es la diferencia entre permanecer bajo tu límite de lote y fallar a las 3 a.m.
Estrategias Que Realmente Ahorran Tokens
Ahorrar tokens no se trata de escribir prompts más cortos. Se trata de estructura.
1. No repitas contexto en conversaciones multi-turno. Si estás construyendo un chatbot, envía el prompt del sistema una vez y confía en la memoria de la conversación. Cada turno que lo repites, estás desperdiciando tokens. Al construir un flujo de servicio al cliente donde procesas muchas solicitudes separadas, sí, incluye el contexto cada vez, pero mantenlo mínimo.
2. Usa ejemplos estratégicamente. Los prompts de few-shot (incluyendo ejemplos) son baratos en el momento pero caros a largo plazo. Una conversación con ejemplos cuesta más inicialmente que una sin ejemplos (zero-shot). Pero si esos ejemplos reducen las tasas de error en un 30%, el costo en tokens vale la pena. Si cambian la salida en un 2%, son tokens desperdiciados. Mide el intercambio.
Mal enfoque:
Eres un clasificador de correos electrónicos. Clasifica cada correo como "ventas", "soporte" o "spam".
Ejemplo 1: "¡Mira nuestro nuevo producto!" → ventas
Ejemplo 2: "Tu pedido está listo para ser recogido" → soporte
Ejemplo 3: "Haz clic aquí para dinero gratis" → spam
Ejemplo 4: "Oferta especial en el interior" → ventas
Ejemplo 5: "Tu contraseña ha sido restablecida" → soporte
Clasifica este correo: [entrada del usuario]
Mejor enfoque (para una sola clasificación):
Clasifica este correo como "ventas", "soporte" o "spam": [entrada del usuario]
El segundo ahorra 80 tokens. Si estás clasificando miles de correos, eso es una reducción de costos significativa. Añade ejemplos de nuevo solo si tu tasa de error justifica el costo.
3. Usa la summarización para comprimir el contexto. Si necesitas pasar el historial de un documento o análisis previo a una nueva solicitud, resúmelo primero. El resumen cuesta tokens de entrada inicialmente pero ahorra tokens en cada solicitud posterior que necesite ese contexto.
4. Agrupa solicitudes similares. En lugar de enviar cinco llamadas API separadas para cinco prompts diferentes, combínalas cuando sea posible. Una solicitud para clasificar diez correos cuesta menos tokens que diez solicitudes para clasificar un correo cada una.
Qué Hacer Hoy
Elige una integración o flujo de trabajo que construiste en el último mes. Pasa los prompts reales a través del contador de tokens de tu modelo. Calcula los costos reales de tokens de entrada y salida por solicitud. Si estás ejecutando esto a escala, multiplica por tu volumen de solicitudes y tu costo por token. Descubrirás que o bien tienes espacio para añadir contexto y mejorar la calidad, o que necesitas cortar sin piedad. La mayoría de la gente descubre que ha estado sobre-tokenizando masivamente porque estaba adivinando los recuentos.
Empieza a medir. Todo lo demás vendrá después.