Format dokümantasyonu oyuncak örnekleri sever — üç satır, sahte isimler, beş sütun. Bu sözdizimini öğrenmek için iyidir, ancak bir formatın iş yerinde gerçekten karşılaştığınız şekilleri işleyip işlemediğini söylemez. Bu makale oyuncakları atlıyor. Aşağıda gerçek backend geliştirmede sürekli karşılaşılan veri desenleri var — ürün katalogları, denetim günlükleri, metrik tabloları, yapılandırma nesneleri, finansal işlemler — tam olarak ne tasarruf ettiğinizi ve TOON'un neyi hak ettiğini görmek için her iki formatta JSON ve TOON yan yana gösteriliyor. Tüm veriler gerçekçidir; hiçbir yerde foo, bar veya yer tutucu isim yok. Formatın kendisi hakkında arka plan için TOON sözdizimi kılavuzuna bakın.
E-Ticaret Ürün Kataloğu
Geliştiricilerin bir LLM'e gönderdikleri en yaygın şey muhtemelen ürün dizisidir — "bu öğeleri sınıflandır", "her kategorideki en ucuzu bul", "stokta olmayan ve fiyatı 50$'ın üzerinde olanları işaretle". İşte önce JSON'da gerçekçi bir katalog dilimi:
[
{"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"}
]Şimdi TOON'da aynı katalog. Sütun başlıkları bir kez tanımlanır; her satır yalnızca değerleri içerir:
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,AudioKullanıcı Aktivitesi / Denetim Günlüğü
Denetim günlükleri tam olarak "bu kullanıcının son bir saatte ne yaptığını özetle" veya "şüpheli erişim kalıplarını işaretle" gibi bir istemle bir LLM'e besleyeceğiniz veri türüdür. Yüksek hacimli, tekrarlayan ve sütun adları her satırda aynı. Denetim izleri ayrıca JSON olarak yapıştırdığınızda bağlam pencerenizi ilk patlatan şey olmaya da meyillidir. İşte TOON'da gerçekçi 9 satırlık bir günlük:
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.47Eşdeğer JSON'da "userId", "action", "resourceId", "resourceType", "timestamp" ve "ip" tüm dokuz satırda tekrar eder — altı alan adı için 54 anahtar tekrarı. TOON'da tam olarak bir kez görünür. Yüzlerce giriş içeren denetim günlükleri için, bu verinin isteğe sığması ile sığmaması arasındaki farktır.
API Hız Sınırı / Metrik Verisi
Operasyonel metrikler — gecikme yüzdelik dilimleri, hata oranları, throughput — TOON için başka bir doğal uyumdur. Veri sayısal ağırlıklı ve mükemmel tabeldir. Bunu bir LLM'e göndererek "p99 gecikmesi 500ms'nin üzerinde olan uç noktalar hangileri?" veya "hata oranı nerede yükseliyor?" diye sorabilirsiniz. Bu, tipik olarak bir Node.js metrik kanalından veya Prometheus taramasından çıkan veri şeklidir:
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,3200LLM bu tablo hakkında bağlam yükü olmadan anında soruları yanıtlayabilir. /api/v2/search ve /api/v2/checkout'un hem yüksek p99 hem de yüksek hata oranlarıyla öne çıktığına dikkat edin — veriyi temiz sunduğunuzda LLM'in anında ortaya çıkarabileceği tam olarak bu tür bir desendir.
İç İçe Yapılandırma Nesnesi
TOON tablo verilerinden fazlasını işler. Yapılandırılmış nesneler için — bir uygulamanın çalışma zamanı yapılandırmasında bulabileceğiniz türden — TOON iç içe yapıyla satır içi nesne notasyonu kullanır. Bunu serileştirme formatları'nın TOML veya YAML gibi, ama daha yalın bir karşıtı olarak düşünün. İşte sunucu ayarları, veritabanı ayarları ve özellik bayraklarını gösteren gerçekçi bir uygulama yapılandırması:
{
"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
}
}TOON nesne notasyonunda aynı yapılandırma — anahtarlar tırnaksız, iç içe geçme satır içi süslü parantezler kullanır:
{
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 bloğunda host:db.internal.example.com olduğu gibi iyidir — değer ikisini de içermediğinden tırnak gerekmiyor. Bir değer virgül veya iki nokta üst üste içeriyorsa, çift tırnak içine alın: dsn:"host:5432,sslmode=require".Finansal İşlemler
Finansal veri başka bir yüksek değerli LLM kullanım senaryosudur: dolandırıcılık tespiti ipuçları, mutabakat kontrolleri, kategorilendirme. Dize kimlikleri, sayısal tutarlar, para birimi kodları, durum sayımları ve zaman damgalarının karışımı TOON'un tablo formatına temiz biçimde eşlenir. İşte gerçekçi bir işlem dilimi:
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:15ZBunu bir isteme "5.000£'ın üzerindeki veya durumu flagged ya da failed olan işlemleri işaretle" sorusuyla yapıştırın ve model saniyeler içinde yanıt verir. TOON gösterimi, çoğu modelde bağlam sınırlarına ulaşmadan tek bir istemde rahatça birkaç yüz satır sığdırabileceğiniz kadar kompakttır.
Tek Belgede Tablo ve Nesne Verilerini Birleştirme
JSON veya CSV'nin temiz şekilde işleyemediği bir şey: hem meta veri başlığı (tek bir yapılandırma nesnesi) hem de aynı payload'da veri tablosu bulunan bir belge. Üstte bir bağlam bloğu olan bir rapor düşünün — kimin oluşturduğu, hangi zaman dilimini kapsadığı, hangi filtrelerin uygulandığı — ardından gerçek veri satırları. JSON'da her şeyi bir "meta" anahtarı ve "rows" anahtarı olan bir zarf nesnesine sarmanız gerekirdi, bu da başka bir iç içe geçme katmanı ekler. CSV bunu hiç yapamaz. TOON bunu yerel olarak işler:
{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İlk satır bir TOON nesnesidir — rapor meta verisi. Boş satır onu izleyen tablo bölümünden ayırır. Tek bir decode() çağrısı @toon-format/toon'dan her ikisini de döndürür. Bu belgenin tamamını "kota hedefine ulaşan temsilciler hangileri?" gibi bir soruyla bir LLM'e gönderebilirsiniz ve modelin ihtiyacı olan her şey vardır: rapor bağlamı ve veriler, tek kompakt payload'da.
npm Paketini Kullanma
Bu örneklerin tümü programatik olarak kodlanabilir ve çözülebilir. @toon-format/toon paketi referans uygulamasıdır. Herhangi bir Node.js ve ya tarayıcı projesine yükleyin:
npm install @toon-format/toonSonra verilerinizi herhangi bir LLM API'sine göndermeden önce kodlayın ve dönüş yolunda yanıtı çözün:
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"Özet
Yukarıdaki desenler — ürün katalogları, denetim günlükleri, metrik tabloları, yapılandırma nesneleri, finansal veriler, karışık başlık+tablo belgeleri — geliştiricilerin gerçekten LLM'lere gönderdikleri yapılandırılmış verilerin büyük çoğunluğunu kapsıyor. TOON hepsini iyi işler ve token tasarrufu her durumda önemlidir. Temel kural basittir: JSON her satırda anahtar adlarını tekrarlar; TOON tekrarlamaz. LLM bağlam penceresine giden tablo veri serileştirme için bu tekrar saf israftır.
Mevcut JSON'ı TOON'a dönüştürmek için JSON'dan TOON'a dönüştürücüyü kullanın. Bir LLM TOON döndürdükten sonra diğer yöne gitmek için TOON'dan JSON'a dönüştürücüyü kullanın. TOON Biçimleyici TOON dizelerini temizleyip doğrular ve TOON Doğrulayıcı sözdizimi hatalarını ardışık düzeninize ulaşmadan önce yakalar. npm paketi @toon-format/toon iki satır kodla kodlama ve çözmeyi halleder — yukarıdaki tüm örnekler kutudan çıktığı gibi çalışır.