Menu

Tokens y ventana de contexto: cómo lee la IA

Los modelos de IA leen el texto como tokens, pequeños trozos de palabras, y solo pueden abarcar un número limitado a la vez: la ventana de contexto. Aprende cómo funcionan ambos y qué hacer cuando un chat se alarga.

Puedes editar cada prompt de esta página y abrirlo después en ChatGPT, Claude u otra app de IA.

Los modelos de lenguaje de IA no leen letras ni palabras. Leen tokens: pequeños trozos de texto, a menudo una palabra entera, a veces parte de una. Y solo pueden recibir un número limitado de tokens a la vez, un límite que se llama ventana de contexto. Esas dos ideas explican por qué las herramientas de IA tienen los precios que tienen, por qué los chats largos empiezan a olvidar las primeras instrucciones y por qué a un modelo le puede costar contar las letras de una palabra que acaba de escribir bien.

¿Qué es un token en IA?

Antes de que el modelo vea tu prompt, un programa llamado tokenizador divide el texto en piezas de un vocabulario fijo y convierte cada pieza en un número. El modelo trabaja solo con esos números, y escribe su respuesta de la misma forma, un token a la vez, que la app vuelve a convertir en texto.

El vocabulario se aprende a partir de grandes cantidades de texto, así que las palabras comunes suelen ser un solo token y las más raras se dividen en varias piezas conocidas. Un espacio suele ir pegado al principio de la palabra que le sigue. Una frase en inglés podría dividirse más o menos así:

Token ization isn 't magic .

Esa división es ilustrativa. Cada familia de modelos tiene su propio tokenizador, y la misma frase puede salir en un número distinto de piezas en cada uno. Muchos proveedores publican una herramienta de tokenización o una API para contar tokens, así puedes comprobar las cifras reales.

Las imágenes, el audio y los archivos también se convierten en tokens cuando un modelo los acepta, y por eso una captura adjunta consume parte del mismo presupuesto que tu texto.

¿Cuántos tokens tiene una palabra?

Para textos en inglés, una regla práctica muy usada es de unos cuatro caracteres por token, o unas tres cuartas partes de una palabra. Según esa estimación, 1.000 tokens son unas 750 palabras en inglés, y un artículo de 3.000 palabras son unos 4.000 tokens.

La proporción cambia según el contenido:

  • Otros idiomas suelen necesitar más tokens para el mismo significado. Los tokenizadores se entrenan con datos en los que el inglés está muy representado, así que las palabras inglesas reciben tokens compactos, mientras que los textos en español, japonés, coreano, árabe, hindi y muchos otros idiomas se dividen en más piezas. La diferencia depende del tokenizador y se ha reducido en los más nuevos, pero no ha desaparecido.
  • El código gasta tokens en la sangría, los corchetes, los operadores y los identificadores largos, así que un archivo suele costar más tokens de lo que sugiere su número de palabras.
  • Los números, las URL y las cadenas poco comunes, como identificadores y hashes, tienden a dividirse en muchos tokens pequeños.

Por qué importan los tokens

Coste. Las API cobran por token, con precios distintos para los tokens que envías y los que escribe el modelo. En un chat, toda la conversación se vuelve a enviar con cada mensaje nuevo, así que una conversación larga cuesta más por mensaje que una corta.

Límites. Un modelo tiene una ventana de contexto para todo lo que lee y escribe en una petición, y a menudo un tope aparte para la extensión de una sola respuesta. En la API puedes fijar ese tope tú mismo, y con la API de Anthropic es obligatorio: max_tokens es un parámetro requerido.

Velocidad. La respuesta se produce un token tras otro, así que una respuesta más larga tarda proporcionalmente más en terminar.

Tareas de ortografía. Como el modelo ve una palabra como magic como una o dos unidades y no como cinco letras, las tareas que dependen de caracteres individuales, como contar letras, invertir una palabra o buscar palabras de una longitud exacta, le resultan más difíciles de lo que parecen. Los modelos más nuevos manejan mejor muchas de estas tareas, pero cuando los caracteres importan, verifica la respuesta o pídele al modelo que primero escriba la palabra letra por letra.

