La documentación de formatos ama los ejemplos de juguete — tres filas, nombres ficticios, cinco columnas. Está bien para aprender la sintaxis, pero no te dice si un formato maneja las formas con las que realmente trabajas. Este artículo se salta los juguetes. A continuación se muestran los patrones de datos que aparecen constantemente en el desarrollo backend real — catálogos de productos, registros de auditoría, tablas de métricas, objetos de configuración, transacciones financieras — mostrados en JSON y TOON lado a lado, para que puedas ver exactamente qué estás ahorrando y dónde TOON justifica su uso. Todos los datos son realistas; sin foo, bar ni nombres de marcador de posición. Para información sobre el formato en sí, ver la guía de sintaxis TOON.

Catálogo de productos de comercio electrónico

Un array de productos es probablemente la cosa más común que los desarrolladores envían a un LLM — "clasifica estos artículos", "encuentra el más barato en cada categoría", "marca todo lo que esté agotado con un precio superior a $50". Aquí hay una muestra realista del catálogo en JSON primero:

json
[
  {"id":"PRD-1041","name":"Logitech MX Master 3S","sku":"LOG-MX3S-GRY","price":99.99,"inStock":true,"category":"Peripherals"},
  {"id":"PRD-1042","name":"Samsung 970 EVO Plus 1TB","sku":"SAM-970P-1TB","price":89.99,"inStock":true,"category":"Storage"},
  {"id":"PRD-1043","name":"Keychron K2 Pro","sku":"KEY-K2P-BLK","price":119.99,"inStock":false,"category":"Peripherals"},
  {"id":"PRD-1044","name":"Elgato Stream Deck MK.2","sku":"ELG-SD-MK2","price":149.99,"inStock":true,"category":"Streaming"},
  {"id":"PRD-1045","name":"WD Blue 2TB HDD","sku":"WD-BLU-2TB","price":54.99,"inStock":true,"category":"Storage"},
  {"id":"PRD-1046","name":"Razer DeathAdder V3","sku":"RZR-DAV3-BLK","price":69.99,"inStock":true,"category":"Peripherals"},
  {"id":"PRD-1047","name":"Focusrite Scarlett Solo","sku":"FOC-SC-SOLO","price":119.99,"inStock":false,"category":"Audio"}
]

Ahora el mismo catálogo en TOON. Los encabezados de columna se declaran una vez; cada fila solo contiene valores:

text
products[7]{id,name,sku,price,inStock,category}:
  PRD-1041,Logitech MX Master 3S,LOG-MX3S-GRY,99.99,true,Peripherals
  PRD-1042,Samsung 970 EVO Plus 1TB,SAM-970P-1TB,89.99,true,Storage
  PRD-1043,Keychron K2 Pro,KEY-K2P-BLK,119.99,false,Peripherals
  PRD-1044,Elgato Stream Deck MK.2,ELG-SD-MK2,149.99,true,Streaming
  PRD-1045,WD Blue 2TB HDD,WD-BLU-2TB,54.99,true,Storage
  PRD-1046,Razer DeathAdder V3,RZR-DAV3-BLK,69.99,true,Peripherals
  PRD-1047,Focusrite Scarlett Solo,FOC-SC-SOLO,119.99,false,Audio
Los seis encabezados de columna en TOON se escriben exactamente una vez. En JSON se repiten en cada fila. En la fila 3, el encabezado ya ha amortizado su costo en ahorro de tokens — y en un catálogo de 200 filas la diferencia es dramática. Usa el tokenizador de OpenAI para verificar el ahorro con tus propios datos.

Registro de actividad de usuario / auditoría

Los registros de auditoría son exactamente el tipo de datos que alimentarías a un LLM con un prompt como "resume lo que este usuario hizo en la última hora" o "marca cualquier patrón de acceso sospechoso". Son de alto volumen, repetitivos, y los nombres de columnas son idénticos en cada fila. Las pistas de auditoría también tienden a ser lo primero que hace explotar tu ventana de contexto cuando los pegas como JSON. Aquí hay un registro realista de 9 filas en TOON:

text
auditLog[9]{userId,action,resourceId,resourceType,timestamp,ip}:
  U-8821,LOGIN,,session,2024-11-14T08:02:11Z,203.0.113.47
  U-8821,VIEW,DOC-4490,document,2024-11-14T08:03:44Z,203.0.113.47
  U-8821,DOWNLOAD,DOC-4490,document,2024-11-14T08:03:51Z,203.0.113.47
  U-8821,VIEW,DOC-4491,document,2024-11-14T08:05:02Z,203.0.113.47
  U-8821,EDIT,DOC-4491,document,2024-11-14T08:07:39Z,203.0.113.47
  U-8821,SHARE,DOC-4491,document,2024-11-14T08:08:12Z,203.0.113.47
  U-8821,VIEW,USR-0055,user_profile,2024-11-14T08:09:58Z,203.0.113.47
  U-8821,VIEW,USR-0056,user_profile,2024-11-14T08:10:03Z,203.0.113.47
  U-8821,LOGOUT,,session,2024-11-14T08:11:22Z,203.0.113.47

