Привет! Меня зовут Андрей, я фронтенд-разработчик в Cloud.ru. Я работаю с LLM API каждый день. И каждый день отправляю в контекст структурированные данные: списки товаров, логи, пользователей, метрики. Все это — JSON. И все это — деньги.

В какой-то момент я посчитал, сколько токенов из моего промпта уходит на фигурные скобки, кавычки и повторяющиеся ключи. Оказалось — много. Слишком много.

Потом я попробовал TOON. Вот что из этого вышло.

Проблема: JSON — щедрый формат

Возьмем типичный кейс. Вы строите RAG-систему или ИИ-ассистента, который анализирует данные. В промпт подтягивается список из 50 записей. Вот как выглядит одна запись в JSON:

```json

{"id": 2001, "timestamp": "2025-11-18T08:14:23Z", "level": "error", "service": "auth-api", "ip": "172.16.4.21", "message": "Auth failed for user", "code": "AUTH_401"}

```

Теперь умножьте на 50. Каждая запись повторяет 7 ключей: "id", "timestamp", "level", "service", "ip", "message", "code". Плюс кавычки вокруг каждого ключа и строкового значения. Плюс фигурные скобки. Плюс запятые. На 50 записях это ~350 лишних повторений ключей и сотни символов синтаксического мусора. Модели все это токенизируют. Вы за все это платите.

Решение: TOON за 30 секунд

TOON (Token-Oriented Object Notation) — формат, который кодирует те же данные с той же структурой, но без повторений. Ключи объявляются один раз в заголовке, дальше — только значения:

```

logs[3]{id,timestamp,level,service,ip,message,code}:

 2001,2025-11-18T08:14:23Z,error,auth-api,172.16.4.21,Auth failed for user,AUTH_401

 2002,2025-11-18T08:14:24Z,warn,payment,172.16.4.22,Timeout on payment gateway,PAY_TIMEOUT

 2003,2025-11-18T08:14:25Z,info,user-svc,172.16.4.23,User profile updated,USR_200

```

Заголовок logs[3]{id,timestamp,level,service,ip,message,code}: говорит: массив из трех элементов, поля — такие-то. Все. Дальше строки с данными через запятую. Никаких кавычек вокруг ключей, никаких {} на каждый объект, никакого дублирования.

Для обычных объектов — синтаксис как в YAML:

```

name: Alice

age: 30

role: admin

settings:

  theme: dark

  lang: ru

```

Конвертация JSON -> TOON -> JSON — без потерь, 1:1. Это не другая модель данных, это другая запись той же модели.

Считаем токены: реальный тест

Я взял датасет из 50 лог-записей (7 полей каждая) и прогнал через токенизатор. Вот код:

Python:

```python

import json

import toon_format  # pip install toon-format

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4o")

with open("logs.json") as f:

    data = json.load(f)

json_str = json.dumps(data, indent=2)

json_compact = json.dumps(data)

toon_str = toon_format.encode(data)

print(f"JSON (formatted):  {len(enc.encode(json_str))} токенов")

print(f"JSON (compact):    {len(enc.encode(json_compact))} токенов")

print(f"TOON:              {len(enc.encode(toon_str))} токенов")

```

TypeScript:

```typescript

import { encode as toToon } from "@toon-format/toon";

import { encode as tokenize } from "gpt-3-encoder";

import fs from "fs";

const data = JSON.parse(fs.readFileSync("./logs.json", "utf8"));

const jsonFormatted = JSON.stringify(data, null, 2);

const jsonCompact = JSON.stringify(data);

const toonStr = toToon(data);

console.log(JSON (formatted):  ${tokenize(jsonFormatted).length} токенов);

console.log(JSON (compact):    ${tokenize(jsonCompact).length} токенов);

console.log(TOON:              ${tokenize(toonStr).length} токенов);

```

Результат на реальных данных (из бенчмарков TOON):

Формат

Токены

Экономия vs JSON

JSON (formatted)

379

JSON (compact)

236

-37.7%

TOON

150

-60.4%

60% экономии. На одном промпте. Не гипотетически — замерено токенизатором.

Считаем деньги: сколько вы переплачиваете

Теперь самое интересное. Актуальные цены API (апрель 2026):

Модель

Input (за 1 млн токенов)

Output (за 1 млн токенов)

GPT-4o

$2.50

$10.00

GPT-4.1

$2.00

$8.00

Claude Sonnet 4.6

$3.00

$15.00

Claude Opus 4.6

$5.00

$25.00

Допустим, вы делаете 10 000 запросов в день, в каждом — массив из 100 объектов (типичный RAG/аналитика). Считаем для GPT-4o:

JSON

TOON

Разница

Токенов на запрос

~3,200

~1,850

-42%

Токенов в день

32 млн

18.5 млн

-13.5 млн

Стоимость в день

$80

$46.25

-$33.75

В месяц

$2,400

$1,387

-$1,013

В год

$28,800

$16,650

-$12,150

На Claude Opus 4.6 (input $5/1 млн) экономия еще ощутимее:

JSON

TOON

Разница

В месяц

$4,800

$2,775

-$2,025

В год

$57,600

$33,300

-$24,300

