A documentação de formatos adora exemplos brinquedo — três linhas, nomes falsos, cinco colunas. Tudo bem para aprender a sintaxe, mas não diz se um formato lida com as formas com que você realmente lida no trabalho. Este artigo pula os brinquedos. Abaixo estão os padrões de dados que aparecem constantemente no desenvolvimento de backend real — catálogos de produtos, logs de auditoria, tabelas de métricas, objetos de configuração, transações financeiras — mostrados em JSON e TOON lado a lado, para que você possa ver exatamente o que está economizando e onde o TOON se paga. Todos os dados são realistas; nenhum foo, bar ou nome de placeholder à vista. Para contexto sobre o formato em si, veja o guia de sintaxe TOON.
Catálogo de Produtos de E-Commerce
Um array de produtos é provavelmente a coisa mais comum que desenvolvedores enviam para um LLM — "classifique esses itens", "encontre o mais barato em cada categoria", "sinalize qualquer fora de estoque com preço acima de $50". Aqui está uma fatia realista do catálogo em JSON primeiro:
[
{"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"}
]Agora o mesmo catálogo em TOON. Os cabeçalhos de coluna são declarados uma vez; cada linha é apenas valores:
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,AudioLog de Atividade do Usuário / Auditoria
Logs de auditoria são exatamente o tipo de dados que você alimentaria para um LLM com um prompt como "resuma o que este usuário fez na última hora" ou "sinalize quaisquer padrões de acesso suspeitos". São de alto volume, repetitivos, e os nomes das colunas são idênticos em cada linha. Trilhas de auditoria também tendem a ser a primeira coisa que explode sua janela de contexto quando você as cola como JSON. Aqui está um log realista de 9 linhas em TOON:
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.47O JSON equivalente repetiria "userId", "action", "resourceId", "resourceType", "timestamp" e "ip" em todas as nove linhas — 54 repetições de chave para seis nomes de campo. Em TOON eles aparecem exatamente uma vez. Para logs de auditoria com centenas de entradas, isso é a diferença entre os dados cabendo no seu prompt ou não.
Dados de Limite de Taxa de API / Métricas
Métricas operacionais — percentis de latência, taxas de erro, throughput — são outro encaixe natural para TOON. Os dados são pesados em números e perfeitamente tabulares. Você pode enviar isso para um LLM para perguntar "quais endpoints têm latência p99 acima de 500ms?" ou "onde a taxa de erro está subindo?". Este é o formato de dados que você normalmente veria saindo de um pipeline de métricas Node.js ou de um scrape do Prometheus:
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,3200O LLM pode responder imediatamente perguntas sobre esta tabela sem nenhum overhead de contexto. Note que /api/v2/search e /api/v2/checkout se destacam com alto p99 e taxas de erro elevadas — exatamente o tipo de padrão que um LLM pode surfacear instantaneamente quando você apresenta os dados de forma limpa.
Objeto de Configuração Aninhado
TOON lida com mais do que dados tabulares. Para objetos estruturados — o tipo de coisa que você encontraria na configuração de runtime de um app — TOON usa uma notação de objeto inline com estrutura aninhada. Pense nisso como um equivalente a formatos de serialização como TOML ou YAML, mas mais enxuto. Aqui está uma configuração realista de app mostrando configurações de servidor, configurações de banco de dados e flags de features:
{
"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
}
}A mesma configuração em notação de objeto TOON — chaves sem aspas, aninhamento usa chaves inline:
{
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}
}database acima, host:db.internal.example.com está bem como está — sem aspas necessárias porque o valor não contém nenhum dos dois. Se um valor contém vírgula ou dois-pontos, envolva-o entre aspas duplas: dsn:"host:5432,sslmode=require".Transações Financeiras
Dados financeiros são outro caso de uso de alto valor para LLM: dicas de detecção de fraude, verificações de reconciliação, categorização. A mistura de IDs de string, valores numéricos, códigos de moeda, enums de status e timestamps mapeia perfeitamente para o formato tabular do TOON. Aqui está uma fatia realista de transações:
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:15ZCole isso em um prompt junto com "sinalize quaisquer transações acima de £5.000 ou com status flagged ou failed" e o modelo responderá em segundos. A representação TOON é compacta o suficiente para que você comodamente encaixe várias centenas de linhas em um único prompt sem atingir os limites de contexto na maioria dos modelos.
Combinando Dados Tabulares e de Objetos em Um Documento
Aqui está algo que nem JSON nem CSV lida bem: um documento que tem tanto um cabeçalho de metadados (um único objeto de configuração) quanto uma tabela de dados no mesmo payload. Pense em um relatório com um bloco de contexto no topo — quem o gerou, que período de tempo abrange, que filtros foram aplicados — seguido pelas linhas de dados reais. Em JSON você precisaria envolver tudo em um objeto envelope com uma chave "meta" e uma chave "rows", o que adiciona outra camada de aninhamento. CSV não consegue fazer isso. TOON lida com isso nativamente:
{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,100000A primeira linha é um objeto TOON — os metadados do relatório. A linha em branco o separa da seção tabular que segue. Uma única chamada decode() do @toon-format/toon retorna ambos. Você pode enviar este documento inteiro para um LLM com uma pergunta como "quais representantes estão no caminho de atingir a cota?" e ele tem tudo que precisa: o contexto do relatório e os dados, em um único payload compacto.
Usando o pacote npm
Todos esses exemplos podem ser codificados e decodificados programaticamente. O pacote @toon-format/toon é a implementação de referência. Instale em qualquer projeto Node.js ou de navegador:
npm install @toon-format/toonEntão codifique seus dados antes de enviá-los para qualquer API de LLM, e decodifique a resposta no retorno:
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"Conclusão
Os padrões acima — catálogos de produtos, logs de auditoria, tabelas de métricas, objetos de configuração, dados financeiros, documentos mistos de cabeçalho+tabela — cobrem a grande maioria dos dados estruturados que desenvolvedores realmente enviam para LLMs. TOON lida bem com todos eles, e a economia de tokens é significativa em cada caso. A regra central é simples: JSON repete nomes de chaves em cada linha; TOON não. Para serialização de dados tabulares que vão para uma janela de contexto de LLM, essa repetição é puro desperdício.
Para converter JSON existente para TOON, use o conversor JSON para TOON. Para ir na outra direção depois que um LLM retorna TOON, use o conversor TOON para JSON. O TOON Formatter limpa e valida strings TOON, e o TOON Validator irá capturar erros de sintaxe antes de chegarem ao seu pipeline. O pacote npm @toon-format/toon lida com codificação e decodificação em duas linhas de código — todos os exemplos acima funcionam imediatamente.