ویرگول
ورودثبت نام
Roham
Rohamپیدا کردن خودم توی نوشته ها برام جذابه بهم یه حس خوب بودن می ده مخصوصا وقتی با طعم علم و خلاقیت همراه باشه هر روز که بیشتر با این دنیا آشنا می شم حس بهتری برای بیشتر دونستن و یاد دادن درونم رشد می کنه
Roham
Roham
خواندن ۴ دقیقه·۲ ماه پیش

TOON: قالب داده‌ای کارا برای تعامل با مدل‌های زبانی

(Token-Oriented Object Notation)

Token-Oriented Object Notation
Token-Oriented Object Notation

در دنیای امروز، که مدل‌های زبانی بزرگ (LLMها) بیش از پیش در جریان داده‌ها و پردازش اطلاعات به کار گرفته می‌شوند، انتقال ساختار یافتهٔ داده به این مدل‌ها به یک چالش تبدیل شده است. قالب‌های متداول مانند JSON یا YAML علی‌رغم قابلیت بالا، از نظر «هزینه توکنی» (token cost) برای مدل‌ها اصلا بهینه نیستند. TOON با هدف کاهش هزینه توکن و بهبود فهم مدل‌ها برای ورودی‌های بزرگ طراحی شده است.

چرا 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

در ادامه مهم‌ترین ویژگی‌های TOON را مرور می‌کنیم:

  • فشردگی توکنی: کاهش چشمگیر تعداد توکن‌های مصرفی در ورودی مدل‌های زبانی.

  • خوانایی نسبی برای انسان: قالبی که ترکیبی از YAML-مانند (برای داده های تودرتو) و CSV-مانند (برای آرایه‌های یکنواخت) .

  • ساختار صریح: شامل نمایش طول آرایه‌ها ([N]) و تعیین صریح فیلدها {field1,field2,...} برای آرایه‌های یکنواخت.

  • سینتکس بسیار مختصر: حذف بسیاری از کروشه‌ها، براکت‌ها و به‌کارگیری حداقلی از نقل‌قول‌ها.

  • سازگار با استفاده به عنوان ورودی LLM: هدف اصلی نه ذخیره‌سازی یا API بلکه تغذیه داده به مدل‌های زبانی است.

چه زمانی TOON مناسب نیست؟

بله — هیچ قالب داده‌ای کامل نیست. TOON هم محدودیت‌هایی دارد که باید آن‌ها را شناخت. مستند رسمی آن‌ها را این‌گونه معرفی می‌کند:

  • وقتی داده‌های شما عمیقاً تودرتو (deep nested) هستند و ساختار یکنواخت ندارند: در این حالت JSON ممکن است گزینه بهتری باشد.

  • وقتی آرایه‌های شما نیمه‌ یکنواخت (semi-uniform) هستند: یعنی بعضی آیتم‌ها فیلدهای متفاوت دارند یا ساختار متفاوت دارند.

  • وقتی داده کاملاً تجریدی و ساده (مثل یک جدول کاملاً صاف) باشد: در آن صورت ممکن است CSV یا دیگر فرمت‌های مختصرتر حتی کاراتر باشند.

  • زمانی که سازگاری با اکوسیستم‌های موجود (مثلاً APIهای آماده، ذخیره‌سازی، پایگاه‌داده) اهمیت بیشتری از توکن‌کاهش داشته باشد.

معماری و نحوهٔ کارکرد TOON

عملکرد TOON را می‌توان در دو قسمت اصلی توضیح داد:

  1. آرایه‌های یکنواخت (Tabular Arrays): وقتی شما مجموعه‌ای از آبجکت‌ها دارید که تمام آن‌ها دقیقاً همان فیلدها را دارند، TOON با اعلام آن فیلدها یک‌بار، سپس ارائهٔ رکوردها به صورت مقادیر جدا شده با کاما، بسیار بهینه عمل می‌کند. مثال بالا نشان می‌دهد.

  2. ساختارهای تودرتو و اسکالرها: برای مقادیر منفرد، آرایه‌های ساده یا اشیاء با ساختار تودرتو، TOON سینتکس خود را دارد — مانند استفاده از «key: value» مشابه YAML، یا نمایشی از آرایه با [N]: سپس مقادیر.

سینتکس مختصر مثال:

tags[3]: admin,ops,dev

یا

user: id: 123 profile: name: Roham

کاربردها و سناریوهای مناسب

اگر بخواهم در زبان ساده بگویم: اگر شما با داده‌هایی سروکار دارید که قرار است به مدل زبانی بروند — مثلاً خروجی از یک دیتابیس، نتایج تحلیل، داده‌های ارسال به API مدل — و این داده‌ها آرایه‌های بزرگ با ساختار یکسان هستند، TOON می‌تواند گزینه بسیار خوبی باشد.
در مقابل، اگر دارید داده‌ای می‌فرستید به سیستم ذخیره‌سازی، بانک اطلاعات، یا API که همه ابزارها JSON را انتظار دارند، ممکن است همان JSON گزینه بهتری باشد.

شروع سریع با TOON

برای شروع کار با 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

مدل‌های زبانی
۰
۰
Roham
Roham
پیدا کردن خودم توی نوشته ها برام جذابه بهم یه حس خوب بودن می ده مخصوصا وقتی با طعم علم و خلاقیت همراه باشه هر روز که بیشتر با این دنیا آشنا می شم حس بهتری برای بیشتر دونستن و یاد دادن درونم رشد می کنه
شاید از این پست‌ها خوشتان بیاید