TOON nedir?

TOON
JSON
Optimizasyon

Hepimiz oradaydık. Büyük Dil Modeli (LLM) için bir bilgi istemi tasarlıyorsunuz ve yapılandırılmış verileri iletmeniz gerekiyor. JSON'a ulaşıyorsunuz. Sonuçta bu endüstri standardı. Ancak bağlam pencerenizin sonsuz küme parantezleri, tekrarlanan tuşlar ve basit tamsayıların etrafındaki tırnak işaretleriyle dolmasını izledikçe şunu merak etmeye başlarsınız: Daha iyi bir yolu var mı?

YAML okunabilirlik sunar ancak belirsizlikten muzdariptir. CSV yoğundur ancak hiyerarşiden yoksundur.

TOON girin.

TOON, geliştiriciler için temiz bir nefes, yapay zeka modelleri için ise ana dil hissi veren bir veri serileştirme formatıdır. İnsan tarafından okunabilirlik ile makine verimliliği arasındaki boşluğu doldurur. Bugün, yüksek verimli veri alışverişinde neden hızla favori haline geldiğini anlamak için TOON'un söz dizimi ve mekaniğinin derinliklerine inelim.

Felsefe: JSON Semantiği, YAML Estetiği

TOON, özünde JSON ile tamamen aynı veri modelini paylaşıyor. Bunu JSON'da (ilkeller (dizeler, sayılar, boolean'lar, boş), nesneler ve diziler) temsil edebiliyorsanız, onu TOON'da temsil edebilirsiniz. Ancak sunum tamamen farklıdır.

TOON diş tellerini bırakıyor. YAML'ye çok benzer şekilde hiyerarşiyi temsil etmek için girintiyi kullanır. Basit bir nesne temiz ve ulaşılabilir görünür:

Ancak YAML'den farklı olarak TOON türler konusunda katıdır. 'Hayır'ın 'yanlış' mı yoksa 'hayır' dizesi mi olduğu konusunda hiçbir tahmin yoktur. TOON'da dizeler yalnızca kesinlikle gerekli olduğunda (örneğin özel karakterler içerdiklerinde, sayılara benzediklerinde veya boş olduklarında) tırnak işaretleri gerektirir. 'Mesaj: Merhaba Dünya' yazarsanız bir dize alırsınız. 'Sayı: 42' yazarsanız bir sayı alırsınız.

kimlik: 123 
isim: Ada 
aktif: doğru 
''''

Dizilerin Gücü: Uzunluk ve Tablolar

TOON'un kendisini paketten gerçekten ayırdığı nokta dizileri yönetmesidir. Bu, token optimizasyonu için "önleyici özelliktir".

TOON'daki her dizi, uzunluğunu "items[3]" gibi parantez içinde açıkça belirtir. Bu bir insana gereksiz görünebilir, ancak bir Yüksek Lisans için bu bir süper güçtür. Modelin yapıyı anında doğrulamasını ve kesmeyi tespit etmesini sağlar. Akış iki öğeden sonra kesilirse ancak başlık üç öğe vaat ettiyse ayrıştırıcı bir şeylerin ters gittiğini biliyor demektir.

TOON, dizileri işlemek için etkili bir şekilde üç yol sunar ve en verimli olanı otomatik olarak seçer:

  1. Satır İçi Temel Öğeler: Basit sayı veya dize listeleri için TOON, onu kompakt tutar. 'etiketler[3]: yönetici, işlemler, geliştirici'
  1. Standart Listeler: Karma türler için YAML'ye benzer tireli liste söz dizimi kullanır.
  1. Tablo Nesneleri: Bu, oyunun kurallarını değiştiren bir şey.

Aynı anahtarları paylaşan bir dizi nesneniz varsa (veritabanı kayıtlarında çok yaygın bir model), TOON Tablo Formatına geçiş yapar. Anahtarları her satır için tekrarlamak yerine, anahtarları başlıkta bir kez bildirir.

Yukarıdaki örnekte users[2]{id,name,role}: bize 2 satırımız olduğunu söyler ve şemayı tanımlar. Veriler CSV benzeri bir yapıda takip edilir. Bu, her kullanıcı için "id":, "name": ve "role": tekrarından kaynaklanan devasa belirteç yükünü ortadan kaldırır.

kullanıcılar[2]{id,name,role}: 
1,Alice Yönetici, yönetici 
2,Bob Smith,kullanıcı 
''''

Sınırlayıcılar ve Belirteç Verimliliği

