نحوه استفاده از TOON با LLM
اگر تا به حال یک آرایه بزرگ JSON را در ChatGPT یا Claude قرار داده باشید، احتمالاً درد بسته شدن پنجره زمینه را احساس کرده اید. تکرار نام فیلدها مانند "id":، "name":، و "timestamp":` برای هر رکورد تنها زائد نیست. از طریق توکن هایی می سوزد که هزینه واقعی و فضای زمینه ارزشمند دارند.
اینجاست که TOON (نشانگذاری شیء جدول) می درخشد. این فقط یک فرمت داده نیست. این یک استراتژی برای بهینه سازی تعاملات LLM است. با حذف مالیات نحوی JSON و افزودن سرصفحه ساختار صریح، TOON به شما این امکان را میدهد که دادههای بیشتری را به مدلهای خود منتقل کنید و در ازای آن خروجیهای ساختاری قابل اعتمادتری دریافت کنید.
اقتصاد رمزی TOON
چرا برای تغییر فرمت ها زحمت می کشیم؟ ریاضی ساده است. در یک آرایه استاندارد JSON از اشیاء، طرحواره برای هر ردیف تکرار می شود. اگر لیست 50 کاربر دارید، 50 بار برای نام فیلدها پرداخت می کنید.
TOON این افزونگی را با یک بار اعلام طرح در هدر حذف می کند. داده ها در قالب متراکم و منظم دنبال می شوند. در عمل، این معمولا منجر به کاهش 30 تا 60٪ در استفاده از توکن برای آرایه های یکنواخت در مقایسه با JSON فرمت شده می شود. وقتی با پنجرههای زمینه عظیم یا تماسهای API با حجم بالا سروکار دارید، این کارایی مستقیماً به صورتحسابهای کمتر و تأخیر کمتر ترجمه میشود.
ارسال داده: قانون "نمایش، نگو".
هنگامی که برای تجزیه و تحلیل داده ها به یک LLM نیاز دارید، استراتژی سریع شما بسیار مهم است. مبتدیان اغلب پاراگراف های طولانی را می نویسند و فرمت داده ها را توضیح می دهند. با TOON، نیازی به انجام این کار ندارید.
LLM ها موتورهای تطبیق الگو هستند. آنها به طور شهودی TOON را درک می کنند زیرا به نظر می رسد ترکیبی از YAML و CSV است - قالب هایی که میلیاردها بار در طول آموزش دیده اند.
برای ارسال داده، کافی است آن را در یک بلوک کد محصور شده بپیچید. میتوانید آن را برچسب «toon» بگذارید، اما حتی اگر برجستهکننده نحو مدل به طور رسمی از آن پشتیبانی نکند، مدل بلافاصله ساختار را درک میکند.
مثال ورودی
به جای توصیف طرحواره، فقط بلوک را ارائه دهید:
سربرگ «users[3]{id,name,role,lastLogin}» هر آنچه را که مدل باید بداند را میگوید: نوع موجودیت، تعداد (3 ردیف) و ترتیب فیلدها. تورفتگی سلسله مراتب را کنترل می کند. این ماهیت «خود مستندسازی» دستور شما را برای تمرکز بر روی کار منطقی واقعی به جای دستورالعملهای تجزیه نحوی آزاد میکند.
`` md اینجا گزارش فعالیت کاربر است. داده ها در قالب TOON (تورفتگی 2 فاصله، هدرهای صریح) هستند.
کاربران[3]{id,name,role,lastLogin}: 1,Alice,admin,2025-01-15T10:30:00Z 2,Bob,user,2025-01-14T15:22:00Z 3, چارلی, کاربر, 2025-01-13T09:45:00Z
وظیفه: گزارشها را تجزیه و تحلیل کنید و شناسایی کنید که چه کاربرانی در 24 ساعت گذشته وارد سیستم نشدهاند.
تولید خروجی قابل اعتماد
گرفتن یک LLM برای read داده ها آسان است. ساختن دادههای ساختاریافته معتبر بخش سخت آن است. مدلها عاشق توهم کردن، کوتاه کردن JSON یا فراموش کردن بریسهای بسته شدن هستند.
TOON یک لایه ایمنی را از طریق نحو هدر خود اضافه می کند، به ویژه تعداد «[N]». وقتی از یک مدل میخواهید خروجی TOON را صادر کند، از آن میخواهید قبل از تولید داده، به یک ساختار متعهد شود.
درخواست برای نسل
برای به دست آوردن بهترین نتایج، قالب هدر مورد نظر خود را ارائه دهید و به مدل دستور دهید تا ردیف ها را پر کند.
با درخواست از مدل برای محاسبه «[N]»، شما یک فرآیند «زنجیره فکری» را مجبور میکنید که در آن مدل باید اندازه خروجی را برنامهریزی کند. این محدودیت به ظاهر کوچک به طور قابل توجهی احتمال قطع شدن مدل را در نیمه راه یک لیست کاهش می دهد.
`` md وظیفه: لیستی از کاربران فعال را با نقش "کاربر" برگردانید. قالب: از TOON استفاده کنید. مقدار [N] را در هدر تنظیم کنید تا با تعداد دقیق ردیف هایی که ایجاد می کنید مطابقت داشته باشد.
فرمت مورد انتظار: کاربران[N]{id,name,role,lastLogin}:
اعتبارسنجی با حالت سختگیرانه
هنگامی که پاسخ را از LLM دریافت می کنید، نباید فقط به آن اعتماد کنید. اینجاست که حالت سختگیرانه کتابخانه TOON به یک ابرقدرت برای برنامههای تولید تبدیل میشود.
اگر از کتابخانه TypeScript استفاده میکنید، رمزگشایی با حالت سخت تأیید میکند که ردیفهای تولید شده با تعداد سرصفحه مطابقت دارند:
این به شما امکان میدهد بهجای کشف دادههای بد در پاییندست در برنامهتان، فوراً خروجیهای مدل «تنبل» یا قطعهای شبکه را دریافت کنید.
وارد کردن { رمزگشایی } از '@toon-format/toon';
سعی کن {
// اگر مدل می گوید [5] اما 4 ردیف ارائه می دهد، این یک خطا ایجاد می کند.
const data = decode(modelOutput, { strict: true });
console.log('داده های معتبر دریافت شده:', data);
} catch (خطا) {
console.error('مدل توهم یا برش شناسایی شد:', error.message);
}
بهینه سازی پیشرفته: ترفند تب
اگر به بهینهسازی وسواس دارید (و در دنیای LLM، احتمالاً باید اینطور باشید)، میتوانید با انتخاب هوشمندانه مرزهای خود، کارایی بیشتری را کاهش دهید.
کاماها استاندارد هستند، اما زبانه ها (\t) اغلب به عنوان یک نشانه در بسیاری از واژگان نشانه ساز نشان داده می شوند. علاوه بر این، برگهها به ندرت در فیلدهای متن طبیعی ظاهر میشوند، که نیاز به کاراکترهای فرار را کاهش میدهد (مانند پیچیدن رشتهها در نقل قول).
قبل از ارسال به مدل، می توانید داده های خود را با استفاده از تب ها رمزگذاری کنید:
فقط به یاد داشته باشید که در اعلان به مدل اطلاع دهید: "داده ها با تب جدا شده اند TOON." این یک نمایش فوق فشرده ایجاد می کند که تجزیه و تولید آن برای مدل فوق العاده آسان است.
const toonPrompt = encode(data, { delimiter: '\t' });
یک مثال کامل گردش کار
بیایید به یک سناریوی واقعی نگاه کنیم: فیلتر کردن گزارش های سیستم. شما می خواهید گزارش های خام را به مدل ارسال کنید و یک لیست ساختاریافته از خطاها را برگردانید.
پیشنهاد:
خروجی مدل:
`` md گزارشهای سیستم در قالب TOON (جدا شده از برگه):
رویدادها[4]{id,level,message,timestamp}: 1، خطا، مهلت زمانی اتصال، 2025-01-15T10:00:00Z 2، هشدار، پرسش آهسته، 2025-01-15T10:05:00Z 3، اطلاعات، ورود کاربر، 2025-01-15T10:10:00Z 4، خطا، خطای پایگاه داده025-01-15T10:15:00Z
وظیفه: همه رویدادها را با سطح "خطا" استخراج کنید. نتیجه را به عنوان TOON معتبر با تعداد سرصفحه به روز شده برگردانید.
نتیجه:
``تون رویدادها[2]{id,level,message,timestamp}: 1، خطا، مهلت زمانی اتصال، 2025-01-15T10:00:00Z 4، خطا، خطای پایگاه داده، 2025-01-15T10:15:00Z
مدل به درستی لیست را فیلتر کرد و مهمتر از همه، سرصفحه را به "رویدادها[2]" به روز کرد. با رمزگشایی این پاسخ، یک آرایه تمیز و ایمن برای منطق برنامه خود آماده می کنید.
خلاصه
TOON شکاف بین خوانایی انسان و کارایی ماشین را پر می کند. به محدودیت های هزینه LLM احترام می گذارد و در عین حال ساختار مورد نیاز برای توسعه نرم افزار قوی را فراهم می کند.
- آن را کوچک نگه دارید: از 2-5 ردیف در مثال های خود استفاده کنید. مدل تعمیم خواهد یافت.
- صریح باشید: هدرها را به وضوح تعریف کنید تا مدل طرحواره را بشناسد.
- تأیید دقیق: از متادیتای قالب برای تشخیص خطاهای تولید استفاده کنید.
با دور شدن از JSON برای بارهای سریع خود، فقط توکن ها را ذخیره نمی کنید، بلکه در حال ساخت خط لوله هوش مصنوعی قابل اعتمادتری هستید.