¿Qué es un token?
Un token es la unidad de texto que procesa un modelo. Define cómo se divide el input, cuánto contexto cabe y cuánto cuesta usar la API.
¿Qué es?
Un token es la unidad de texto que procesa un modelo de lenguaje. No equivale necesariamente a una palabra completa: puede ser una palabra, una parte de una palabra, un signo de puntuación o incluso un espacio, según el tokenizador que use el modelo.
Esto importa porque los modelos no leen texto "tal cual". Antes de inferir o generar una respuesta, convierten el texto en tokens. Todo lo que haces con un LLM pasa por esa capa: el prompt de entrada, la respuesta, el límite de contexto y, normalmente, el costo de la API.
Si entiendes qué es un token, entiendes mejor por qué un texto corto a veces consume más de lo esperado, por qué dos modelos pueden contar distinto el mismo input y por qué optimizar prompts no es solo una cuestión de estilo.
Modelo mental
Piensa en un token como una ficha intermedia entre el texto humano y los números que procesa el modelo. Tú escribes una frase. El tokenizador la rompe en piezas. Luego el modelo trabaja sobre esas piezas, no sobre palabras "naturales".
Por ejemplo, la frase tokenización en español podría dividirse en fragmentos como token, ización, en, espa, ñol. No siempre será exactamente así, porque cada familia de modelos usa reglas y vocabularios distintos, pero la idea central es esa: el modelo opera sobre fragmentos frecuentes, no sobre gramática humana.
Dos consecuencias prácticas salen de aquí:
- Más tokens significan más costo y más latencia.
- La ventana de contexto se mide en tokens, no en palabras ni en caracteres.
¿Cómo se usa?
En la práctica, trabajas con tokens cada vez que preparas prompts, calculas costos o verificas si una conversación cabe dentro de la ventana de contexto de un modelo.
Una forma común de inspeccionarlos es usar una librería de tokenización:
import tiktoken
encoding = tiktoken.get_encoding("cl100k_base")
text = "La tokenización define costo, contexto y latencia."
tokens = encoding.encode(text)
print(f"Total de tokens: {len(tokens)}")
print(tokens)Ese conteo te ayuda a responder preguntas muy concretas:
- ¿Mi prompt cabe junto con la respuesta esperada?
- ¿Cuánto me costará procesar este documento?
- ¿Conviene resumir, recortar o fragmentar el input?
Ojo con esto: el mismo texto puede dar conteos distintos en modelos diferentes. La tokenización no es universal. Si vas a medir costos o límites reales, usa siempre el tokenizador compatible con el modelo que vas a llamar.
¿Cuándo usarlo / cuándo no?
Úsalo como concepto de diseño cuando:
- Necesitas estimar costos de uso de modelos.
- Estás depurando prompts que exceden la ventana de contexto.
- Quieres dividir documentos en chunks para RAG sin cortar demasiado contenido útil.
- Comparas modelos y necesitas entender diferencias de latencia o capacidad efectiva.
No te obsesiones con el detalle cuando:
- Estás haciendo una prueba rápida y el volumen de texto es pequeño.
- La aplicación ya controla bien límites y costos en una capa superior.
- Necesitas precisión semántica, no microoptimización de fragmentos de texto.
- El problema real está en la calidad del prompt, no en ahorrar 5 o 10 tokens.
Historia y evolución
Ver historia
La idea de dividir texto en unidades procesables existe desde mucho antes de los LLMs modernos. En NLP clásico se trabajaba con palabras completas, caracteres o subpalabras, según la tarea.
El cambio importante llegó con métodos de subword tokenization como Byte Pair Encoding (BPE), WordPiece y SentencePiece. Estos enfoques permitieron manejar vocabularios grandes sin depender de una lista cerrada de palabras completas, lo que redujo el problema de términos desconocidos y mejoró el soporte para distintos idiomas.
Los LLMs actuales heredan esa lógica: convierten texto en piezas reutilizables que equilibran eficiencia, cobertura de vocabulario y costo computacional.