El JSON equivalente repetiría "userId", "action", "resourceId", "resourceType", "timestamp" y "ip" en las nueve filas — 54 repeticiones de claves para seis nombres de campo. En TOON aparecen exactamente una vez. Para registros de auditoría con cientos de entradas, esa es la diferencia entre que los datos quepan en tu prompt y no.

Datos de métricas / límite de velocidad de API

Las métricas operacionales — percentiles de latencia, tasas de error, rendimiento — son otro candidato natural para TOON. Los datos son de alta densidad numérica y perfectamente tabulares. Podrías enviar esto a un LLM para preguntar "¿qué endpoints tienen latencia p99 superior a 500ms?" o "¿dónde está aumentando la tasa de error?" Esta es la forma de datos que típicamente verías salir de un pipeline de métricas de Node.js o un scrape de Prometheus:

text
apiMetrics[8]{endpoint,method,p50ms,p99ms,errorRate,callsPerDay}:
  /api/v2/products,GET,42,118,0.002,84200
  /api/v2/products/:id,GET,38,95,0.001,31500
  /api/v2/orders,POST,210,880,0.015,4800
  /api/v2/orders/:id,GET,55,201,0.003,19200
  /api/v2/cart,PUT,95,430,0.008,22100
  /api/v2/search,GET,310,1240,0.021,61000
  /api/v2/users/:id,GET,29,88,0.001,9700
  /api/v2/checkout,POST,540,2100,0.034,3200

El LLM puede responder inmediatamente preguntas sobre esta tabla sin ninguna sobrecarga de contexto. Ten en cuenta que /api/v2/search y /api/v2/checkout se destacan ambos con p99 alto y tasas de error elevadas — exactamente el tipo de patrón que un LLM puede detectar al instante cuando presentas los datos limpiamente.

Objeto de configuración anidado

TOON maneja más que datos tabulares. Para objetos estructurados — el tipo de cosa que encontrarías en la configuración en tiempo de ejecución de una app — TOON usa una notación de objeto en línea con estructura anidada. Piénsalo como un equivalente de los formatos de serialización como TOML o YAML, pero más ligero. Aquí hay una configuración de app realista que muestra configuraciones de servidor, base de datos y flags de características:

json
{
  "server": {
    "host": "0.0.0.0",
    "port": 8080,
    "tlsEnabled": true,
    "requestTimeoutMs": 30000
  },
  "database": {
    "host": "db.internal.example.com",
    "port": 5432,
    "name": "commerce_prod",
    "poolSize": 20,
    "sslRequired": true
  },
  "features": {
    "newCheckoutFlow": true,
    "recommendationEngine": false,
    "darkMode": true,
    "betaDashboard": false
  }
}

La misma configuración en notación de objeto TOON — las claves no están entre comillas, el anidamiento usa llaves en línea:

text
{
  server:{host:0.0.0.0,port:8080,tlsEnabled:true,requestTimeoutMs:30000},
  database:{host:db.internal.example.com,port:5432,name:commerce_prod,poolSize:20,sslRequired:true},
  features:{newCheckoutFlow:true,recommendationEngine:false,darkMode:true,betaDashboard:false}
}
La sintaxis de objeto TOON no pone comillas en las claves a menos que un valor contenga una coma o dos puntos. En el bloque database anterior, host:db.internal.example.com está bien tal cual — no se necesitan comillas porque el valor no contiene ninguno. Si un valor contiene una coma o dos puntos, envuélvelo en comillas dobles: dsn:"host:5432,sslmode=require".

Transacciones financieras

Los datos financieros son otro caso de uso LLM de alto valor: indicaciones de detección de fraude, verificaciones de conciliación, categorización. La mezcla de IDs de cadenas, cantidades numéricas, códigos de moneda, enumeraciones de estado y marcas de tiempo se mapea limpiamente al formato tabular de TOON. Aquí hay una muestra realista de transacciones:

text
transactions[9]{txId,amount,currency,from,to,status,timestamp}:
  TXN-88201,1250.00,GBP,ACC-1041,ACC-2209,settled,2024-11-14T09:15:00Z
  TXN-88202,89.99,USD,ACC-3301,ACC-0047,settled,2024-11-14T09:16:34Z
  TXN-88203,4500.00,EUR,ACC-2001,ACC-5512,pending,2024-11-14T09:18:02Z
  TXN-88204,22.50,USD,ACC-0099,ACC-3301,settled,2024-11-14T09:21:47Z
  TXN-88205,750.00,GBP,ACC-5512,ACC-1041,failed,2024-11-14T09:25:10Z
  TXN-88206,12000.00,USD,ACC-7700,ACC-2001,pending,2024-11-14T09:28:55Z
  TXN-88207,310.00,EUR,ACC-1041,ACC-0099,settled,2024-11-14T09:31:22Z
  TXN-88208,55.00,USD,ACC-3301,ACC-7700,settled,2024-11-14T09:33:40Z
  TXN-88209,8900.00,GBP,ACC-2209,ACC-5512,flagged,2024-11-14T09:37:15Z

