Ce este TOON?
Cu toții am fost acolo. Creați o solicitare pentru un model de limbă mare (LLM) și trebuie să transmiteți date structurate. Ajungeți la JSON. Este standardul industriei, până la urmă. Dar, pe măsură ce vă uitați la fereastra contextului cum se umple de acolade nesfârșite, taste repetate și ghilimele în jurul numerelor întregi simple, începeți să vă întrebați: Există o modalitate mai bună?
YAML oferă lizibilitate, dar suferă de ambiguitate. CSV este dens, dar lipsit de ierarhie.
Introdu TOON.
TOON este un format de serializare a datelor care se simte ca o gură de aer proaspăt pentru dezvoltatori și o limbă nativă pentru modelele AI. Reduce decalajul dintre lizibilitatea umană și eficiența mașinii. Astăzi, să ne aprofundăm în sintaxa și mecanica TOON pentru a înțelege de ce acesta devine rapid favorit pentru schimbul de date de înaltă eficiență.
Filosofia: Semantica JSON, Estetica YAML
În esență, TOON împărtășește exact același model de date ca și JSON. Dacă îl puteți reprezenta în JSON - primitive (șiruri, numere, boolean, nul), obiecte și matrice - îl puteți reprezenta în TOON. Cu toate acestea, prezentarea este radical diferită.
TOON renunță la bretele. Utilizează indentarea pentru a reprezenta ierarhia, la fel ca YAML. Un obiect simplu pare curat și accesibil:
Spre deosebire de YAML, totuși, TOON este strict în privința tipurilor. Nu se poate ghici dacă „nu” înseamnă „fals” sau șirul „nu”. În TOON, șirurile necesită ghilimele numai atunci când este absolut necesar, cum ar fi atunci când conțin caractere speciale, seamănă cu numere sau sunt goale. Dacă tastați „message: Hello World”, veți primi un șir. Dacă tastați count: 42, obțineți un număr.
id: 123
nume: Ada
activ: adevărat
Puterea matricelor: lungime și tabele
Acolo unde TOON se separă cu adevărat de pachet este gestionarea matricelor. Aceasta este „funcția ucigașă” pentru optimizarea jetonelor.
Fiecare tablou din TOON își declară în mod explicit lungimea între paranteze, cum ar fi items[3]. Acest lucru ar putea părea redundant pentru un om, dar pentru un LLM, este o superputere. Acesta permite modelului să valideze structura imediat și să detecteze trunchierea. Dacă fluxul se întrerupe după două elemente, dar antetul a promis trei, analizatorul știe că ceva a mers prost.
TOON oferă în mod eficient trei moduri de a gestiona matrice, alegând-o automat pe cea mai eficientă:
- Primitive inline: Pentru liste simple de numere sau șiruri, TOON le păstrează compact.
tags[3]: admin,ops,dev
- Liste standard: pentru tipuri mixte, folosește o sintaxă de listă cu cratime similară cu YAML.
- Obiecte tabulare: Acesta este schimbarea jocului.
Dacă aveți o serie de obiecte care partajează aceleași chei - un model foarte comun în înregistrările bazei de date - TOON pivotează la un Format tabelar. în loc să repete cheile pentru fiecare rând, declară cheile o dată în antet.
În exemplul de mai sus, users[2]{id,name,role}: ne spune că avem 2 rânduri și definește schema. Datele urmează într-o structură asemănătoare CSV. Acest lucru elimină supraîncărcarea masivă a simbolurilor de repetare a "id":, "name": și "role": pentru fiecare utilizator.
utilizatori[2]{id,nume,rol}:
1, Alice Admin, admin
2, Bob Smith, utilizator
Delimitatori și eficiență token
Este posibil să observați utilizarea virgulelor în exemplele de mai sus. TOON acceptă de fapt trei delimitatori: virgule (implicit), tab-uri și conducte (|).
De ce contează asta? Tokenizare.
În multe jetoane LLM, o virgulă urmată de un citat poate fi împărțită în mai multe jetoane. Cu toate acestea, un caracter de filă deseori tokenizează foarte curat. TOON vă permite să comutați delimitatorii la nivelul antetului matricei. Dacă utilizați un delimitator de tabulatori, adesea nici nu este nevoie să citați șiruri care conțin spații, comprimându-vă și mai mult datele.
Formatul este suficient de inteligent pentru a face față „coliziunilor”. Dacă datele dvs. conțin delimitatorul activ, TOON pur și simplu citează acea valoare specifică.
articole[2]{sku,name,qty}:
A1,Nume widget,2
B2, Numele gadgetului,1
Pliere cheie: aplatizarea curbei
O altă caracteristică care evidențiază concentrarea TOON asupra eficienței este Key Folding. Obiectele profund imbricate au ca rezultat de obicei o „scara” de indentare care consumă spațiu orizontal și jetoane.
Dacă aveți o ierarhie profundă în care obiectele intermediare nu au frați, TOON le poate restrânge într-o cale de notare a punctelor.
In loc sa scrii:
Puteți scrie:
date:
metadate:
articole[2]: a,b
Această caracteristică, disponibilă începând cu specificația v1.5, reduce semnificativ numărul de linii și simbolurile de indentare. Important este că acest lucru este complet reversibil. Când decodați datele cu extinderea căii activată, reconstruiește perfect ierarhia obiectelor profunde.
date.metadate.articole[2]: a,b
Severitate și siguranță
În ciuda aspectului său concis, TOON nu este liber cu date. Respectă un set strict de reguli pentru citare și evadare.
Șirurile de caractere rămân, în general, fără ghilimele, ceea ce este excelent pentru lizibilitate. Cu toate acestea, TOON impune cotarea pentru cazurile marginale pentru a asigura integritatea datelor. Dacă un șir arată ca un număr (de exemplu, "05" sau "1e-6"), acesta este citat pentru a preveni analizarea ca număr. Dacă un șir este un cuvânt rezervat, cum ar fi „adevărat” sau „null”, acesta este citat.
În plus, TOON normalizează numerele. Emite forme zecimale canonice - fără notație științifică sau zerouri finale în rezultat - asigurând consistența. Se ocupă chiar și de BigInt în siguranță; dacă un număr depășește intervalul de numere întregi sigure, acesta este serializat ca șir pentru a preveni pierderea preciziei în timpul transportului.
Forme rădăcină
În timp ce majoritatea dintre noi lucrăm cu obiecte rădăcină, TOON este flexibil. Un document nu trebuie să înceapă cu o pereche cheie-valoare. Suportă Root Arrays (începând imediat cu [N]:) sau chiar un singur Root Primitive. Această paritate cu JSON înseamnă că puteți schimba TOON în aproape orice conductă în care este utilizat în prezent JSON, cu condiția să aveți analizatorul la celălalt capăt.
Gânduri finale
TOON nu este doar „un alt format”. Este un instrument specializat pentru o epocă în care datele sunt consumate de modele probabilistice la fel de des ca și de codul determinist. Prin combinarea modelului de date rigid al JSON cu densitatea CSV și lizibilitatea lui YAML, rezolvă problema specifică a optimizării ferestrei de context fără a sacrifica siguranța tipului.
Dacă sunteți agenți de construcție, ajustați modele sau doar v-ați săturat să defilați printre bretele de închidere nesfârșite, este timpul să aruncați o privire pe TOON.