Formato TOON para interacciones con LLMs: reducción de tokens y estructura eficiente

Optimización de costes en LLMs mediante TOON

En aplicaciones que utilizan modelos de lenguaje grandes (LLMs), el consumo de tokens representa un coste significativo. El formato TOON (Token-Oriented Object Notation) ofrece una solución para minimizar este gasto, logrando hasta un 40% de ahorro en tokens comparado con JSON, al tiempo que promueve una mentalidad diferente en el manejo de datos.

La evolución de los formatos de intercambio de datos en programación, desde XML hasta JSON y YAML, ahora marca un hito con TOON. Este formato está diseñado específicamente para optimizar la represantación de datos en interacciones con LLMs.

Origen y fundamento

TOON surge como respuesta a las limitaciones de formatos tradicionales en el contexto de LLMs. La mayoría de las aplicaciones de IA aún dependen de JSON, que aunque estructurado, introduce sobrecarga innecesaria en tokens. Los LLMs no requieren una legibilidad humana extrema, sino claridad estructural y mínima tokenización.

TOON es una codificación desarrollada por el equipo Toon Format que transforma el modelo de datos de JSON a una forma más eficiente en tokens. Según pruebas de referencia, TOON alcanza una precisión del 73.9% en conjuntos de datos estructurados mixtos, utilizando 39.6% manos tokens que JSON estándar.

Diseño y principios

El diseño de TOON se basa en tres principios clave:

  • Preservar la integridad del modelo de datos de JSON para garantizar interoperabilidad.
  • Minimizar la sobrecarga sintáctica, usando indentación en lugar de llaves y referencias inteligentes para reducir comillas.
  • Introducir identificadores de estructura explícitos que asistan a los LLMs en la comprensión de la organización de datos.

Por ejemplo, TOON emplea indentación similar a YAML para anidamiento, pero adopta una disposición tipo CSV para arrays de objetos uniformes, lo que mejora el rendimiento en diversas estructuras de datos.

Sintaxis básica

Objetos simples

TOON utiliza pares clave-valor estilo YAML, eliminando elementos sintácticos redundantes. Un objeto JSON como {"identificador": 1, "nombre": "Ada"} se representa en TOON como:


identificador: 1
nombre: Ada

Objetos anidados

El anidamiento se indica mediante indentación:


usuario:
  id: 1
  nombre: Ada
  config:
    tema: oscuro
    alertas: verdadero

Arrays de valores primitivos

Para arrays simples, TOON usa un formato compacto tipo CSV con longitud explícita:


etiquetas[3]: ejemplo1,ejemplo2,ejemplo3

La declaración de longitud ([3]) proporciona límites estructurales a los LLMs.

Arrays tabulares

Para arrays de objetos uniformes, TOON reduce la repetición de nombres de campos. Considerando este JSON:


{
  "productos": [
    {"codigo": 101, "cantidad": 5},
    {"codigo": 102, "cantidad": 3}
  ]
}

En TOON se representa como:


productos[2]{codigo,cantidad}:
  101,5
  102,3

Esta representación declara los campos una vez, ahorrando tokens en arrays con múltiples objetos.

Arrays mixtos

Para arrays no uniformes, TOON mantiene compatibilidad:


items[3]:
  - 1
  - clave: valor
  - texto

Referencias y escape

Reglas de comillas

TOON minimiza el uso de comillas, aplicándolas solo cuando es necesario: cadenas vacías, valores con espacios, cadenas que parecen booleanos o números, y aquellas con delimitadores. Ejemplo sin comillas:


mensaje: Hola mundo 👋
nota: Con espacios internos

Secuencias de escape

Solo se soportan cinco secuencias básicas: \\, \", \n, \r y \t, simplificando la complejidad de análisis para LLMs.

Tipos especiales

Valores como NaN, Infinity y -Infinity se convierten a null; BigInt se representa como número o cadena decimal; fechas se serializan a ISO.

Sintaxis avanzada

Plegado de claves

Permite combinar claves anidadas en rutas con puntos, reduciendo indentación y saltos de línea:


# Anidamiento estándar
datos:
  meta:
    elementos[2]: a,b

# Plegado de claves (keyFolding: 'safe')
datos.meta.elementos[2]: a,b

Array raíz

Puede representarse directamente sin contenedor:


[3]: x,y,z

Contenedores vacíos

Objetos vacíos se omiten; arrays vacíos usan longitud cero:


items[0]:

Aplicaciones prácticas

TOON se aplica en varios escenarios de LLMs:

  • Ingeniería de prompts: Reduce el espacio ocupado por ejemplos en prompts, liberando contexto para tareas principales.
  • Sistemas RAG: Optimiza la inclusión de fragmentos de documentos recuperados, permitiendo procesar más material de referencia.
  • Llamadas a funciones: Representa compactamente parámetros y resultados, disminuyendo el consumo de tokens por interación.

Flujo de trabajo recomendado:

  1. Usar JSON internamente en el código por su ecosistema maduro.
  2. Almacenar índices de conocimiento para LLMs en formato TOON.
  3. Convertir a TOON al enviar datos a LLMs para ahorro de tokens.
  4. Procesar respuestas de LLMs según el contenido.

Ejemplo con TypeScript SDK:


import { toTOON } from '@toon-format/sdk';

const datosJson = { /* datos originales */ };
const datosToon = toTOON(datosJson);
// Enviar datosToon al LLM

Ecosistema y soporte

TOON cuenta con implementaciones en TypeScript, Python, Go, Rust y .NET, asegurando consistencia cross-lenguaje. Las herramientas incluyen:

  • Extensión para VS Code con resaltado de sintaxis y validación.
  • Herramienta de línea de comandos para conversión bidireccional entre JSON y TOON.
  • Playground en línea para pruebas en tiempo real.

Los archivos TOON usan la extensión .toon y el tipo de medio text/toon.

Limitaciones y escenarios ideales

TOON es óptimo para aplicaciones de LLM con datos estructurados densos, como análisis de datos, generación de reportes o consultas a bases de datos. Ofrece mayores ahorros en arrays de objetos uniformes (listas de usuarios, catálogos, registros), con reducción de tokens del 40-50%.

Sin embargo, puede no ser ideal para:

  • Estructuras altamente anidadas o irregulares, donde JSON podría ser más eficiente.
  • Datos tabulares puros, donde CSV tiene menor sobrecarga.
  • Aplicaciones sensibles a la latencia, que requieren pruebas comparativas.

En proyectos reales, se recomienda evaluar la proporción de datos tabulares; si supera el 60%, TOON probablemente genere ahorros significativos.

Etiquetas: TOON LLM tokenización json YAML

Publicado el 6-7 04:58