Co to jest TOON?

TOON
JSON
Optymalizacja

Wszyscy tam byliśmy. Projektujesz monit dla modelu dużego języka (LLM) i musisz przekazać dane strukturalne. Sięgasz po JSON. W końcu to standard branżowy. Ale kiedy widzisz, jak okno kontekstowe wypełnia się niekończącymi się nawiasami klamrowymi, powtarzającymi się klawiszami i cudzysłowami wokół prostych liczb całkowitych, zaczynasz się zastanawiać: Czy istnieje lepszy sposób?

YAML zapewnia czytelność, ale jest niejednoznaczny. CSV jest gęsty, ale brakuje mu hierarchii.

Wpisz TOON.

TOON to format serializacji danych, który dla programistów jest jak powiew świeżego powietrza i język natywny dla modeli AI. Wypełnia lukę pomiędzy czytelnością dla człowieka a wydajnością maszyn. Dzisiaj przyjrzyjmy się bliżej składni i mechanice TOON, aby zrozumieć, dlaczego szybko staje się on ulubionym narzędziem do wysokowydajnej wymiany danych.

Filozofia: semantyka JSON, estetyka YAML

W swojej istocie TOON ma dokładnie ten sam model danych co JSON. Jeśli możesz przedstawić to w formacie JSON — elementy podstawowe (łańcuchy, liczby, wartości logiczne, wartość null), obiekty i tablice — możesz to przedstawić w TOON. Jednak prezentacja jest diametralnie inna.

TOON rezygnuje z aparatu ortodontycznego. Używa wcięć do reprezentowania hierarchii, podobnie jak YAML. Prosty obiekt wygląda czysto i przystępnie:

Jednak w przeciwieństwie do YAML TOON rygorystycznie podchodzi do typów. Nie ma zgadywania, czy „nie” oznacza „fałsz”, czy ciąg znaków „nie”. W TOON ciągi znaków wymagają cudzysłowów tylko wtedy, gdy jest to absolutnie konieczne — na przykład gdy zawierają znaki specjalne, przypominają liczby lub są puste. Jeśli wpiszesz message: Hello World, otrzymasz ciąg znaków. Jeśli wpiszesz „liczba: 42”, otrzymasz liczbę.

identyfikator: 123 
imię: Ada 
aktywny: prawda 

Potęga tablic: długość i tablice

Tym, czym TOON naprawdę oddziela się od pakietu, jest obsługa tablic. Jest to „zabójcza funkcja” optymalizacji tokenów.

Każda tablica w TOON jawnie deklaruje swoją długość w nawiasach, np. „elementy [3]”. Człowiekowi może się to wydawać zbędne, ale dla LLM jest to supermoc. Umożliwia modelowi natychmiastową walidację struktury i wykrycie obcięcia. Jeśli strumień zostanie przerwany po dwóch elementach, ale nagłówek obiecał trzy, analizator składniowy wie, że coś poszło nie tak.

TOON skutecznie oferuje trzy sposoby obsługi tablic, automatycznie wybierając najbardziej efektywny:

  1. Wbudowane elementy podstawowe: W przypadku prostych list liczb lub ciągów znaków TOON zapewnia zwartość. tagi[3]: administrator, ops, programista
  1. Listy standardowe: W przypadku typów mieszanych używa składni listy z łącznikami podobnej do YAML.
  1. Obiekty tabelaryczne: To zmienia zasady gry.

Jeśli masz tablicę obiektów mających te same klucze – co jest bardzo powszechnym wzorcem w rekordach bazy danych – TOON przechodzi do Formatu tabelarycznego. zamiast powtarzać klucze dla każdego wiersza, deklaruje klucze raz w nagłówku.

