(Token-Oriented Object Notation)

در دنیای امروز، که مدلهای زبانی بزرگ (LLMها) بیش از پیش در جریان دادهها و پردازش اطلاعات به کار گرفته میشوند، انتقال ساختار یافتهٔ داده به این مدلها به یک چالش تبدیل شده است. قالبهای متداول مانند JSON یا YAML علیرغم قابلیت بالا، از نظر «هزینه توکنی» (token cost) برای مدلها اصلا بهینه نیستند. TOON با هدف کاهش هزینه توکن و بهبود فهم مدلها برای ورودیهای بزرگ طراحی شده است.
در مستند TOON آمده است که: «TOON قالبی human-readable و فشرده برای سریالسازی دادههای ساختار یافته است که برای ارسال به مدلهای زبانی طراحی شده و میتواند بهطور معنیداری تعداد توکنهای مصرفشده را کاهش دهد.»
مثالی از JSON و تبدیل مشابه آن به TOON:
{ "users": [ { "id": 1, "name": "Roham", "role": "admin" }, { "id": 2, "name": "Ziba", "role": "user" } ] }
در TOON به این شکل است:
users[2]{id,name,role}: 1,Roham,admin 2,Ziba,user
بنابراین، وقتی شما دادهای دارید با آرایههای بزرگ که ساختار یکنواخت دارند (مثلاً رکوردهای کاربران یا آیتمهای فروش)، TOON میتواند ۳۰٪ تا ۶۰٪ تعداد توکنها را در مقایسه با JSON کاهش دهد.
در ادامه مهمترین ویژگیهای TOON را مرور میکنیم:
فشردگی توکنی: کاهش چشمگیر تعداد توکنهای مصرفی در ورودی مدلهای زبانی.
خوانایی نسبی برای انسان: قالبی که ترکیبی از YAML-مانند (برای داده های تودرتو) و CSV-مانند (برای آرایههای یکنواخت) .
ساختار صریح: شامل نمایش طول آرایهها ([N]) و تعیین صریح فیلدها {field1,field2,...} برای آرایههای یکنواخت.
سینتکس بسیار مختصر: حذف بسیاری از کروشهها، براکتها و بهکارگیری حداقلی از نقلقولها.
سازگار با استفاده به عنوان ورودی LLM: هدف اصلی نه ذخیرهسازی یا API بلکه تغذیه داده به مدلهای زبانی است.
بله — هیچ قالب دادهای کامل نیست. TOON هم محدودیتهایی دارد که باید آنها را شناخت. مستند رسمی آنها را اینگونه معرفی میکند:
وقتی دادههای شما عمیقاً تودرتو (deep nested) هستند و ساختار یکنواخت ندارند: در این حالت JSON ممکن است گزینه بهتری باشد.
وقتی آرایههای شما نیمه یکنواخت (semi-uniform) هستند: یعنی بعضی آیتمها فیلدهای متفاوت دارند یا ساختار متفاوت دارند.
وقتی داده کاملاً تجریدی و ساده (مثل یک جدول کاملاً صاف) باشد: در آن صورت ممکن است CSV یا دیگر فرمتهای مختصرتر حتی کاراتر باشند.
زمانی که سازگاری با اکوسیستمهای موجود (مثلاً APIهای آماده، ذخیرهسازی، پایگاهداده) اهمیت بیشتری از توکنکاهش داشته باشد.
عملکرد TOON را میتوان در دو قسمت اصلی توضیح داد:
آرایههای یکنواخت (Tabular Arrays): وقتی شما مجموعهای از آبجکتها دارید که تمام آنها دقیقاً همان فیلدها را دارند، TOON با اعلام آن فیلدها یکبار، سپس ارائهٔ رکوردها به صورت مقادیر جدا شده با کاما، بسیار بهینه عمل میکند. مثال بالا نشان میدهد.
ساختارهای تودرتو و اسکالرها: برای مقادیر منفرد، آرایههای ساده یا اشیاء با ساختار تودرتو، TOON سینتکس خود را دارد — مانند استفاده از «key: value» مشابه YAML، یا نمایشی از آرایه با [N]: سپس مقادیر.
سینتکس مختصر مثال:
tags[3]: admin,ops,dev
یا
user: id: 123 profile: name: Roham
اگر بخواهم در زبان ساده بگویم: اگر شما با دادههایی سروکار دارید که قرار است به مدل زبانی بروند — مثلاً خروجی از یک دیتابیس، نتایج تحلیل، دادههای ارسال به API مدل — و این دادهها آرایههای بزرگ با ساختار یکسان هستند، TOON میتواند گزینه بسیار خوبی باشد.
در مقابل، اگر دارید دادهای میفرستید به سیستم ذخیرهسازی، بانک اطلاعات، یا API که همه ابزارها JSON را انتظار دارند، ممکن است همان JSON گزینه بهتری باشد.
برای شروع کار با TOON کافی است:
اگر دادهٔ ای را به فرمت JSON داشته باشید
با ابزارها یا کتابخانههای TOON آن را به فرمت TOON تبدیل کنید
به مدل زبانی ارسال کنید یا از آن دریافت کنید
به عنوان مثال (در جاوااسکریپت):
import { encode, decode } from '@toon-format/toon'; const data = { items: [ { id: 'A1', qty: 2, price: 9.99 }, { id: 'B2', qty: 1, price: 14.50 } ] }; const toonText = encode(data); console.log(toonText); // items[2]{id,qty,price}: // A1,2,9.99 // B2,1,14.50
همچنین مستندات رسمی نکاتی مثل تغییر جداکننده (delimiter) برای توکنهای کمتر، بررسی تعداد توکنها و برگشت از TOON به JSON را بیان کردهاند.
TOON را میتوان به عنوان یکی از ابزارهای جدید در جعبه ابزار مهندسی داده برای تعامل با مدلهای زبانی دانست:
اگر دادهٔ شما یکنواخت»، ساختارمند»، ارسالی به LLM دارد، TOON میتواند صرفهجویی توکنی زیادی به همراه آورد.
اگر داده شما پیچیده، گردشکاری (workflow) برنامهای سنتی یا ذخیرهسازی است، شاید بهتر باشد از قالبهای رایجتر استفاده کنید.
در نهایت، TOON نه تهدیدی برای JSON است، بلکه مکملی برای موقعیتهای خاص است. اگر در پروژهی شما ارسال داده به مدلهای زبانی بخش مهمی است، توصیه میکنم حتماً یک آزمایش با TOON انجام دهید و تعداد توکنها، سرعت تحلیل مدل و خطاها را مقایسه کنید.
۱. مخزن رسمی TOON در گیتهاب
https://github.com/toon-format/toon