TOON: JSON para Prompts LLM con la mitad de Tokens
Presentamos TOON: La Notación de Objetos Orientada a Tokens para LLMs
En el vertiginoso panorama de los Modelos de Lenguaje Grandes (LLMs), la eficiencia es clave. A medida que las ventanas de contexto crecen y las entradas de datos se vuelven más grandes, el costo asociado al uso de tokens puede escalar. Aquí es donde entra en juego la Notación de Objetos Orientada a Tokens (TOON), ofreciendo una solución inteligente y de código abierto para reducir significativamente el consumo de tokens al pasar datos estructurados a los LLMs.
Desarrollado por Johann Schopplich, TOON es un formato de datos innovador diseñado específicamente para la entrada de LLMs, y no como un reemplazo de JSON de propósito general para APIs o almacenamiento. Su principal fortaleza radica en su capacidad para transmitir la misma información que JSON con una reducción del 30-60% en el número de tokens, lo que se traduce en interacciones con LLMs más rentables y rápidas.
Por qué TOON es relevante para los prompts de LLM
JSON tradicional, aunque omnipresente para el intercambio de datos, puede ser verboso y consumir muchos tokens, especialmente para estructuras de datos repetitivas. TOON aborda esto aprovechando una sintaxis mínima que elimina puntuaciones redundantes (llaves, corchetes, la mayoría de las comillas) y adopta una estructura basada en la indentación, similar a YAML. Su "punto fuerte" son los arrays uniformes de objetos: datos con múltiples campos por fila y estructuras consistentes entre elementos. Para estos escenarios, TOON utiliza un formato tabular, optimizado para la eficiencia de tokens.
Consideremos un ejemplo sencillo:
JSON:
{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}
TOON:
tsers[2]{id,name,role}:
1,Alice,admin
2,Bob,user
La diferencia en el conteo de tokens, particularmente en grandes conjuntos de datos, es sustancial.
Características y beneficios clave
- Eficiente en el uso de tokens: Logra un ahorro de hasta el 60% de tokens en comparación con JSON, optimizando costos y la longitud de los prompts.
- Barandillas compatibles con LLM: Las longitudes explícitas y las declaraciones de campo simplifican el análisis y la validación de datos para los LLM.
- Sintaxis mínima: Reduce la puntuación repetitiva, mejorando la legibilidad para los humanos y la eficiencia del tokenizador.
- Estructura basada en indentación: Familiar para los usuarios de YAML, utilizando espacios en blanco para objetos anidados.
- Matrices tabulares: Declara las claves una vez y transmite los datos como filas, ideal para conjuntos de datos uniformes.
- Puntos de referencia de rendimiento: TOON demuestra consistentemente una eficiencia de tokens superior en varios conjuntos de datos del mundo real como repositorios de GitHub, análisis diarios y pedidos de comercio electrónico, a menudo con una precisión de recuperación comparable o incluso mejor en diferentes modelos LLM (gpt-5-nano, claude-haiku, gemini-2.5-flash, grok-4-fast).
Cómo funciona TOON y cómo usarlo
TOON está diseñado como una capa de traducción: puedes usar JSON programáticamente y convertirlo a TOON para la entrada de LLM. Está disponible como un paquete npm (@byjohann/toon) e incluye una interfaz de línea de comandos (CLI) para una fácil conversión entre los formatos JSON y TOON.
La instalación es sencilla:
npm install @byjohann/toon
# o con pnpm/yarn
Codificación de datos:
import { encode } from '@byjohann/toon'
const data = {
users: [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' }
]
}
console.log(encode(data))
// Produce la salida TOON mostrada arriba
También puedes personalizar la salida con opciones como delimiter (coma, tabulador o barra vertical) y lengthMarker para un mayor ahorro de tokens y claridad, especialmente al comunicar un formato específico al LLM.
TOON en los prompts de LLM
Al enviar TOON a los LLMs, la mejor práctica es mostrar el formato en lugar de solo describirlo. Envuelve tus datos codificados en un bloque de código cercado (por ejemplo, ```toon). Las longitudes explícitas de los arrays y los encabezados de campo dentro de TOON ayudan a los modelos a seguir la estructura, reduciendo significativamente los errores de análisis.
Para generar TOON usando LLMs, sé explícito en tus instrucciones de prompt. Define el formato de encabezado y las reglas esperadas (por ejemplo, sangría de 2 espacios, sin espacios finales). Esto guía al LLM para generar una salida TOON compatible y eficiente.
Consideraciones y limitaciones
Mientras que TOON destaca con arrays uniformes de objetos, su eficiencia puede disminuir para datos profundamente anidados o muy no uniformes, donde JSON podría ser aún más adecuado. Es crucial entender que el ahorro de tokens puede variar según el LLM y el tokenizador específico que se utilice (los benchmarks se basan en un tokenizador de estilo GPT).
Sin embargo, para una vasta gama de tareas de ingeniería de prompts de LLM —particularmente aquellas que involucran grandes conjuntos de datos consistentes— TOON proporciona una herramienta potente y de código abierto para mejorar la eficiencia y optimizar las interacciones con los LLM. Con el creciente apoyo de la comunidad e implementaciones en varios lenguajes, TOON se está convirtiendo rápidamente en un activo valioso para los desarrolladores de IA.
Explora el repositorio de GitHub de TOON para profundizar en sus especificaciones, benchmarks y desarrollo continuo.