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:

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"}
]

Şimdi TOON'da aynı katalog. Sütun başlıkları bir kez tanımlanır; her satır yalnızca değerleri içerir:

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
TOON'daki altı sütun başlığı tam olarak bir kez yazılır. JSON'da her satırda tekrarlanır. 3. satıra gelindiğinde başlık zaten token tasarrufu açısından kendini amorti etti — 200 satırlık bir katalogda fark çarpıcıdır. Kendi verileriniz için tasarrufu doğrulamak üzere OpenAI tokenizer'ı kullanın.

Kullanı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:

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

Eş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:

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

LLM 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ı:

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
  }
}

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:

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}
}
TOON'un nesne sözdizimi, bir değer virgül veya iki nokta üst üste içermedikçe anahtarları tırnak içine almaz. Yukarıdaki 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:

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

Bunu 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:

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

İ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.

Bu karışık format, özellikle LLM kanalları için güçlüdür. İç içe geçmiş anahtarlarla bir JSON zarfı oluşturmak yerine, düz bir başlık nesnesi + adlandırılmış tablo yazarsınız. Model onu doğal olarak okur ve oluşturma kodunuz önemsizdir. Mevcut JSON payload'larını dönüştürmek için JSON'dan TOON'a dönüştürücüyü veya el yazısı TOON'u temizleyip doğrulamak için TOON Biçimleyici'yi kullanın.

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:

bash
npm install @toon-format/toon

Sonra verilerinizi herhangi bir LLM API'sine göndermeden önce kodlayın ve dönüş yolunda yanıtı çözün:

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"

Ö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.