W powyższym przykładzie users[2]{id,name,role}: mówi nam, że mamy 2 wiersze i definiuje schemat. Dane mają strukturę przypominającą plik CSV. Eliminuje to ogromne obciążenie tokena polegające na powtarzaniu „id”:, „nazwy”: i „roli”:` dla każdego użytkownika.

użytkownicy[2]{id, nazwa, rola}: 
1,Alice Admin,administrator 
2, Bob Smith, użytkownik 

Ograniczniki i wydajność tokena

W powyższych przykładach możesz zauważyć użycie przecinków. TOON faktycznie obsługuje trzy ograniczniki: przecinki (domyślnie), tabulatory i kreski (|).

Dlaczego to ma znaczenie? Tokenizacja.

W wielu tokenizatorach LLM przecinek, po którym następuje cudzysłów, może zostać podzielony na wiele tokenów. Jednak znak tabulacji często tokenizuje bardzo czysto. TOON umożliwia przełączanie ograniczników na poziomie nagłówka tablicy. Jeśli używasz ogranicznika tabulacji, często nie musisz nawet cytować ciągów zawierających spacje, co dodatkowo kompresuje dane.

Format jest wystarczająco inteligentny, aby obsłużyć „kolizje”. Jeśli dane zawierają aktywny ogranicznik, TOON po prostu cytuje tę konkretną wartość.

items[2]{sku,nazwa,ilość}: 
A1, nazwa widgetu, 2 
B2, nazwa gadżetu, 1 

Składanie kluczy: spłaszczanie krzywej

Kolejną funkcją podkreślającą skupienie TOON na wydajności jest składanie kluczy. Głęboko zagnieżdżone obiekty zwykle skutkują „schodami” wcięć, które pochłaniają poziomą przestrzeń i żetony.

Jeśli masz głęboką hierarchię, w której obiekty pośrednie nie mają rodzeństwa, TOON może zwinąć je w ścieżkę z notacją kropkową.

Zamiast pisać:

Możesz napisać:

dane: 
metadane: 
pozycje[2]: a,b 

Ta funkcja, dostępna od wersji 1.5 specyfikacji, znacznie zmniejsza liczbę linii i tokeny wcięć. Co ważne, jest to w pełni odwracalne. Kiedy dekodujesz dane z włączoną opcją rozwijania ścieżek, doskonale rekonstruuje to głęboką hierarchię obiektów.

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

Rygoryzm i bezpieczeństwo

Pomimo zwięzłego wyglądu TOON nie jest luźny w zakresie danych. Przestrzega ścisłych zasad cytowania i ucieczki.

Ciągi znaków zazwyczaj pozostają bez cudzysłowów, co jest świetne dla czytelności. Jednakże TOON wymusza cytowanie w przypadkach brzegowych, aby zapewnić integralność danych. Jeśli ciąg znaków wygląda jak liczba (np. „05” lub „1e-6”), jest umieszczany w cudzysłowie, aby zapobiec przeanalizowaniu go jako liczby. Jeśli ciąg znaków jest słowem zastrzeżonym, np. „true” lub „null”, jest cytowany.

Ponadto TOON normalizuje liczby. Emituje kanoniczne formy dziesiętne — bez notacji naukowej i zer końcowych na wyjściu — zapewniając spójność. Bezpiecznie obsługuje nawet BigInt; jeśli liczba przekracza bezpieczny zakres liczb całkowitych, jest serializowana jako ciąg znaków, aby zapobiec utracie precyzji podczas transportu.

Formy korzeni

Podczas gdy większość z nas pracuje z obiektami głównymi, TOON jest elastyczny. Dokument nie musi zaczynać się od pary klucz-wartość. Obsługuje tablice główne (zaczynające się natychmiast od [N]:) lub nawet pojedynczy element podstawowy. Ta parzystość z JSON oznacza, że ​​możesz zamienić TOON na prawie każdy potok, w którym aktualnie używany jest JSON, pod warunkiem, że masz parser na drugim końcu.

Końcowe przemyślenia

TOON to nie tylko „inny format”. Jest to wyspecjalizowane narzędzie na miarę epoki, w której dane są wykorzystywane zarówno przez modele probabilistyczne, jak i przez kod deterministyczny. Łącząc sztywny model danych JSON z gęstością CSV i czytelnością YAML, rozwiązuje specyficzny problem optymalizacji okna kontekstowego bez utraty bezpieczeństwa typów.

Jeśli tworzysz agentów, dostrajasz modele lub po prostu masz dość przewijania niekończących się nawiasów zamykających, nadszedł czas, aby rzucić okiem na TOON.