Pega esto en un prompt junto a "marca cualquier transacción superior a £5,000 o con estado flagged o failed" y el modelo responderá en segundos. La representación TOON es lo suficientemente compacta como para que cómodamente puedas meter varios cientos de filas en un solo prompt sin alcanzar los límites de contexto en la mayoría de los modelos.

Combinar datos tabulares y de objeto en un documento

Aquí hay algo que ni JSON ni CSV manejan limpiamente: un documento que tiene tanto un encabezado de metadatos (un único objeto de configuración) como una tabla de datos en la misma carga útil. Piensa en un informe con un bloque de contexto en la parte superior — quién lo generó, qué período de tiempo cubre, qué filtros se aplicaron — seguido de las filas de datos reales. En JSON tendrías que envolver todo en un objeto envoltorio con una clave "meta" y una clave "rows", lo que agrega otra capa de anidamiento. CSV no puede hacerlo en absoluto. TOON lo maneja de forma nativa:

text
{report:weekly_sales,generatedAt:2024-11-14T10:00:00Z,region:EMEA,currency:EUR,generatedBy:analytics-service}

salesByRep[6]{repId,repName,deals,revenue,avgDealSize,quota}:
  REP-101,Marta Kowalski,14,84200.00,6014.28,75000
  REP-102,James Okafor,11,61500.00,5590.90,75000
  REP-103,Yuki Tanaka,18,102400.00,5688.88,90000
  REP-104,Sofia Andersen,9,47800.00,5311.11,75000
  REP-105,Liam Byrne,16,93100.00,5818.75,90000
  REP-106,Priya Nair,21,118600.00,5647.61,100000

La primera línea es un objeto TOON — los metadatos del informe. La línea en blanco lo separa de la sección tabular que sigue. Una sola llamada decode() de @toon-format/toon devuelve ambos. Puedes enviar este documento completo a un LLM con una pregunta como "¿qué representantes están en camino de alcanzar su cuota?" y tiene todo lo que necesita: el contexto del informe y los datos, en una sola carga útil compacta.

Este formato mixto es particularmente poderoso para pipelines LLM. En lugar de construir un envoltorio JSON con claves anidadas, escribes un objeto de encabezado plano + una tabla con nombre. El modelo lo lee naturalmente, y tu código para generarlo es trivial. Usa el convertidor JSON a TOON para transformar cargas útiles JSON existentes, o el formateador TOON para limpiar y validar TOON escrito a mano.

Usar el paquete npm

Todos estos ejemplos pueden codificarse y decodificarse programáticamente. El @toon-format/toon es la implementación de referencia. Instálalo en cualquier proyecto Node.js o de navegador:

bash
npm install @toon-format/toon

Luego codifica tus datos antes de enviarlos a cualquier API LLM, y decodifica la respuesta al volver:

ts
import { encode, decode } from '@toon-format/toon';

const transactions = [
  { txId: 'TXN-88201', amount: 1250.00, currency: 'GBP', from: 'ACC-1041', to: 'ACC-2209', status: 'settled', timestamp: '2024-11-14T09:15:00Z' },
  { txId: 'TXN-88202', amount: 89.99,   currency: 'USD', from: 'ACC-3301', to: 'ACC-0047', status: 'settled', timestamp: '2024-11-14T09:16:34Z' },
  // ...more rows
];

// Compact TOON string — send this to your LLM prompt
const toonPayload = encode(transactions);

// When the LLM returns TOON, decode back to a JS array
const decoded = decode(toonPayload);
console.log(decoded[0].status); // "settled"

Resumen

Los patrones anteriores — catálogos de productos, registros de auditoría, tablas de métricas, objetos de configuración, datos financieros, documentos mixtos de encabezado+tabla — cubren la gran mayoría de los datos estructurados que los desarrolladores realmente envían a los LLMs. TOON los maneja bien a todos, y el ahorro de tokens es significativo en cada caso. La regla central es simple: JSON repite nombres de claves en cada fila; TOON no. Para la serialización de datos tabulares que va a una ventana de contexto LLM, esa repetición es puro desperdicio.

Para convertir JSON existente a TOON, usa el convertidor JSON a TOON. Para ir en la otra dirección después de que un LLM devuelva TOON, usa el convertidor TOON a JSON. El formateador TOON limpia y valida cadenas TOON, y el validador TOON detectará errores de sintaxis antes de que lleguen a tu pipeline. El paquete npm @toon-format/toon maneja la codificación y decodificación en dos líneas de código — todos los ejemplos anteriores funcionan de inmediato.