TOON چیست؟
همه ما آنجا بوده ایم. شما در حال مهندسی کردن یک درخواست برای یک مدل زبان بزرگ (LLM) هستید و باید داده های ساختاریافته را ارسال کنید. شما به JSON می رسید. بالاخره این استاندارد صنعتی است. اما وقتی می بینید که پنجره زمینه خود پر از پرانتزهای مجعد بی پایان، کلیدهای مکرر و علامت های نقل قول در اطراف اعداد صحیح ساده می شود، شروع به تعجب می کنید: آیا راه بهتری وجود دارد؟
YAML خوانایی ارائه می دهد اما از ابهام رنج می برد. CSV متراکم است اما سلسله مراتبی ندارد.
TOON را وارد کنید.
TOON یک قالب سریالسازی دادهها است که برای توسعهدهندگان مانند یک نفس تازه و یک زبان مادری برای مدلهای هوش مصنوعی است. این شکاف بین خوانایی انسان و کارایی ماشین را پر می کند. امروز، بیایید عمیقاً در نحو و مکانیک TOON غوطه ور شویم تا بفهمیم چرا به سرعت تبدیل به یکی از محبوبترین گزینهها برای تبادل داده با کارایی بالا شده است.
فلسفه: JSON Semantics، YAML Aesthetics
در هسته خود، TOON دقیقاً همان مدل داده ای را با JSON به اشتراک می گذارد. اگر میتوانید آن را در JSON نمایش دهید - رشتهها، اعداد، بولی، تهی، اشیاء و آرایهها - میتوانید آن را در TOON نشان دهید. با این حال، ارائه کاملاً متفاوت است.
TOON بریس ها را جدا می کند. از تورفتگی برای نشان دادن سلسله مراتب استفاده می کند، مانند YAML. یک شی ساده تمیز و قابل دسترس به نظر می رسد:
با این حال، بر خلاف YAML، TOON در مورد انواع سختگیرانه عمل می کند. نمی توان حدس زد که "no" به معنای "نادرست" باشد یا رشته "no". در TOON، رشتهها فقط در مواقع ضروری به نقل قول نیاز دارند - مانند زمانی که دارای کاراکترهای خاص، شبیه اعداد یا خالی هستند. اگر «پیام: Hello World» را تایپ کنید، یک رشته دریافت می کنید. اگر «count: 42» را تایپ کنید، یک عدد دریافت می کنید.
`` یامل شناسه: 123 نام: آدا فعال: درست
قدرت آرایه ها: طول و جداول
جایی که TOON واقعاً خود را از بسته جدا می کند، مدیریت آرایه ها است. این "ویژگی کشنده" برای بهینه سازی توکن است.
هر آرایه در TOON به صراحت طول خود را در پرانتز، مانند «اقلام[3]» اعلام میکند. این ممکن است برای یک انسان زائد به نظر برسد، اما برای یک LLM، یک ابرقدرت است. این به مدل اجازه می دهد تا ساختار را فوراً تأیید کند و برش را تشخیص دهد. اگر جریان پس از دو مورد قطع شود اما هدر وعده سه مورد را داده باشد، تجزیه کننده می داند که مشکلی پیش آمده است.
TOON به طور موثر سه راه برای مدیریت آرایه ها ارائه می دهد که به طور خودکار کارآمدترین آنها را انتخاب می کند:
- Inline Primitives: برای لیست های ساده اعداد یا رشته ها، TOON آن را فشرده نگه می دارد. «برچسبها[3]: admin، ops، dev».
- فهرست های استاندارد: برای انواع مختلط، از یک نحو فهرست خطی مشابه YAML استفاده می کند.
- اشیاء جدولی: این تغییر دهنده بازی است.
اگر آرایه ای از اشیاء دارید که کلیدهای یکسانی دارند - یک الگوی بسیار رایج در رکوردهای پایگاه داده - TOON به یک قالب جدولی می چرخد. به جای تکرار کلیدها برای هر ردیف، کلیدها را یک بار در هدر اعلام می کند.
در مثال بالا، «users[2]{id,name,role}:» به ما می گوید که 2 ردیف داریم و طرحواره را تعریف می کند. داده ها در یک ساختار CSV-مانند دنبال می شوند. این کار سربار توکن عظیم تکرار "id":"، "name":" و "role":" را برای هر کاربر حذف می کند.
`` یامل کاربران[2]{id,name,role}: 1، آلیس مدیر، مدیر 2، باب اسمیت، کاربر
مرزها و کارایی توکن
ممکن است متوجه استفاده از کاما در مثال های بالا شوید. TOON در واقع از سه جداکننده پشتیبانی می کند: کاما (پیش فرض)، زبانه ها و لوله ها (|).
چرا این مهم است؟ توکن سازی.
در بسیاری از توکن سازهای LLM، یک کاما به دنبال یک نقل قول ممکن است به چندین توکن تقسیم شود. با این حال، یک کاراکتر برگه، اغلب به صورت کاملاً تمیز نشانه گذاری می شود. TOON به شما این امکان را می دهد که جداکننده ها را در سطح هدر آرایه تغییر دهید. اگر از جداکننده برگه استفاده میکنید، اغلب حتی نیازی به نقل قول رشتههایی که حاوی فاصله هستند، ندارید و اطلاعات شما را بیشتر فشرده میکند.
این قالب به اندازه کافی هوشمند است تا بتواند «برخوردها» را مدیریت کند. اگر دادههای شما حاوی جداکننده فعال است، TOON به سادگی آن مقدار خاص را نقلقول میکند.
`` یامل موارد[2]{sku,name,qty}: A1، نام ویجت، 2 B2، نام اسبابک، 1
تا کردن کلید: صاف کردن منحنی
یکی دیگر از ویژگیهایی که تمرکز TOON بر کارایی را برجسته میکند، Key Folding است. اجسام عمیق تو در تو معمولاً منجر به "پلکانی" فرورفتگی می شوند که فضای افقی و نشانه ها را می خورد.
اگر یک سلسله مراتب عمیق دارید که در آن اشیاء میانی خواهر و برادر ندارند، TOON می تواند آنها را در یک مسیر نقطه-نقطه جمع کند.
به جای نوشتن:
می توانید بنویسید:
`` یامل داده ها: فراداده: موارد [2]: الف، ب
این ویژگی که از زمان spec v1.5 در دسترس است، تعداد خطوط و توکن های تورفتگی را به میزان قابل توجهی کاهش می دهد. نکته مهم این است که این کاملا قابل برگشت است. هنگامی که داده ها را با فعال کردن گسترش مسیر رمزگشایی می کنید، سلسله مراتب شی عمیق را به خوبی بازسازی می کند.
`` یامل data.metadata.items[2]: a,b
سختگیری و ایمنی
علیرغم ظاهر مختصر آن، TOON با داده ها شل نیست. برای نقل قول و فرار از یک سری قوانین سختگیرانه پیروی می کند.
رشته ها معمولا بدون نقل قول می مانند، که برای خوانایی عالی است. با این حال، TOON برای اطمینان از یکپارچگی داده ها، نقل قول را برای موارد لبه اعمال می کند. اگر رشته ای شبیه یک عدد باشد (به عنوان مثال، «05»» یا «1e-6»)، نقل قول می شود تا از تجزیه آن به عنوان عدد جلوگیری شود. اگر یک رشته یک کلمه رزرو شده مانند "true" یا "null" باشد، نقل قول می شود.
علاوه بر این، TOON اعداد را عادی می کند. این فرمهای اعشاری متعارف را منتشر میکند - بدون علامت علمی یا صفرهای دنبالهدار در خروجی - که ثبات را تضمین میکند. حتی "BigInt" را با خیال راحت مدیریت می کند. اگر عددی از محدوده اعداد صحیح ایمن فراتر رود، برای جلوگیری از اتلاف دقت در حین حمل و نقل، به صورت رشته ای سریال می شود.
فرم های ریشه
در حالی که اکثر ما با Root Objects کار می کنیم، TOON انعطاف پذیر است. یک سند نباید با یک جفت کلید-مقدار شروع شود. از آرایه های ریشه (که بلافاصله با '[N]:' شروع می شود) یا حتی یک Root Primitive پشتیبانی می کند. این برابری با JSON به این معنی است که میتوانید TOON را به تقریباً هر خط لولهای که در حال حاضر از JSON استفاده میشود، تعویض کنید، به شرطی که تجزیهکننده را در طرف دیگر داشته باشید.
افکار نهایی
TOON فقط "فرمت دیگری" نیست. این یک ابزار تخصصی برای دوره ای است که داده ها توسط مدل های احتمالی به همان اندازه که توسط کد قطعی مصرف می شود، مصرف می شود. با ترکیب مدل داده صلب JSON با چگالی CSV و خوانایی YAML، مشکل خاص بهینهسازی پنجره زمینه را بدون به خطر انداختن ایمنی نوع حل میکند.
اگر در حال ساخت عوامل، مدلهای تنظیم دقیق هستید، یا فقط از پیمایش در مهاربندهای بسته بیپایان خسته شدهاید، وقت آن رسیده است که به TOON نگاهی بیندازید.