Definición
Un token en el contexto de los modelos de lenguaje es la unidad mínima que un LLM procesa. No es una palabra entera ni un carácter individual: es una pieza intermedia generada por un proceso llamado tokenización, diseñada para equilibrar tamaño del vocabulario y capacidad de representar cualquier texto.
Una intuición rápida con cifras reales (tokenizador de GPT-4 / Claude aproximado):
- "Hola mundo" → 3 tokens.
- "antonioecheverria.es" → 7 tokens.
- "Inteligencia artificial" → 5 tokens.
- "🚀" (emoji) → 2-3 tokens.
- Un párrafo típico en español → 1 token ≈ 0,75 palabras.
Los tokens importan porque los modelos cobran por token, generan por token, y tienen un límite máximo de tokens en su ventana de contexto. Entender la tokenización es entender el coste, la latencia y la viabilidad técnica de cualquier aplicación con LLMs.
Cómo funciona
La tokenización moderna se hace casi siempre con BPE (Byte-Pair Encoding) o variantes como WordPiece o SentencePiece. El algoritmo (simplificado):
- Empieza con caracteres individuales como vocabulario base.
- Cuenta pares más frecuentes en el corpus de entrenamiento del tokenizador.
- Fusiona el par más frecuente en un nuevo token.
- Repite hasta alcanzar el tamaño deseado de vocabulario (típicamente 30k–100k tokens).
Resultado: palabras comunes y combinaciones frecuentes quedan como tokens únicos. Palabras raras o únicas se rompen en piezas más pequeñas.
Ejemplo con el tokenizador cl100k_base (GPT-4, ~100k tokens de vocabulario):
"hello world"
→ tokens: ["hello", " world"]
→ ids: [15339, 1917]
"antoniofernandez"
→ tokens: ["ant", "onio", "fern", "andez"]
→ ids: [519, 6263, 50118, 32179]
El nombre común "world" es un token único. Un nombre propio compuesto se trocea.
Por eso un texto en inglés ocupa menos tokens que el mismo texto en español, y este menos que en chino o árabe. Los tokenizadores se entrenaron mayoritariamente con corpus inglés.
Ejemplo práctico
En antonioecheverria.es tenemos un bot que responde preguntas sobre el diccionario. Cada interacción:
- Prompt del sistema: 180 tokens (instrucciones, contexto).
- Pregunta del usuario: ~30 tokens.
- Contexto recuperado por RAG: hasta 1.500 tokens.
- Respuesta generada: ~200 tokens.
Total por interacción: ~1.910 tokens.
Con un modelo a 1 €/MTok input y 5 €/MTok output:
- Coste input: (180+30+1500) × 1/1.000.000 = 0,00171 €.
- Coste output: 200 × 5/1.000.000 = 0,001 €.
- Total ≈ 0,003 € por interacción.
Mil interacciones diarias = 3 €/día = 90 €/mes. Eso es la economía real de un chatbot. Cambiar de modelo o ajustar el prompt para ahorrar tokens puede dividir esa factura por 5 o multiplicarla por 10.
Tipos de tokenizadores
- BPE clásico: usado por GPT-2.
- cl100k_base / o200k_base: tokenizadores de OpenAI (GPT-4, GPT-5). 100k y 200k entradas respectivamente.
- SentencePiece: usado por Llama, Mistral, Gemini. Trata el texto como bytes UTF-8.
- WordPiece: usado por BERT y derivados.
- Tiktoken (librería): implementación Rust eficiente de los tokenizadores de OpenAI.
Cada modelo usa el suyo. Un texto puede ocupar 1.000 tokens en GPT-4 y 1.200 en Llama 3. Por eso comparar precios sin ajustar por tokenización engaña.
Por qué no se usa la palabra como token
Si tokenizáramos por palabras enteras, el vocabulario crecería sin límite (cada nombre propio, cada palabra técnica, cada idioma añadiría miles de tokens). Resultado: matrices de embedding gigantescas y mala generalización.
Si tokenizáramos por caracteres, las secuencias serían 4-5× más largas, y el modelo tendría que aprender estructura léxica desde cero. La atención escala cuadráticamente, lo cual sería inviable.
BPE encuentra el equilibrio: palabras comunes son tokens únicos, palabras raras se rompen en piezas significativas, y el vocabulario se mantiene en torno a 50k-200k entradas.
Cuánto cuesta un texto
Reglas orientativas para estimar rápido en español:
- 1 palabra ≈ 1,3-1,5 tokens.
- 1 párrafo (60 palabras) ≈ 80-90 tokens.
- 1 página A4 (500 palabras) ≈ 700-750 tokens.
- 1 libro de 300 páginas ≈ 200.000-220.000 tokens.
Para inglés divide por ~1,3. Para chino multiplica por ~2.
Hoy hay herramientas online para contar tokens exactos (OpenAI Tokenizer, Anthropic Tokenizer) y librerías (tiktoken en Python/Node).
Errores comunes
- Confundir palabra con token: "antonioecheverria" parece una palabra, pero son 5-7 tokens.
- Asumir tokenizadores iguales entre modelos: el coste por mil tokens es distinto si el tokenizador comprime más o menos.
- Olvidar tokens "invisibles": el system prompt, el formato de chat (
<|im_start|>, etc.), los separadores cuentan. - Ignorar overhead en streaming: cada chunk añade pequeños tokens de control.
- No optimizar prompts: 30% del prompt típico es redundante. Comprimir reduce coste y mejora latencia.
- Cortar contenido por caracteres en lugar de tokens: puede romper tokens UTF-8 y degradar generación.
Cómo optimizar tokens
- System prompt corto y denso: cada palabra cuenta.
- Few-shot examples mínimos: usar solo los necesarios.
- Resumir documentos antes de pasarlos al contexto si solo necesitas extracto.
- Cachear lo que se repita entre llamadas (prompt caching de Anthropic y OpenAI).
- Elegir modelo adecuado: a veces Haiku/Mini hace el trabajo a 1/20 del coste de Opus/GPT-5.
- Tokenizar antes para validar que el contenido cabe.
Cuándo prestarle atención
Sí, mide tokens al detalle cuando:
- Estás construyendo producto con LLM y los costes empiezan a escalar.
- Tienes ventanas de contexto cerca del límite (Claude 200k, GPT 1M+).
- Optimizas latencia: menos tokens = respuesta más rápida.
- Eliges entre modelos: el tokenizador afecta al precio efectivo.
Menos crítico cuando:
- Estás prototipando casualmente con bajo volumen.
- Tu caso de uso es transaccional simple con prompts fijos.
Referencias
- OpenAI Tokenizer — herramienta interactiva para contar tokens exactos
- Anthropic Tokenizer — tokenizador oficial de Claude
- tiktoken (Python/Node) — librería oficial de tokenización de OpenAI