$12 000-24 000 в год — только на input-токенах, только на одном эндпоинте. Если у вас несколько пайплайнов — умножайте.

Интеграция: 5 минут, 4 строки кода

Вам не нужно переписывать архитектуру. TOON подключается как прослойка перед отправкой в API:

Python + OpenAI:

```python

import openai

import json

import toon_format

def analyze_with_llm(data: list[dict]) -> str:

    toon_str = toon_format.encode({"records": data})  # JSON -> TOON

    response = openai.chat.completions.create(

model="gpt-4o",

messages=[{

"role": "user",

"content": f"Проанализируй эти данные и найди аномалии:\n\n{toon_str}"

        }]

)

return response.choices[0].message.content

```

TypeScript + Anthropic:

```typescript

import Anthropic from "@anthropic-ai/sdk";

import { encode as toToon } from "@toon-format/toon";

async function analyzeData(records: any[]) {

const toonData = toToon({ records });

const response = await anthropic.messages.create({

model: "claude-sonnet-4-6-20250514",

max_tokens: 1024,

messages: [{

role: "user",

content: Проанализируй эти данные и найди аномалии:\n\n${toonData}

    }]

  });

return response.content[0].text;

}

```

Одна строка toon_format.encode() — и вы экономите 40-60% токенов. Модель отвечает в обычном формате, ничего на выходе менять не нужно.

Большое сравнение: TOON vs все остальные

Ни один формат не идеален для всех случаев. Вот честная таблица:

Критерий

JSON

JSON compact

YAML

CSV

TOON

TRON

Токены (табличные данные)

100%

~63%

~72%

~38%

~40%

~55%

Токены (вложенные данные)

100%

~78%

~85%

н/п

~67%

~75%

Точность LLM

75.0%

73.7%

74.5%

~72%

76.4%

Вложенные структуры

отлично

отлично

хорошо

нет

средне

хорошо

Совместимость с пайплайнами

везде

везде

широко

широко

нужен SDK

JSON-совместим

Знакомство LLM (training data)

огромное

огромное

большое

большое

минимальное

минимальное

Lossless round-trip с JSON

да

да

с нюансами

нет

да

да

Ключевые выводы

  • TOON vs CSV: CSV компактнее на ~5-6% для плоских таблиц, но не поддерживает вложенность и типы. TOON добавляет минимальный overhead, но модель точнее парсит данные.

  • TOON vs YAML: TOON экономит 48% токенов на табличных данных. YAML лучше на конфигах с глубокой вложенностью.

  • TOON vs JSON compact: даже минифицированный JSON проигрывает TOON 35% на таблицах. На вложенных — разрыв меньше (~15%).

  • TOON vs TRON: TRON — JSON-совместимый (можно парсить обычным JSON-парсером). TOON компактнее, но требует отдельный парсер. Выбирайте TRON, если не хотите менять тулчейн.

Когда TOON — правильный выбор (и когда нет)

Используйте TOON, когда:

  • Массивы однородных объектов — списки пользователей, товаров, логов, метрик. Экономия 40-60%.

  • RAG-пайплайны — в контекст подтягиваются десятки документов с одинаковой структурой.

  • Batch-обработка — тысячи запросов в день, каждый процент экономии = реальные деньги.

  • Длинные контексты — когда данные не влезают в контекстное окно, а уменьшить их объем — критично.

НЕ используйте TOON, когда:

  • Глубоко вложенные структуры (4+ уровней). Точность LLM падает до 43% на nested-данных. JSON надежнее.

  • Данные идут не в LLM, а в обычный сервис. TOON — формат для промптов, не для REST API и баз данных.

  • Плоская таблица без вложенности. CSV на 5-6% компактнее и не требует SDK.

  • Нужна JSON Schema валидация. TOON — другой синтаксис, существующие валидаторы не подойдут.

Экосистема: что уже работает

Язык

Пакет

Статус

TypeScript

@toon-format/toon

Основная реализация

Python

toon-format / python-toon

Стабильно

Go

toon-format/go-toon

В разработке

Rust

toon-format/toon-rs

В разработке

.NET

toon-format/toon-dotnet

В разработке

CLI

npx @toon-format/cli

Работает

Быстрый старт:

```bash

# TypeScript

npm install @toon-format/toon

# Python

pip install toon-format

# Конвертация файла через CLI

npx @toon-format/cli data.json -o data.toon

npx @toon-format/cli data.toon -o data.json  # и обратно

```

Спецификация открыта, ABNF-грамматика задокументирована, тестовые фикстуры доступны: toon-format/spec.

Итог

TOON — не замена JSON. JSON останется стандартом для API, конфигов и хранения. Но если вы передаете структурированные данные в LLM — вы буквально выбрасываете деньги на синтаксический мусор.

Четыре строки кода. Пять минут интеграции. Минус 40-60% токенов. Минус $12 000-24 000 в год на средней нагрузке. Попробуйте на одном эндпоинте. Замерьте. Посчитайте. Ваш бюджет на API скажет спасибо. Или хотя бы перестанет тихо всхлипывать по ночам.


Если было полезно — я пишу о фронтенде, ИИ и подобных практических штуках в блоге и Telegram-канале. Заходите, буду рад.


Ссылки: