¿Qué es TOON?
Todos hemos estado allí. Está diseñando un mensaje para un modelo de lenguaje grande (LLM) y necesita pasar datos estructurados. Busca JSON. Después de todo, es el estándar de la industria. Pero mientras observa cómo su ventana de contexto se llena de infinitas llaves, claves repetidas y comillas alrededor de números enteros simples, comienza a preguntarse: ¿Existe una manera mejor?
YAML ofrece legibilidad pero adolece de ambigüedad. CSV es denso pero carece de jerarquía.
Introduzca TOON.
TOON es un formato de serialización de datos que parece un soplo de aire fresco para los desarrolladores y un lenguaje nativo para los modelos de IA. Cierra la brecha entre la legibilidad humana y la eficiencia de las máquinas. Hoy, profundicemos en la sintaxis y la mecánica de TOON para comprender por qué se está convirtiendo rápidamente en uno de los favoritos para el intercambio de datos de alta eficiencia.
La filosofía: semántica JSON, estética YAML
En esencia, TOON comparte exactamente el mismo modelo de datos que JSON. Si puede representarlo en JSON (primitivas (cadenas, números, booleanos, nulos), objetos y matrices), puede representarlo en TOON. Sin embargo, la presentación es radicalmente diferente.
TOON se deshace de los frenillos. Utiliza sangría para representar la jerarquía, muy parecida a YAML. Un objeto simple parece limpio y accesible:
Sin embargo, a diferencia de YAML, TOON es estricto con los tipos. No se puede adivinar si "no" significa "falso" o la cadena "no". En TOON, las cadenas solo requieren comillas cuando son absolutamente necesarias, como cuando contienen caracteres especiales, se parecen a números o están vacías. Si escribe "mensaje: Hola mundo", obtendrá una cadena. Si escribe "count: 42", obtendrá un número.
identificación: 123
nombre: Ada
activo: verdadero
El poder de las matrices: longitud y tablas
Donde TOON realmente se distingue del resto es en su manejo de matrices. Esta es la "función principal" para la optimización de tokens.
Cada matriz en TOON declara explícitamente su longitud entre paréntesis, como "elementos [3]". Esto puede parecer redundante para un ser humano, pero para un LLM es un superpoder. Permite que el modelo valide la estructura inmediatamente y detecte el truncamiento. Si la transmisión se corta después de dos elementos pero el encabezado prometía tres, el analizador sabe que algo salió mal.
TOON ofrece efectivamente tres formas de manejar matrices, eligiendo automáticamente la más eficiente:
- Primitivas en línea: Para listas simples de números o cadenas, TOON las mantiene compactas.
etiquetas [3]: administrador, operaciones, desarrollo
- Listas estándar: Para tipos mixtos, utiliza una sintaxis de lista con guiones similar a YAML.
- Objetos tabulares: Este es el punto de inflexión.
Si tiene una serie de objetos que comparten las mismas claves (un patrón muy común en los registros de bases de datos), TOON cambia a un Formato tabular. en lugar de repetir las claves para cada fila, declara las claves una vez en el encabezado.
En el ejemplo anterior, users[2]{id,name,role}: nos dice que tenemos 2 filas y define el esquema. Los datos siguen en una estructura similar a CSV. Esto elimina la sobrecarga masiva de tokens que supone repetir "id":, "name": y "role": para cada usuario.
usuarios[2]{id,nombre,rol}:
1, administrador de Alice, administrador
2, Bob Smith, usuario
Delimitadores y eficiencia de tokens
Es posible que observe el uso de comas en los ejemplos anteriores. TOON en realidad admite tres delimitadores: comas (predeterminado), tabulaciones y barras verticales (|).
¿Por qué esto importa? Tokenización.
En muchos tokenizadores LLM, una coma seguida de una comilla puede dividirse en varios tokens. Un carácter de tabulación, sin embargo, a menudo simboliza de manera muy limpia. TOON le permite cambiar delimitadores en el nivel del encabezado de la matriz. Si utiliza un delimitador de tabulación, a menudo ni siquiera necesita entrecomillar cadenas que contienen espacios, lo que comprime aún más sus datos.
El formato es lo suficientemente inteligente como para manejar "colisiones". Si sus datos contienen el delimitador activo, TOON simplemente cita ese valor específico.
artículos[2]{sku,nombre,cantidad}:
A1,Nombre del widget,2
B2,Nombre del dispositivo,1
Plegado de teclas: aplanando la curva
Otra característica que destaca el enfoque de TOON en la eficiencia es el Plegado de llaves. Los objetos profundamente anidados suelen dar como resultado una "escalera" de sangría que devora el espacio horizontal y las fichas.
Si tiene una jerarquía profunda donde los objetos intermedios no tienen hermanos, TOON puede colapsarlos en una ruta de notación de puntos.
En lugar de escribir:
Puedes escribir:
datos:
metadatos:
elementos[2]: a,b
Esta característica, disponible desde la especificación v1.5, reduce significativamente el recuento de líneas y los tokens de sangría. Es importante destacar que esto es totalmente reversible. Cuando decodifica los datos con la expansión de ruta habilitada, se reconstruye perfectamente la jerarquía de objetos profunda.
datos.metadatos.elementos[2]: a,b
Rigor y seguridad
A pesar de su apariencia concisa, TOON no anda suelto con datos. Se adhiere a un estricto conjunto de reglas para cotizar y escapar.
Las cadenas generalmente permanecen sin comillas, lo cual es excelente para mejorar la legibilidad. Sin embargo, TOON exige cotizaciones para casos extremos para garantizar la integridad de los datos. Si una cadena parece un número (por ejemplo, "05" o "1e-6"), se cita entre comillas para evitar que se analice como un número. Si una cadena es una palabra reservada como "verdadero" o "nulo", se cita entre comillas.
Además, TOON normaliza los números. Emite formas decimales canónicas (sin notación científica ni ceros finales en la salida), lo que garantiza la coherencia. Incluso maneja BigInt de forma segura; Si un número excede el rango de enteros seguro, se serializa como una cadena para evitar la pérdida de precisión durante el transporte.
Formas raíz
Si bien la mayoría de nosotros trabajamos con objetos raíz, TOON es flexible. No es necesario que un documento comience con un par clave-valor. Admite matrices raíz (que comienzan inmediatamente con [N]:) o incluso una única primitiva raíz. Esta paridad con JSON significa que puede intercambiar TOON en casi cualquier canal donde se use JSON actualmente, siempre que tenga el analizador en el otro extremo.
Pensamientos finales
TOON no es sólo "otro formato". Es una herramienta especializada para una era en la que los datos son consumidos por modelos probabilísticos con tanta frecuencia como por código determinista. Al combinar el modelo de datos rígido de JSON con la densidad de CSV y la legibilidad de YAML, resuelve el problema específico de la optimización de ventanas de contexto sin sacrificar la seguridad de tipos.
Si está creando agentes, ajustando modelos o simplemente está cansado de desplazarse por interminables llaves de cierre, es hora de echarle un vistazo a TOON.