Yukarıdaki örneklerde virgül kullanıldığını fark edebilirsiniz. TOON aslında üç sınırlayıcıyı destekler: virgüller (varsayılan), sekmeler ve dikey çizgiler (|).

Bu neden önemli? Tokenizasyon.

Birçok LLM tokenlaştırıcısında, bir virgül ve ardından bir fiyat teklifi birden fazla tokene bölünebilir. Ancak bir sekme karakteri genellikle çok temiz bir şekilde belirteçlenir. TOON, sınırlayıcıları dizi başlığı düzeyinde değiştirmenize olanak tanır. Sekme sınırlayıcı kullanıyorsanız çoğu zaman boşluk içeren dizelerden alıntı yapmanıza bile gerek kalmaz, bu da verilerinizi daha da sıkıştırır.

Format "çarpışmaları" halledebilecek kadar akıllıdır. Verileriniz aktif sınırlayıcıyı içeriyorsa, TOON yalnızca bu belirli değeri tırnak içine alır.

öğeler[2]{sku,name,qty}: 
A1, Widget Adı, 2 
B2, Araç Adı, 1 
''''

Anahtar Katlama: Eğriyi Düzleştirme

TOON'un verimliliğe odaklandığını öne çıkaran bir diğer özellik de Anahtar Katlama. Derinlemesine yuvalanmış nesneler genellikle yatay alanı ve jetonları tüketen bir "merdiven" girintisine neden olur.

Ara nesnelerin kardeşlerinin olmadığı derin bir hiyerarşiniz varsa, TOON bunları nokta gösterim yoluna daraltabilir.

Yazmak yerine:

Şunları yazabilirsiniz:

veriler: 
meta veriler: 
öğeler[2]: a,b 
''''

Spec v1.5'ten beri mevcut olan bu özellik, satır sayısını ve girinti belirteçlerini önemli ölçüde azaltır. Daha da önemlisi, bu tamamen tersine çevrilebilir. Yol genişletme etkinken verilerin kodunu çözdüğünüzde, derin nesne hiyerarşisi mükemmel bir şekilde yeniden oluşturulur.

data.metadata.items[2]: a,b 
''''

Sıkılık ve Güvenlik

Kısa ve öz görünümüne rağmen TOON veriler konusunda gevşek değil. Alıntı yapma ve kaçma konusunda katı kurallara uyar.

Dizeler genellikle alıntı yapılmadan kalır, bu da okunabilirlik açısından mükemmeldir. Ancak TOON, veri bütünlüğünü sağlamak amacıyla uç durumlar için alıntılamayı zorunlu kılar. Bir dize sayıya benziyorsa (örneğin, "05" veya "1e-6"), sayı olarak ayrıştırılmasını önlemek için tırnak içine alınır. Bir dize "true" veya "null" gibi ayrılmış bir sözcükse tırnak içine alınır.

Ayrıca TOON sayıları normalleştirir. Tutarlılık sağlamak için kanonik ondalık formlar yayar (çıktıda bilimsel gösterim veya sondaki sıfır yoktur). BigInt'i bile güvenle yönetir; bir sayı güvenli tamsayı aralığını aşarsa taşıma sırasında hassasiyet kaybını önlemek için dize olarak serileştirilir.

Kök Formlar

Çoğumuz Kök Nesnelerle çalışırken TOON esnektir. Bir belgenin anahtar/değer çiftiyle başlaması gerekmez. Kök Dizileri (hemen '[N]:' ile başlar) ve hatta tek bir Kök İlkel'i destekler. JSON ile olan bu eşitlik, ayrıştırıcının diğer uçta olması koşuluyla, TOON'u şu anda JSON'un kullanıldığı hemen hemen her boru hattına değiştirebileceğiniz anlamına gelir.

Son Düşünceler

TOON yalnızca "başka bir format" değildir. Verilerin deterministik kodlar kadar sıklıkla olasılıksal modeller tarafından da tüketildiği bir çağ için özel bir araçtır. JSON'un katı veri modelini CSV'nin yoğunluğu ve YAML'nin okunabilirliğiyle birleştirerek, tür güvenliğinden ödün vermeden bağlam penceresi optimizasyonuna ilişkin spesifik sorunu çözer.

Eğer ajanlar oluşturuyorsanız, modellere ince ayar yapıyorsanız veya sonsuz kapanış parantezleri arasında gezinmekten sıkıldıysanız, TOON'a bir göz atmanın zamanı geldi.