Lanzas un prompt. El modelo responde. Sigues adelante. En algún punto de ese ciclo quemaste tokens que no necesitabas: contexto repetitivo re-inyectado en cada llamada, un system prompt sin estructura, o pedir un razonamiento que nunca vas a leer. Con diez llamadas al día, eso es ruido. Con mil llamadas al día — o dentro de un loop multi-agente — es dinero real y latencia medible. La disciplina de tokens es el oficio subestimado del desarrollo agentic, y en su mayor parte es hábito, no ingenio.
Una aclaración sobre los números, de entrada: el ahorro que consigas depende por completo de tu carga de trabajo, así que en lugar de citar porcentajes redondos, este artículo muestra dónde se esconde el desperdicio y da un único ejemplo medido que puedes reproducir.
Regla 1: tu system prompt es una API
Trata tu system prompt como una firma de tipo. Debe ser preciso, mínimo y versionado. Si estás pegando tres párrafos de "eres un asistente útil que..." en cada llamada, estás pagando por explicarle el modelo a sí mismo.
Qué conservar: un rol de una sola oración, las restricciones del formato de salida, las reglas de dominio que sobreescriben los valores predeterminados y la sintaxis de tus herramientas personalizadas si las tienes. Qué eliminar: el andamiaje de cortesía, las negaciones redundantes ("no hagas X, Y, Z" cuando puedes decir "haz A") y los ejemplos que solo repiten la regla de formato.
Regla 2: el contexto no es un buffer gratuito
La ventana de contexto parece infinita hasta que llamas a un modelo en un loop y tu latencia p95 se dispara. Cada carácter en el contexto cuesta tiempo en la inferencia. Un contexto grande no es gratis; es un dial que estás girando. Hinchazón común:
- Pasar el historial completo de la conversación cuando solo necesitas los últimos turnos.
- Incluir el contenido completo de los archivos cuando necesitas las líneas alrededor del cursor.
- Inyectar todas las herramientas disponibles cuando la tarea usa dos.
Corrígelo resumiendo los turnos antiguos, recuperando en lugar de inyectar archivos completos, y recortando las listas de herramientas a lo que la tarea necesita.
Regla 3: el output estructurado elimina los tokens de post-procesamiento
Si tu modelo emite prosa y la parseas con una regex, pagas dos veces: una por la prosa y otra por la extracción. Pide en su lugar output estructurado con un schema, para obtener resultados parseables directamente y saltarte el texto envoltorio.
// En lugar de: "Aquí está el análisis: el sentimiento es positivo porque..."
{
"sentiment": "positive",
"confidence": 0.87,
"reason": "forward-looking language"
}
El ahorro es real pero depende de la carga de trabajo, así que mide el tuyo en lugar de fiarte de una cifra de titular.
Regla 4: mide un antes y un después reales
Aquí va un ejemplo reproducible de nuestras propias ejecuciones, ofrecido como un caso aislado (n=1), no como un benchmark. Teníamos un paso de clasificación que devolvía un párrafo de explicación más la etiqueta, y parseábamos la etiqueta. Contando con el campo de uso de tokens de la API, la versión en prosa promediaba unos 180 tokens de salida por llamada. Al cambiar a un schema JSON estricto que devolvía solo la etiqueta y una razón de una línea, bajó a unos 45 tokens de salida por llamada. La misma precisión en nuestro eval, aproximadamente un cuarto de los tokens de salida, y sin regex. La cuestión no es nuestro número; es que leas el objeto usage y veas el tuyo.
Regla 5: cachea tu contexto pesado y estable
Si un bloque grande de contexto es estable entre llamadas, cachéalo en lugar de reenviarlo. Con el prompt caching de Anthropic, las lecturas de caché se facturan a una fracción de los tokens de entrada base, así que un system prompt largo e inmutable o una descripción de herramientas deja de ser un impuesto por llamada. Marca el bloque estable para el caché y mantén la parte volátil fuera. Escribimos la mecánica completa por separado, así que en lugar de repetirla, mira el prompt caching explicado para las cabeceras exactas y sus trampas.
La mentalidad del presupuesto de tokens
Antes de escribir un nuevo prompt, hazte tres preguntas: cuál es el contexto mínimo que el modelo necesita para hacer esto correctamente, cuál es el formato de salida mínimo que me da lo que necesito, y estoy re-inyectando algo que podría cachearse o comprimirse. La disciplina de tokens se acumula, y el modelo al que enrutas importa tanto como el prompt. Si quieres el lado del enrutamiento, lo cubrimos en cómo no desperdiciar tokens entre modelos. Envía más ligero, envía más rápido.