¿Qué es una ventana de contexto?

La ventana de contexto es el número máximo de tokens que un modelo puede tener en cuenta en una sola petición. Piensa en ella como la memoria de trabajo del modelo: todo lo que el modelo puede usar para escribir su respuesta tiene que caber dentro a la vez, incluido:

  • el prompt de sistema, con las instrucciones propias de la app y las tuyas
  • la conversación hasta el momento, cada mensaje del usuario y cada respuesta
  • los archivos adjuntos, los documentos pegados y los resultados de búsquedas o herramientas
  • la respuesta que se está escribiendo

Lo que queda fuera de la ventana no existe para el modelo. No hay una memoria de fondo donde pueda consultar cosas. El tamaño de la ventana de contexto varía mucho entre modelos y no deja de crecer, así que consulta la documentación de tu proveedor para el modelo que uses en lugar de fiarte de una cifra sacada de un artículo.

El modelo tampoco guarda nada entre peticiones. Lo que en un chat parece memoria es la app enviando toda la conversación otra vez cada vez. Las funciones de memoria de las apps de chat funcionan igual: la app guarda notas sobre ti, o busca en tus chats anteriores, e inserta lo que encuentra en el contexto de los chats nuevos.

Qué pasa cuando un chat se alarga

Cuando una conversación supera la ventana de contexto, algo tiene que ceder. Según la app, se descartan los mensajes más antiguos, las partes antiguas se sustituyen por un resumen o se te avisa de que el chat llegó a su límite y conviene empezar uno nuevo. En todos los casos, los detalles del principio, incluidas las instrucciones que diste en el primer mensaje, pueden dejar de influir en las respuestas.

Una ventana llena no es el único problema. Cuanto más material tiene el modelo delante, más cosas puede pasar por alto, y en un chat largo las decisiones del principio compiten con todo lo que se ha dicho después. Los síntomas incluyen respuestas que ignoran una restricción que fijaste antes, código que vuelve a una versión que ya habías corregido o un modelo que repite una idea que descartaste.

Trabajar dentro de la ventana de contexto

Empieza un chat nuevo para cada tarea. Un chat nuevo con un primer mensaje claro suele superar a un chat largo que ha ido derivando por varios temas.

Lleva un resumen contigo. Cuando un chat ha acumulado decisiones útiles, pide un resumen escrito para pegarlo en un chat nuevo y continúa allí. Rellena los huecos de abajo según tu trabajo.

Continuar en un chat nuevo
Fill in
Este chat se está alargando. Escribe un resumen que pueda pegar en un chat nuevo para continuar el trabajo. Incluye: el objetivo, las decisiones que tomamos y por qué, la versión actual de el esquema de la base de datos y las preguntas abiertas. Que el resumen no pase de 200 palabras, sin contar el esquema de la base de datos.
Try it
Example replyReplies vary between models and runs.

Objetivo: una base de datos para una pequeña app de biblioteca, guardada en SQLite.

Decisiones:

  • Los préstamos tienen su propia tabla, así se conserva todo el historial de préstamos.
  • Un libro cuenta como disponible cuando no tiene ningún préstamo con returned_at vacío.

Esquema actual:

CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT NOT NULL, author TEXT NOT NULL);
CREATE TABLE members (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE);
CREATE TABLE loans (
  id INTEGER PRIMARY KEY,
  book_id INTEGER NOT NULL REFERENCES books(id),
  member_id INTEGER NOT NULL REFERENCES members(id),
  loaned_at TEXT NOT NULL,
  returned_at TEXT
);

Preguntas abiertas:

  • ¿Hacen falta multas por retraso?
  • ¿La biblioteca debería registrar varios ejemplares del mismo libro?

