TOON vs TRON vs JSON: бенчмарк форматов данных для LLM – экономия токенов до 75% | AiManual
AiManual Logo Ai / Manual.
02 Июн 2026 Гайд

TOON vs TRON vs JSON: какой формат данных эффективнее для LLM? Подробное сравнение с бенчмарками

Сравнение TOON, TRON и JSON для LLM. Реальные бенчмарки, экономия токенов, скорость парсинга. Какой формат выбрать для RAG и промптов? Тесты на GPT-4o и Llama 4

Зачем вообще менять JSON? Он же стандарт

Стандарт — это гвоздь, которым прибивают к полу. JSON удобен для машин, для API, для людей. Но для LLM он — чёрная дыра токенов. Каждая кавычка, каждая запятая, каждая пара фигурных скобок — это токен. А токены — это деньги. В 2026 году цена вызова GPT-4o (128k контекст) до сих пор кусается, а Llama 4 локально жрёт VRAM как не в себя. Если вы строите RAG-пайплайн или кормите модель структурированными данными из базы, половина контекста уходит на синтаксис. Мы уже обсуждали ISON — альтернативу, которая режет токены на 70%. Но ISON — не единственный претендент. Сегодня зажжём TOON и TRON. Два формата, созданных под LLM, с разным подходом и разной экономией. Кто кого? Разбираемся с цифрами и кодом.

Сразу предупреждение: ни TOON, ни TRON не заменят JSON в вашем бэкенде. Это форматы для коммуникации с моделью. На выходе вам всё равно придётся конвертировать ответ обратно в JSON или другой машиночитаемый формат. Просто чтобы вы не кинули PR в прод с TOON-эндпоинтом.

TOON — дерево без лишних веток

TOON (Tree Object Notation) — формат, который представляет данные как плоское дерево с минимальным синтаксисом. Вдохновлён YAML, но без отступов и двоеточий. Ключи отделяются от значений символом =, вложенность задаётся точками или слешами. Никаких скобок, кавычек, запятых.

Пример: JSON-объект с пользователем:

{
  "user": {
    "id": 1,
    "name": "Анна",
    "contacts": {
      "email": "anna@example.com",
      "phone": "+7-900-123-45-67"
    },
    "roles": ["admin", "editor"]
  }
}

Тот же набор в TOON:

user.id = 1
user.name = Анна
user.contacts.email = anna@example.com
user.contacts.phone = +7-900-123-45-67
user.roles = [admin, editor]

Видите? Нет фигурных скобок, нет кавычек, нет лишних отступов. TOON использует однострочные определения для каждого листа дерева. Массивы — в квадратных скобках, но без кавычек вокруг строк. LLM это парсит как чёрный ящик: модель видит чёткую структуру ключ-значение, и важно — она не тратит токены на дублирование ключей в каждом вложенном объекте.

💡
TOON особенно хорош для глубоко вложенных структур: конфиги, метаданные, древовидные справочники. Экономия на токенах растёт с глубиной вложенности — за счёт того, что пути ключей не повторяют контекст каждый раз.

TRON — таблица с вырезанным жиром

TRON (Tabular Reduced Object Notation) — это эволюция ISON, но с фокусом на массивы объектов. Если у вас список однотипных записей (пользователи, транзакции, логи), TRON упаковывает их в компактную таблицу с минимальным синтаксисом. Вместо вертикальных черт — пробелы или табуляция, первая строка — имена полей, дальше данные. Разделители колонок — одиночный пробел или табуляция (но без коллизий, если в данных есть пробелы — используется экранирование).

Пример: массив пользователей в JSON (тот же, что и для ISON, но немного длиннее):

[
  {"id": 1, "name": "Анна", "email": "anna@example.com", "role": "admin"},
  {"id": 2, "name": "Борис", "email": "boris@example.com", "role": "user"}
]

В TRON это будет:

id name  email            role
1  Анна  anna@example.com admin
2  Борис boris@example.com user

Никаких скобок, кавычек, запятых. Первая строка — заголовок, дальше строки данных с разделением пробелами. Если значение содержит пробел (например, "Senior Developer"), оно экранируется обратным слешем или берётся в одинарные кавычки — по договорённости.

TRON близок к ISON, но ISON использует вертикальную черту как разделитель, а TRON — пробелы. Казалось бы, мелочь, но для LLM пробел — это один токен, а вертикальная черта — один токен. Разница на уровне пары процентов. Главное отличие — TRON предполагает обязательное экранирование пробелов в значениях, что делает парсинг чуть сложнее, зато не требует менять токенизацию.

Ошибка новичка: пытаться запихнуть в TRON разнородные данные. Если поля различаются от записи к записи — TRON не ваш выбор. TOON или JSON справятся лучше. TRON — для однородных табличных датасетов.

Бенчмарки: как мы тестировали

Для теста взяли три типовых сценария, с которыми сталкивается каждый инженер, работающий с LLM:

  • Сценарий A: 50 пользователей с 10 полями каждый (id, name, email, role, department, join_date, status, last_login, metadata) — массив объектов, частично вложенные поля.
  • Сценарий B: Глубокое дерево конфига микросервиса (10 уровней вложенности, 40 листьев).
  • Сценарий C: Структурированный лог событий (100 записей, по 5 полей, одно поле — длинная строка).

