Optimización, pruebas y seguridad

Optimización de tokens: coste, ventanas de contexto y compresión

Optimización de tokens para prompts de LLM. Cómo funcionan los tokens y las ventanas de contexto, cómo contarlos correctamente y cómo comprimir prompts sin perder significado.

Traducido del original en inglés. El código, los prompts y la salida de los modelos se mantienen en inglés.

Los modelos de lenguaje leen y escriben tokens, y se te factura por ambos. Optimizar tokens significa gastarlos donde mejoran la respuesta y en ningún otro sitio. Bien hecho, reduce el coste y la latencia y a menudo mejora la calidad, porque un prompt enfocado es más fácil de seguir.

Qué es un token

Un token es un fragmento de texto del vocabulario del modelo: una palabra, parte de una palabra, un signo de puntuación o un espacio más una palabra. Para prosa en inglés, una regla aproximada es cuatro caracteres, o tres cuartos de palabra, por token. La regla falla a menudo:

  • El código, el JSON y los identificadores poco comunes usan más tokens que la prosa.
  • Los idiomas distintos del inglés suelen usar más tokens por palabra.
  • Cada proveedor tiene su propio tokenizador, así que el mismo texto da un recuento distinto en cada modelo.

Cuenta con el tokenizador real

Las estimaciones sirven para una primera idea y fallan para un presupuesto. OpenAI publica sus tokenizadores, así que los recuentos pueden ser exactos sin conexión. Anthropic y Google ofrecen endpoints de recuento de tokens; sin ellos, el recuento es una aproximación.

PromptFlowEngine sigue esta distinción: los recuentos de los modelos de OpenAI se calculan con su tokenizador y se etiquetan como exactos, mientras que los de otros proveedores se etiquetan como aproximados. Puedes comprobar un prompt en el espacio de trabajo o mediante la API HTTP:

curl -s https://promptflowengine.com/api/v1/tokens \
  -H 'content-type: application/json' \
  -d '{"prompt":"Summarize the notes below in 5 bullets.","model":"gpt-4.1"}'

De dónde viene el coste

El coste por llamada es los tokens de entrada por el precio de entrada, más los tokens de salida por el precio de salida. Tres hechos condicionan toda optimización:

  1. Los tokens de salida suelen costar varias veces más que los de entrada. Limitar la longitud de la respuesta a menudo ahorra más que recortar el prompt.
  2. La parte fija de un prompt se paga en cada llamada. Cincuenta tokens desperdiciados en un prompt de sistema que se ejecuta un millón de veces son cincuenta millones de tokens.
  3. En una conversación o en un bucle de agente, el historial se reenvía en cada turno. El coste crece más rápido que el número de turnos.

Compresión de prompts: qué quitar

Trabaja del recorte más seguro al más arriesgado.

Relleno y cortesías. «Hola», «por favor», «me gustaría que», «es importante señalar que». No aportan ninguna instrucción.

Before: Hello! I would like you to please summarize the notes below.
        Please make sure to keep it brief.
After:  Summarize the notes below in 3 sentences.

Repetición. La misma instrucción dicha dos veces, a menudo en secciones distintas tras meses de ediciones.

Construcciones largas. «Con el fin de» pasa a «para». «Debido al hecho de que» pasa a «porque».

Contexto sin usar. Información de fondo de la que no depende ningún caso de prueba. Quítala y vuelve a ejecutar tus pruebas.

Ejemplos en exceso. Prueba con tres ejemplos en lugar de ocho y mide.

Formatos verbosos. Un JSON con sangría y claves largas cuesta más que un JSON compacto con claves cortas. Para los datos que se insertan en un prompt, un formato compacto ahorra tokens en cada llamada.

Los tres primeros son mecánicos. El optimizador de prompts de PromptFlowEngine los aplica y verifica que cada frase, requisito, bloque de código y variable del original sigue presente, que es la parte tediosa de comprobar a mano.

Qué no quitar

  • Requisitos y restricciones. Un prompt más corto que omite una regla es otro prompt.
  • El formato de salida. Quitarlo ahorra diez tokens y te cuesta un analizador.
  • Delimitadores alrededor de la entrada. Son baratos y evitan la inyección.
  • La estructura. Los encabezados de sección cuestan unos pocos tokens y pueden mejorar el cumplimiento. El texto sobrecomprimido, sin artículos ni conectores, se vuelve ambiguo para el modelo e ilegible para la siguiente persona que lo edite.

Optimización de la ventana de contexto

La ventana de contexto es el número máximo de tokens que un modelo puede considerar a la vez, entrada y salida juntas. Las ventanas han crecido muchísimo, lo que ha cambiado el problema de «¿cabrá?» a «¿debería estar ahí?».

Más contexto no es gratis. Además del coste y la latencia, la calidad puede bajar al crecer la entrada: un pasaje relevante rodeado de miles de tokens irrelevantes es más difícil de aprovechar para el modelo. Envía lo que la tarea necesita.

Recupera en lugar de incluirlo todo. Busca los pasajes relevantes para la pregunta e inserta solo esos. Consulta el prompting para RAG.

El orden importa en los prompts largos. Muchos modelos atienden mejor al principio y al final de una entrada larga. Pon los documentos largos primero y la pregunta o las instrucciones después, o repite la instrucción clave al final.

Gestiona el historial de la conversación. Resume los turnos antiguos, descarta los resultados de herramientas que ya no hacen falta y empieza una conversación nueva cuando cambie el tema.

Reserva espacio para la respuesta. Si la entrada llena la ventana, la salida se corta. Deja sitio para la respuesta más larga que esperes.

Divide el trabajo. Una cadena de prompts da a cada paso solo el contexto que necesita.

Usa el almacenamiento en caché

Los principales proveedores ofrecen caché de prompts: cuando el comienzo de un prompt coincide con una solicitud reciente, la parte repetida se factura a una tarifa reducida y se procesa más rápido. Para beneficiarte:

  • Pon primero el contenido estable: prompt de sistema, definiciones de herramientas, ejemplos, documentos de referencia.
  • Pon al final el contenido variable: la pregunta del usuario y los datos de cada solicitud.
  • Evita cambiar nada en la parte estable, como una marca de tiempo, entre llamadas.

La caché abarata mucho un prompt largo y fijo. No elimina el coste en calidad del contexto irrelevante.

Controla la longitud de la salida

  • Da un número: «menos de 100 palabras», «exactamente 5 viñetas».
  • Pide solo lo que necesitas: una etiqueta, no una etiqueta con explicación.
  • Fija el máximo de tokens de salida de la API como tope duro.
  • En los modelos de razonamiento, baja el esfuerzo de razonamiento en tareas sencillas.

Fija un presupuesto y hazlo cumplir

Decide cuántos tokens puede usar cada prompt de producción y compruébalo automáticamente. La puerta de pruebas de prompts hace fallar una compilación cuando un archivo de prompt supera su límite de tokens:

{ "include": ["prompts/**/*.md"], "model": "gpt-4.1", "maxTokens": 1500 }

Así el crecimiento de tokens deja de ser algo que descubres en una factura y pasa a ser algo que revisas en una pull request. Para el proceso más amplio de mejorar un prompt midiendo, consulta la optimización de prompts.

Ponlo en práctica

Pruébalo con la herramienta optimizador de prompts

Reduce tokens y añade estructura, con la prueba de que cada requisito sobrevivió. Es gratuito, determinista y no necesita cuenta.

Herramientas relacionadas de PromptFlowEngine

Más sobre optimización, pruebas y seguridad

Ver todas las guías de ingeniería de prompts