Pega solo lo que necesita la tarea. La función con el error y el código que la llama, no todo el repositorio. La cláusula del contrato en cuestión, no las cuarenta páginas. Menos material deja menos cosas que pasar por alto.

Pon la pregunta después del material largo y repite lo importante. Cuando pegues un documento largo, haz tu pregunta al final, después de él, y repite ahí las restricciones clave. Así la instrucción queda junto al punto donde el modelo empieza a escribir.

Divide un documento demasiado largo para un solo mensaje. Algunas apps limitan cuánto puedes pegar en un mensaje aunque la ventana del modelo pudiera contener más. Enviar el documento por partes esquiva el límite del mensaje, pero no la ventana de contexto: cada parte sigue contando. Dile al modelo desde el principio que no responda hasta que lo hayas enviado todo.

Fill in
Voy a enviarte un documento largo en 3 partes. Después de cada parte, responde solo "Recibida la parte N de 3" y nada más. No resumas ni respondas nada hasta que haga mi pregunta. Parte 1 de 3: """ [pega la parte 1] """
Try it
Example replyReplies vary between models and runs.

Recibida la parte 1 de 3

Cuenta los tokens cuando importe. Si estás construyendo con una API, cuenta antes de enviar. La biblioteca de código abierto tiktoken de OpenAI tokeniza texto con los tokenizadores de OpenAI, y la API de Anthropic tiene un endpoint para contar tokens. Las cifras del tokenizador de un proveedor son solo una estimación para el de otro.

import tiktoken

enc = tiktoken.get_encoding("o200k_base")  # one of OpenAI's tokenizers
tokens = enc.encode("Tokenization isn't magic.")
print(len(tokens))
print([enc.decode([t]) for t in tokens])

Cuando construyes una app alrededor de un modelo, decidir qué entra en la ventana y en qué orden se convierte en un problema de diseño en sí mismo. Ingeniería de contexto cubre ese tema, y encadenamiento de prompts muestra cómo dividir un trabajo grande en pasos que quepan con holgura. Para ver cómo encaja un solo mensaje en toda la entrada, consulta qué es un prompt.

Preguntas frecuentes

¿Qué es un token en IA?

Un token es la unidad de texto que un modelo de lenguaje lee y escribe. Puede ser una palabra común completa, parte de una palabra más larga, un signo de puntuación o un espacio. Antes de que el modelo vea tu prompt, un tokenizador lo divide en tokens y convierte cada uno en un número, y el modelo genera su respuesta un token a la vez.

¿Cuántas palabras son 1.000 tokens?

Para el inglés, una regla práctica habitual es de unos cuatro caracteres por token, lo que da unas 750 palabras por cada 1.000 tokens. La cifra real depende del tokenizador del modelo y del texto. El código, los números y muchos idiomas distintos del inglés, incluido el español, usan más tokens para la misma cantidad de contenido.

¿Qué es una ventana de contexto?

La ventana de contexto es el número máximo de tokens que un modelo puede tener en cuenta en una petición. Tiene que contener el prompt de sistema, la conversación hasta el momento, los archivos adjuntos o resultados de herramientas y la respuesta que el modelo está escribiendo. Lo que queda fuera no existe para el modelo.

¿Qué pasa cuando un chat supera la ventana de contexto?

La app tiene que hacer sitio. Según la app, descarta los mensajes más antiguos, los sustituye por un resumen o te avisa de que la conversación llegó a su límite. En cualquier caso, las instrucciones y los detalles del principio del chat pueden dejar de influir en las respuestas, y por eso los chats largos a veces parecen olvidar cosas.

¿ChatGPT o Claude recuerdan mis chats anteriores?

El modelo en sí, no. Cada respuesta se genera a partir de lo que hay en la ventana de contexto en esa petición. Algunas apps tienen funciones de memoria que guardan notas sobre ti o buscan en tus chats anteriores y añaden lo que encuentran a los chats nuevos, y los proyectos pueden incluir archivos e instrucciones compartidos, pero eso es la app poniendo texto en el contexto, no el modelo recordando.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR