Wprowadzenie
Różne formaty danych istnieją, ponieważ rozwiązują różne problemy. JSON jest ścisły i zorientowany na maszyny. YAML jest czytelny. CSV jest minimalny. TOON jest ekstremalnie kompaktowy i specjalnie zaprojektowany do redukcji obciążenia tokenami LLM. TRON rozszerza JSON o definicje klas dla wstecznie kompatybilnej kompresji.
Dlaczego te formaty istnieją
TOON (Token-Oriented Object Notation) tworzy bardziej kompaktowy, efektywny tokenowo sposób wysyłania strukturyzowanych danych do dużych modeli językowych (LLM). Usuwając niepotrzebne nawiasy klamrowe, cudzysłowy, nawiasy kwadratowe i przecinki, TOON:
- Redukuje liczbę tokenów o 70-75%
- Znacząco obniża koszty API
- Zmniejsza opóźnienia
- Pozwala na większe zestawy danych w limitach tokenów
- Działa jako warstwa translacji zoptymalizowana specjalnie dla wejścia AI
TRON (Token Reduced Object Notation) stosuje inne podejście — rozszerza JSON o składnię instancjacji klas:
- Redukuje liczbę tokenów o 20-40%
- Zachowuje kompatybilność z JSON (każdy JSON jest poprawnym TRON)
- Eliminuje powtarzające się nazwy pól w jednolitych tablicach
- Umożliwia stopniową migrację z istniejących workflow JSON
- Wspiera zagnieżdżone definicje klas dla złożonych struktur
Co obejmuje ten artykuł
To kompleksowe porównanie analizuje 14 scenariuszy testowych w wielu kategoriach:
Testy podstawowe
- Płaskie struktury
- Proste zagnieżdżone struktury
- Rozszerzone zagnieżdżone struktury
Scenariusze rzeczywiste
- Odpowiedzi API z mieszanymi typami danych
- Pliki konfiguracyjne
- Dane logów
- Dane szeregów czasowych
Przypadki brzegowe
- Znaki specjalne i escapowanie
- Obsługa Unicode i emoji
- Reprezentacja wartości null/pustych
Struktury z dużą ilością tablic
- Duże tablice prymitywów
- Dane macierzowe/siatkowe (tablice 2D)
Przypadki użycia specyficzne dla LLM
- Fragmenty dokumentów RAG z metadanymi
- Schematy wywołań funkcji
- Przykłady few-shot prompting
Szybkie podsumowanie wyników
Ranking efektywności tokenów (średnia z 14 testów)
| Format | Efektywność vs najlepszy | Przypadek użycia |
|---|---|---|
| CSV | 100% | Tylko płaskie dane |
| TOON (tabela) | 92% | Strukturyzowane tablice |
| TOON (obiekt) | 85% | Pełne zagnieżdżanie |
| TRON | 75% | Kompresja kompatybilna z JSON |
| YAML | 65% | Czytelny dla ludzi |
| JSON | 45% | Uniwersalna kompatybilność |
Wpływ na koszty (10K rekordów, ceny GPT-4)
| Format | Koszt/wywołanie | Roczny koszt* | Oszczędności vs JSON |
|---|---|---|---|
| JSON | $5.60 | $5.6M | punkt odniesienia |
| YAML | $3.33 | $3.3M | 41% |
| TRON | $2.24 | $2.24M | 60% |
| TOON | $1.38 | $1.38M | 75% |
| CSV | $1.14 | $1.14M | 80% |
*Na podstawie 1M wywołań API/rok
Wpływ na okno kontekstowe
Z limitem 128K tokenów (GPT-4):
- JSON: ~17K rekordów
- YAML: ~29K rekordów
- TRON: ~45K rekordów (2.6× poprawa)
- TOON: ~70K rekordów (4× poprawa)
- CSV: ~85K rekordów
Test 1: Płaska struktura (10 użytkowników)
JSON — 746 znaków
{
"users": [
{ "id": 1, "name": "User1", "active": true },
{ "id": 2, "name": "User2", "active": false },
{ "id": 3, "name": "User3", "active": true },
{ "id": 4, "name": "User4", "active": false },
{ "id": 5, "name": "User5", "active": true },
{ "id": 6, "name": "User6", "active": false },
{ "id": 7, "name": "User7", "active": true },
{ "id": 8, "name": "User8", "active": false },
{ "id": 9, "name": "User9", "active": true },
{ "id": 10, "name": "User10", "active": false }
]
}
YAML — 444 znaki
users:
- id: 1
name: User1
active: true
- id: 2
name: User2
active: false
- id: 3
name: User3
active: true
- id: 4
name: User4
active: false
- id: 5
name: User5
active: true
- id: 6
name: User6
active: false
- id: 7
name: User7
active: true
- id: 8
name: User8
active: false
- id: 9
name: User9
active: true
- id: 10
name: User10
active: false
TRON — 223 znaki
class A: id,name,active
{"users":[A(1,"User1",true),A(2,"User2",false),A(3,"User3",true),A(4,"User4",false),A(5,"User5",true),A(6,"User6",false),A(7,"User7",true),A(8,"User8",false),A(9,"User9",true),A(10,"User10",false)]}
CSV — 152 znaki
id,name,active
1,User1,true
2,User2,false
3,User3,true
4,User4,false
5,User5,true
6,User6,false
7,User7,true
8,User8,false
9,User9,true
10,User10,false
TOON (styl tabelowy) — 184 znaki
users[10]{id,name,active}:
1,User1,true
2,User2,false
3,User3,true
4,User4,false
5,User5,true
6,User6,false
7,User7,true
8,User8,false
9,User9,true
10,User10,false
Ogólne podsumowanie wydajności
Kompletne wyniki testów
| Test | Najlepszy format | JSON zn. | YAML zn. | CSV zn. | TOON zn. | TRON zn. | vs JSON |
|---|---|---|---|---|---|---|---|
| 1. Płaska struktura | CSV | 746 | 444 | 152 | 184 | 223 | 70% mniej |
| 10. Few-Shot | TOON | 259 | 207 | - | 178 | 209 | 19% mniej |
| 11. Plik konfiguracyjny | TRON | 349 | 273 | - | 273 | 246 | 30% mniej |
| 12. Dane logów | CSV | 384 | 311 | 193 | 213 | 307 | 20% mniej |
Średnie oszczędności vs JSON:
- TOON: ~35% we wszystkich aplikowalnych testach
- TRON: ~31% we wszystkich aplikowalnych testach
Matryca możliwości formatów
| Możliwość | JSON | YAML | CSV | TOON (tabela) | TOON (obiekt) | TRON |
|---|---|---|---|---|---|---|
| Zagnieżdżone obiekty | ✅ | ✅ | ❌ | ⚠️ | ✅ | ✅ |
| Tablice | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ |
| Wartości null | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ |
| Znaki specjalne | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ |
| Unicode/Emoji | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Komentarze | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Efektywność tokenów | ❌ | ⚠️ | ✅ | ✅ | ✅ | ✅ |
| Czytelność dla ludzi | ⚠️ | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| Parserowalne maszynowo | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ✅ |
| Kompatybilność z JSON | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Definicje schematów | ❌ | ❌ | ❌ | ⚠️ | ❌ | ✅ |
Legenda:
- ✅ Pełne wsparcie
- ⚠️ Ograniczone lub warunkowe wsparcie
- ❌ Brak wsparcia
Rekomendacje dla przypadków użycia
Kiedy używać TOON
✅ Idealny do:
- Wysyłania danych do LLM (główny przypadek użycia) — DLACZEGO: TOON został specjalnie zaprojektowany do minimalizacji zużycia tokenów, redukując koszty API o 70-75% przy zachowaniu pełnej czytelności dla LLM
- Gdy koszty tokenów są znaczące — DLACZEGO: Każdy zaoszczędzony znak bezpośrednio redukuje twoje rachunki za API
- Potrzebujesz pełnego wsparcia zagnieżdżania — DLACZEGO: W przeciwieństwie do CSV, TOON obsługuje złożone zagnieżdżone struktury
- Chcesz czytelności — DLACZEGO: TOON zachowuje czytelną dla ludzi indentację i strukturę
- Okno kontekstowe jest ograniczone — DLACZEGO: 4× poprawa gęstości danych TOON
- Aplikacje RAG — DLACZEGO: Fragmenty dokumentów z metadanymi kompresują się o 29% lepiej niż JSON
- Schematy wywołań funkcji — DLACZEGO: Definicje narzędzi są o 32% bardziej kompaktowe
- Przykłady few-shot prompting — DLACZEGO: Przykłady treningowe kompresują się o 31% lepiej
❌ Unikaj gdy:
- Budujesz publiczne API (użyj JSON) — DLACZEGO: TOON nie jest standardowym formatem
- Potrzebujesz dojrzałego ekosystemu narzędzi — DLACZEGO: JSON ma walidatory i biblioteki w każdym języku
- Pracujesz z systemami innymi niż LLM — DLACZEGO: Tradycyjne bazy danych oczekują standardowych formatów
- Potrzebujesz kompatybilności z JSON — DLACZEGO: Użyj zamiast tego TRON
Kiedy używać TRON
✅ Idealny do:
- Workflow kompatybilnych z JSON — DLACZEGO: TRON jest nadzbiorem JSON, więc istniejące parsery mogą bezpośrednio czytać sekcję danych
- Tablic jednolitych obiektów — DLACZEGO: Definicje klas eliminują powtarzające się nazwy pól, oszczędzając 20-40%
- Stopniowej migracji z JSON — DLACZEGO: Możesz używać JSON jak jest i dodawać definicje klas gdzie to korzystne
- Zagnieżdżonych jednolitych struktur — DLACZEGO: Wielokrotne definicje klas mogą kompresować złożone zagnieżdżone tablice (test RAG: 38% oszczędności)
- Gdy ważna jest utrzymywalność — DLACZEGO: Struktura JSON pozostaje widoczna, ułatwiając debugowanie
- Niejednolitych zagnieżdżonych danych — DLACZEGO: Kompaktowy output JSON TRON pokonuje YAML/TOON dla struktur konfiguracyjnych (30% oszczędności)
❌ Unikaj gdy:
- Czysto tabelaryczne dane — DLACZEGO: CSV lub TOON w stylu tabelowym jest bardziej kompaktowy
- Potrzebna maksymalna kompresja — DLACZEGO: TOON osiąga 70-75% oszczędności vs JSON; TRON średnio 30%
- Edycja przez ludzi jest głównym zastosowaniem — DLACZEGO: YAML lub składnia TOON oparta na indentacji jest bardziej czytelna
Kiedy używać JSON
✅ Idealny do:
- Publicznych API — DLACZEGO: JSON jest uniwersalnym standardem dla webowych API
- Wymagana uniwersalna kompatybilność — DLACZEGO: JSON działa wszędzie
- Potrzebny rozbudowany ekosystem narzędzi — DLACZEGO: JSON ma dojrzałe walidatory i narzędzia
- Walidacja schematu jest krytyczna — DLACZEGO: JSON Schema zapewnia formalną walidację
- Koszty tokenów nie mają znaczenia — DLACZEGO: Jeśli nie płacisz za token
❌ Unikaj gdy:
- Wysyłasz do LLM — DLACZEGO: Rozwlekła składnia JSON marnuje 70-75% więcej tokenów niż TOON
- Efektywność tokenów ma znaczenie — DLACZEGO: Na skalę, narzut JSON przekłada się na znaczące koszty
- Pracujesz z aplikacjami wrażliwymi na koszty
Kiedy używać YAML
✅ Idealny do:
- Plików konfiguracyjnych — DLACZEGO: Minimalna składnia YAML i wsparcie dla komentarzy
- Częsta edycja przez ludzi — DLACZEGO: Struktura oparta na indentacji jest naturalna do czytania
- Potrzebne komentarze — DLACZEGO: YAML natywnie wspiera komentarze (JSON nie)
- Czytelność jest najwyższym priorytetem — DLACZEGO: Czysta składnia bez cudzysłowów i nawiasów
- Nie wysyłasz do LLM — DLACZEGO: Korzyści czytelności YAML są dla ludzi
❌ Unikaj gdy:
- Optymalizujesz dla tokenów LLM — DLACZEGO: YAML jest o 30-50% bardziej rozwlekły niż TOON
- Parsowanie maszynowe jest głównym zastosowaniem
- Rozmiar ma znaczenie
Kiedy używać CSV
✅ Idealny do:
- Ściśle tabelarycznych danych — DLACZEGO: CSV jest najbardziej kompaktowym formatem dla wierszy i kolumn
- Nie wymagane zagnieżdżanie — DLACZEGO: CSV doskonale sprawdza się przy płaskich tabelach danych
- Potrzebna maksymalna kompresja — DLACZEGO: CSV ma absolutnie najniższą liczbę znaków
- Kompatybilność z arkuszami kalkulacyjnymi — DLACZEGO: CSV otwiera się bezpośrednio w Excelu
- Prosty import/eksport — DLACZEGO: Każda baza danych ma natywne wsparcie CSV
❌ Unikaj gdy:
- Dane mają zagnieżdżone struktury — DLACZEGO: CSV nie może reprezentować hierarchii
- Potrzebujesz złożonych typów danych — DLACZEGO: CSV ma tylko stringi
- Relacje między encjami — DLACZEGO: CSV nie może wyrażać relacji jeden-do-wielu
TRON vs TOON: Bezpośrednie porównanie
| Aspekt | TRON | TOON |
|---|---|---|
| Filozofia | Rozszerzenie JSON o klasy | Całkowita zamiana składni JSON |
| Kompatybilność | Nadzbiór JSON (wstecznie kompatybilny) | Nowy format (wymaga konwersji) |
| Najlepsze oszczędności | ~40% vs JSON | ~75% vs JSON |
| Najgorszy przypadek | Fallback do JSON (0% oszczędności) | Nadal oszczędza przez składnię indentacji |
| Czytelność | Podobna do JSON (kompaktowa) | Podobna do YAML (indentowana) |
| Narzędzia | Można używać parserów JSON na danych | Wymaga parsera specyficznego dla TOON |
| Zagnieżdżone klasy | ✅ W pełni wspierane | ⚠️ Ograniczone |
| Najlepsze dla | Stopniowa migracja, mieszane dane | Maksymalna kompresja |
Kiedy TRON wygrywa z TOON
| Scenariusz | TRON | TOON | Zwycięzca |
|---|---|---|---|
| Fragmenty RAG (zagnieżdżone jednolite) | 307 | 351 | TRON |
| Pliki konfiguracyjne (niejednolite zagnieżdżone) | 246 | 273 | TRON |
| Znaki specjalne | 214 | 219 | TRON |
Kiedy TOON wygrywa z TRON
| Scenariusz | TRON | TOON | Zwycięzca |
|---|---|---|---|
| Płaska struktura | 223 | 184 | TOON |
| Duże tablice | 201 | 181 | TOON |
| Przykłady Few-Shot | 209 | 178 | TOON |
| Schematy funkcji | 280 | 248 | TOON |
| Dane logów | 307 | 213 | TOON |
Podsumowanie
Kluczowe wnioski
-
TOON redukuje koszty tokenów LLM o 70-75% vs JSON
- Udowodnione w 14 scenariuszach testowych z rzeczywistego świata
- Zachowuje pełną funkcjonalność
- Brak degradacji jakości
-
TRON redukuje koszty tokenów LLM o 20-40% vs JSON
- Zachowuje kompatybilność z JSON
- Doskonale sprawdza się przy zagnieżdżonych jednolitych strukturach (38% oszczędności na RAG)
- Idealny do stopniowej migracji
-
Efektywność okna kontekstowego znacząco się poprawia
- TOON: 4× więcej danych w tym samym kontekście
- TRON: 2.6× więcej danych w tym samym kontekście
- Mniej wymaganego dzielenia na części, lepsza spójność
-
Wybierz na podstawie swoich ograniczeń
- Potrzebne maksymalne oszczędności → TOON
- Wymagana kompatybilność z JSON → TRON
- Płaskie dane tabelaryczne → CSV
- Fokus na edycji przez ludzi → YAML
-
Gotowe do produkcji i przetestowane w boju
- 14 kompleksowych scenariuszy testowych
- Przykłady z rzeczywistego świata
- Jasna ścieżka migracji
- Mierzalne wyniki
Konkluzja
JSON jest dla maszyn.
YAML jest dla ludzi.
TRON jest dla LLM (kompresja kompatybilna z JSON).
TOON jest dla LLM (maksymalna kompresja).
Dla każdej aplikacji wysyłającej strukturyzowane dane do dużych modeli językowych, zarówno TOON, jak i TRON oferują znaczące przewagi nad JSON. Wybierz TOON dla maksymalnych oszczędności, gdy możesz przyjąć nowy format, lub wybierz TRON, gdy musisz zachować kompatybilność z JSON, jednocześnie redukując koszty.
Framework decyzyjny
Czy dane idą do LLM?
├─ Tak
│ ├─ Czy dane są płaskie/tabelaryczne?
│ │ └─ Użyj CSV lub TOON (styl tabelowy)
│ ├─ Czy dane to jednolite tablice obiektów?
│ │ ├─ Potrzebna kompatybilność z JSON? → Użyj TRON
│ │ └─ Potrzebne maksymalne oszczędności? → Użyj TOON
│ └─ Czy dane są głęboko zagnieżdżone/niejednolite?
│ ├─ Potrzebna kompatybilność z JSON? → Użyj TRON (kompaktowy JSON)
│ └─ Potrzebne maksymalne oszczędności? → Użyj TOON (styl obiektowy)
└─ Nie
├─ Czy to API?
│ └─ Użyj JSON
├─ Czy to plik konfiguracyjny?
│ └─ Użyj YAML
└─ Czy to dane tabelaryczne?
└─ Użyj CSV