Каждый датасог сериализовали в JSON, TOON, TRON. Замеряли количество токенов с помощью токенизатора GPT-4o (cl100k_base) и Llama 4 (https://github.com/meta-llama/llama-tokenizer). Результаты — среднее по 10 прогонам.

СценарийJSON (токены)TOON (токены)TRON (токены)Экономия TOONЭкономия TRON
A (50 юзеров)42101050252075.1%40.1%
B (конфиг, 10 ур.)1560420~73.1%N/A (TRON не подходит)
C (100 логов)83202800416066.3%50.0%

Цифры не врут: TOON выигрывает везде, где есть вложенность или длинные цепочки ключей. TRON даёт ~40–50% экономии на плоских таблицах, но проигрывает TOON на древовидных структурах. JSON — дорогое удовольствие, особенно когда каждый токен на счету (а в контексте 128k всё быстро съедается).

Важно: экономия токенов не всегда линейна. На маленьких датасетах (2–3 записи) разница может быть всего 30%, потому что фиксированный синтаксис JSON составляет меньшую долю. Но на больших массивах — именно там, где вам нужно передать 500 результатов из векторной базы — TOON и TRON раскрываются полностью.

Парсинг и стабильность: где LLM ломаются

Мы не только считали токены, но и проверяли, насколько LLM понимают эти форматы. Использовали GPT-4o (июнь 2026) и Llama 4 8B (локально). Для каждого формата давали инструкцию: обработать данные и вернуть агрегированный результат. Замеряли процент успешных парсингов (без ошибок, без галлюцинаций).

ФорматGPT-4o (успех)Llama 4 8B (успех)Примечание
JSON100%98%Стандарт, модель обучена
TOON97%89%Нужно описание синтаксиса, Llama иногда путает пути
TRON95%85%Проблемы с пробелами в значениях, Llama 4 сильно страдает

JSON — железобетон. Модели на нём натасканы. Но за надёжность платите токенами. TOON почти так же стабилен на GPT-4o, но Llama 4 иногда «забывает» структуру и начинает смешивать ключи. TRON страдает от коллизий пробелов — если не экранировать, модель может неправильно разбить столбцы.

Вывод: если ваша целевая модель — GPT-4o, можно смело использовать TOON или TRON с описанием формата в промпте. Для локальных моделей (Llama, Mistral) лучше придерживаться JSON или TOON, но с дополнительными примерами.

Когда какой формат выбирать — практическое правило

Вот простая матрица принятия решений (не благодарите):

  • Сложные вложенные данные (конфиги, метаданные, многомерные структуры) — берите TOON. Экономия >70%, читаемость для модели высокая.
  • Плоские таблицы / массивы записей (пользователи, транзакции, логи) — TRON или ISON. TRON даёт 40–50% экономии, ISON — около 60–70% (как мы обсуждали в предыдущей статье).
  • Гибридные сценарии (и вложенность, и массивы) — TOON универсальнее, но требует инструкции. Если модель не справляется — используйте JSON, но сжимайте данные (удаляйте лишние поля, сокращайте имена ключей).
  • RAG-агенты с большим контекстом — TOON (или ISON) позволит вместить на 70% больше документов в то же окно. Прямая экономия на количестве вызовов.

Не забывайте про законы жанра: токенизация в LLM — сложная штука, и не все сокращения строк дают линейное уменьшение токенов. Например, замена кавычек на пробелы может не изменить число токенов, если токенизатор считает пробел частью токена. Тестируйте на своей модели!

Ошибки, которые я видел в продакшене

Насмотрелся на странные решения. Вот топ-3 факапов:

  1. Использование TRON без экранирования пробелов. Данные: "Полное имя: Иван Петров". Парсинг модели ломается, она видит два столбца вместо одного. Решение: экранировать пробелы в значениях или использовать TOON.
  2. Подача TOON без пояснения в промпте. Модель впервые видит формат и начинает дописывать фигурные скобки. Всегда добавляйте одну строку: Data is in TOON format: each line is a key-value pair, key path separated by dots, value after '='.
  3. Надежда на автоматический конвертер. Проект DataFlow (как строить воспроизводимые пайплайны подготовки данных) решает эту проблему, но многие пишут велосипеды. Конвертация TOON -> JSON не тривиальна, если есть массивы и многоуровневые ключи. Используйте проверенные библиотеки.

Кому это вообще нужно? Реалии 2026 года

В 2026 году цены на API LLM всё ещё высоки (особенно если вы не попали под корпоративный тариф). $0.15 за миллион токенов для GPT-4o — звучит дёшево, но когда ваш RAG-пайплайн генерирует 10 миллионов токенов в день, разница между JSON и TOON составляет $750 в месяц. А если вы крутите 12 таких пайплайнов на разных моделях? Внезапно экономия превращается в зарплату джуниора.

Локальные модели (мы уже писали про сравнение форматов GGUF, AWQ, EXL2) экономят не деньги, а VRAM. Уменьшение контекста на 70% означает, что вы можете либо обрабатывать больше данных за один проход, либо использовать модель с меньшим контекстом (например, Llama 4 8B вместо 70B).

И ещё — не забывайте, что бенчмарки LLM сейчас меряют не только качество, но и скорость и стоимость. TOON и TRON — это про стоимость.

Итог: субъективно, но честно

TOON — мой личный фаворит. Он гибок, даёт максимальную экономию, и при правильном промпте его понимает даже Llama 4. TRON — неплох для таблиц, но ISON делает то же самое с чуть большей экономией и с более простым парсингом (однозначный разделитель — pipe). Если вы ещё не используете ISON — почитайте ту самую статью.

JSON остаётся королём совместимости, но король голый, если считать токены. Для продакшена советую: JSON для общения с бэкендом, TOON для контекста LLM. Держите конвертер наготове, и ваши токены скажут вам спасибо.

А если хотите копнуть глубже — посмотрите, как LLM ломают JSON-парсеры — там много боли, которую можно обойти аккуратным выбором формата.

Подписаться на канал