Я — фронтенд-разработчик в Cloud.ru и каждый день работаю с LLM API. В промпты передаю структурированные данные: списки товаров, логи, пользователей, метрики. Раньше всё это было в JSON. Теперь — нет.
Я посчитал, сколько токенов уходит на синтаксис: фигурные скобки, кавычки, повторяющиеся ключи. Оказалось — слишком много. Потом попробовал TOON. Экономия составила 40–60%.
Проблема: JSON — щедрый формат
Представьте RAG-систему или ИИ-ассистента, которому нужно проанализировать 50 лог-записей. Каждая запись — объект с полями: "id", "timestamp", "level", "service", "ip", "message", "code".
В JSON каждый объект оборачивается в фигурные скобки, ключи и строки берутся в кавычки, между полями ставятся запятые. На 50 записей — 350 повторений одних и тех же ключей и сотни символов синтаксиса.
LLM токенизирует всё это. Вы платите за всё — даже за кавычки.
Решение: TOON за 30 секунд
TOON (Token-Oriented Object Notation) — формат, передающий те же данные, но без дублирования. Ключи объявляются один раз в заголовке, дальше идут только значения.
Пример:
logs[3]{id,timestamp,level,service,ip,message,code}: 1,2025-04-05T12:00:00Z,ERROR,auth,192.168.1.1,"Login failed",401, 2,2025-04-05T12:05:00Z,WARN,api,192.168.1.2,"Rate limit",429
Заголовок задаёт структуру: массив из трёх элементов с перечисленными полями. Дальше — данные через запятую. Нет кавычек вокруг ключей, нет фигурных скобок, нет повторений.
Для одиночных объектов используется синтаксис, похожий на YAML:
user{id: 123, name: "Alice", role: "admin"}
Преобразование JSON ↔ TOON — lossless. Это не другая модель данных, а более компактная запись той же структуры.
Считаем токены: реальный тест
Я взял датасет из 50 лог-записей (по 7 полей) и протестировал через токенизатор.
Результат:
- JSON (форматированный): 1580 токенов
- JSON (минифицированный): 1250 токенов
- TOON: 500 токенов
Экономия — до 60% на одном промпте. Это не теория — это замер.
Считаем деньги: сколько вы переплачиваете
Цены на LLM API (апрель 2026):
- GPT-4o: $5 за 1 млн input-токенов
- Claude Opus 4.6: $5 за 1 млн input-токенов
Допустим, вы делаете 10 000 запросов в день, в каждом — 100 объектов. На GPT-4o:
- JSON: ~2500 токенов на запрос → 25 млн токенов в день → $125/день
- TOON: ~1000 токенов на запрос → 10 млн токенов в день → $50/день
Экономия — $75 в день. Это $27 000 в год только на одном эндпоинте.
На Claude Opus разница ещё ощутимее: экономия до $24 000 в год.
Интеграция: 5 минут, 4 строки кода
Не нужно менять архитектуру. TOON — прослойка перед отправкой в API.
Python + OpenAI:
import toon_format
prompt = toon_format.encode(data)
client.chat.completions.create(model="gpt-4o", messages=[{"role": "user", "content": prompt}])
TypeScript + Anthropic:
import { encode } from '@toon-format/toon';
const prompt = encode(data);
client.messages.create({ model: 'claude-3-opus', messages: [{ role: 'user', content: prompt }] });
Одна строка toon_format.encode() — и вы экономите 40–60% токенов. Ответ модели приходит в обычном формате. Ничего менять не нужно.
Сравнение: TOON vs другие форматы
Ни один формат не идеален. Вот объективное сравнение:
- TOON vs CSV: CSV на 5–6% компактнее для плоских таблиц, но не поддерживает вложенность и типы. TOON точнее парсится LLM.
- TOON vs YAML: TOON экономит 48% токенов на табличных данных. YAML лучше подходит для конфигов с глубокой вложенностью.
- TOON vs JSON compact: даже минифицированный JSON проигрывает TOON на 35% для таблиц. Для вложенных структур разрыв меньше — ~15%.
- TOON vs TRON: TRON совместим с JSON-парсерами. TOON компактнее, но требует отдельного парсера. Выбирайте TRON, если не хотите менять тулчейн.
Когда использовать TOON (и когда нет)
Используйте TOON, когда:
- Передаёте массивы однородных объектов — пользователи, товары, логи, метрики. Экономия: 40–60%.
- Работаете с RAG — в контекст попадают десятки документов с одинаковой структурой.
- Делаете batch-обработку — тысячи запросов в день, каждый процент экономии = деньги.
- Данные не влезают в контекстное окно — компактность критична.
Не используйте TOON, когда:
- Структуры глубоко вложенные (4+ уровня). Точность LLM падает до 43%. Лучше использовать JSON.
- Данные идут не в LLM, а в обычный сервис. TOON — только для промптов, не для 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
Быстрый старт: npx @toon-format/cli
Спецификация открыта. ABNF-грамматика задокументирована. Тестовые фикстуры доступны в репозитории toon-format/spec.
Итог
TOON — не замена JSON. JSON останется стандартом для API, конфигов и хранения. Но если вы передаёте структурированные данные в LLM — вы платите за синтаксический мусор.
Четыре строки кода. Пять минут интеграции. Экономия 40–60% токенов. До $27 000 в год на средней нагрузке.
Попробуйте на одном эндпоинте. Замерьте. Посчитайте. Ваш бюджет на API скажет спасибо. Или хотя бы перестанет тихо всхлипывать по ночам.