तून क्या है?
हम सभी वहां थे। आप एक बड़े भाषा मॉडल (एलएलएम) के लिए एक प्रॉम्प्ट इंजीनियरिंग कर रहे हैं, और आपको संरचित डेटा पास करने की आवश्यकता है। आप JSON तक पहुंचें. आख़िरकार, यह उद्योग मानक है। लेकिन जब आप अपनी संदर्भ विंडो को अंतहीन घुंघराले ब्रेसिज़, दोहराई गई कुंजियों और सरल पूर्णांकों के आसपास उद्धरण चिह्नों से भरते हुए देखते हैं, तो आप आश्चर्यचकित होने लगते हैं: क्या कोई बेहतर तरीका है?
YAML पठनीयता प्रदान करता है लेकिन अस्पष्टता से ग्रस्त है। सीएसवी सघन है लेकिन इसमें पदानुक्रम का अभाव है।
टून दर्ज करें।
TOON एक डेटा क्रमबद्धता प्रारूप है जो डेवलपर्स के लिए ताज़ी हवा के झोंके और AI मॉडल के लिए एक मूल भाषा की तरह महसूस होता है। यह मानव पठनीयता और मशीन दक्षता के बीच अंतर को पाटता है। आज, आइए यह समझने के लिए TOON के सिंटैक्स और यांत्रिकी में गहराई से उतरें कि यह उच्च दक्षता वाले डेटा इंटरचेंज के लिए तेजी से पसंदीदा क्यों बन रहा है।
दर्शन: JSON शब्दार्थ, YAML सौंदर्यशास्त्र
इसके मूल में, TOON JSON के समान ही डेटा मॉडल साझा करता है। यदि आप इसे JSON-प्रिमिटिव्स (स्ट्रिंग्स, नंबर्स, बूलियन्स, नल), ऑब्जेक्ट्स और एरेज़ में प्रस्तुत कर सकते हैं-तो आप इसे TOON में प्रस्तुत कर सकते हैं। हालाँकि, प्रस्तुतिकरण मौलिक रूप से भिन्न है।
TOON ब्रेसिज़ को हटा देता है। यह YAML की तरह, पदानुक्रम का प्रतिनिधित्व करने के लिए इंडेंटेशन का उपयोग करता है। एक साधारण वस्तु साफ और पहुंच योग्य दिखती है:
हालाँकि, YAML के विपरीत, TOON प्रकारों के बारे में सख्त है। इसमें कोई अनुमान नहीं है कि नहीं का अर्थ झूठा है या स्ट्रिंग "नहीं"। TOON में, स्ट्रिंग्स को केवल तभी उद्धरण की आवश्यकता होती है जब बिल्कुल आवश्यक हो - जैसे कि जब उनमें विशेष वर्ण हों, संख्याओं से मिलते-जुलते हों, या खाली हों। यदि आप संदेश: हैलो वर्ल्ड टाइप करते हैं, तो आपको एक स्ट्रिंग मिलती है। यदि आप गिनती: 42 टाइप करते हैं, तो आपको एक संख्या मिलती है।
आईडी: 123
नाम: अदा
सक्रिय: सत्य
सारणियों की शक्ति: लंबाई और तालिकाएँ
जहां TOON वास्तव में खुद को पैक से अलग करता है वह है सरणियों का प्रबंधन। यह टोकन अनुकूलन के लिए "हत्यारा सुविधा" है।
TOON में प्रत्येक सरणी स्पष्ट रूप से कोष्ठक में अपनी लंबाई घोषित करती है, जैसे आइटम[3]। यह एक इंसान के लिए अनावश्यक लग सकता है, लेकिन एलएलएम के लिए, यह एक महाशक्ति है। यह मॉडल को संरचना को तुरंत मान्य करने और ट्रंकेशन का पता लगाने की अनुमति देता है। यदि स्ट्रीम दो आइटम के बाद कट जाती है लेकिन हेडर ने तीन का वादा किया है, तो पार्सर को पता चलता है कि कुछ गलत हो गया है।
TOON प्रभावी ढंग से सरणियों को संभालने के तीन तरीके प्रदान करता है, स्वचालित रूप से सबसे कुशल को चुनता है:
- इनलाइन प्रिमिटिव्स: संख्याओं या स्ट्रिंग्स की सरल सूचियों के लिए, TOON इसे कॉम्पैक्ट रखता है।
टैग[3]: एडमिन,ऑप्स,डेव
- मानक सूचियाँ: मिश्रित प्रकारों के लिए, यह YAML के समान एक हाइफ़नेटेड सूची सिंटैक्स का उपयोग करता है।
- सारणीबद्ध वस्तुएँ: यह गेम-चेंजर है।
यदि आपके पास वस्तुओं की एक श्रृंखला है जो समान कुंजियाँ साझा करती है - डेटाबेस रिकॉर्ड में एक बहुत ही सामान्य पैटर्न - तो ** सारणीबद्ध प्रारूप ** में टून पिवोट्स। प्रत्येक पंक्ति के लिए कुंजियाँ दोहराने के बजाय, यह हेडर में एक बार कुंजियाँ घोषित करता है।
उपरोक्त उदाहरण में, users[2]{id,name,role}: हमें बताता है कि हमारे पास 2 पंक्तियाँ हैं और स्कीमा को परिभाषित करता है। डेटा CSV जैसी संरचना में चलता है। इससे प्रत्येक उपयोगकर्ता के लिए "id":, "name":, और "role": को दोहराने का भारी टोकन ओवरहेड समाप्त हो जाता है।
उपयोगकर्ता[2]{आईडी,नाम,भूमिका}:
1, ऐलिस एडमिन, एडमिन
2, बॉब स्मिथ, उपयोगकर्ता
सीमांकक और टोकन दक्षता
आप उपरोक्त उदाहरणों में अल्पविराम का उपयोग देख सकते हैं। TOON वास्तव में तीन सीमांककों का समर्थन करता है: अल्पविराम (डिफ़ॉल्ट), टैब, और पाइप (|)।
यह क्यों मायने रखता है? टोकनीकरण।
कई एलएलएम टोकनाइज़र में, एक उद्धरण के बाद अल्पविराम को कई टोकन में विभाजित किया जा सकता है। हालाँकि, एक टैब कैरेक्टर अक्सर बहुत सफाई से टोकनाइज़ होता है। TOON आपको सरणी हेडर स्तर पर सीमांकक स्विच करने की अनुमति देता है। यदि आप एक टैब डिलीमीटर का उपयोग करते हैं, तो आपको अक्सर उन स्ट्रिंग्स को उद्धृत करने की भी आवश्यकता नहीं होती है जिनमें रिक्त स्थान होते हैं, जिससे आपका डेटा और संपीड़ित होता है।
यह प्रारूप "टकराव" को संभालने के लिए पर्याप्त स्मार्ट है। यदि आपके डेटा में सक्रिय सीमांकक शामिल है, तो TOON बस उस विशिष्ट मान को उद्धृत करता है।
आइटम[2]{sku,नाम,मात्रा}:
A1,विजेट नाम,2
बी2,गैजेट नाम,1
कुंजी मोड़ना: वक्र को समतल करना
एक अन्य विशेषता जो दक्षता पर TOON के फोकस को उजागर करती है वह है की फोल्डिंग। गहरी नेस्टेड वस्तुओं में आमतौर पर इंडेंटेशन की "सीढ़ी" बनती है जो क्षैतिज स्थान और टोकन को खा जाती है।
यदि आपके पास एक गहरी पदानुक्रम है जहां मध्यवर्ती वस्तुओं के भाई-बहन नहीं हैं, तो TOON उन्हें एक डॉट-नोटेशन पथ में संक्षिप्त कर सकता है।
लिखने के बजाय:
आप लिख सकते हो:
डेटा:
मेटाडेटा:
आइटम[2]: ए, बी
स्पेक v1.5 के बाद से उपलब्ध यह सुविधा, लाइन गिनती और इंडेंटेशन टोकन को काफी कम कर देती है। महत्वपूर्ण बात यह है कि यह पूरी तरह से उलटने योग्य है। जब आप पथ विस्तार सक्षम करके डेटा को डीकोड करते हैं, तो यह गहरी वस्तु पदानुक्रम को पूरी तरह से पुनर्निर्माण करता है।
data.metadata.items[2]: ए,बी
सख्ती और सुरक्षा
अपने संक्षिप्त रूप के बावजूद, TOON डेटा के मामले में ढीला नहीं है। यह उद्धृत करने और भागने के लिए सख्त नियमों का पालन करता है।
स्ट्रिंग्स आम तौर पर उद्धृत नहीं की जातीं, जो पठनीयता के लिए बहुत अच्छी है। हालाँकि, TOON डेटा अखंडता सुनिश्चित करने के लिए किनारे के मामलों के लिए उद्धरण लागू करता है। यदि कोई स्ट्रिंग एक संख्या की तरह दिखती है (उदाहरण के लिए, "05" या "1e-6"), तो इसे एक संख्या के रूप में पार्स करने से रोकने के लिए उद्धृत किया जाता है। यदि कोई स्ट्रिंग सही या शून्य जैसा आरक्षित शब्द है, तो इसे उद्धृत किया जाता है।
इसके अलावा, TOON संख्याओं को सामान्यीकृत करता है। यह विहित दशमलव रूपों का उत्सर्जन करता है - आउटपुट में कोई वैज्ञानिक संकेतन या अनुगामी शून्य नहीं - स्थिरता सुनिश्चित करता है। यह बिगइंट को भी सुरक्षित रूप से संभालता है; यदि कोई संख्या सुरक्षित पूर्णांक सीमा से अधिक है, तो परिवहन के दौरान सटीक हानि को रोकने के लिए इसे एक स्ट्रिंग के रूप में क्रमबद्ध किया जाता है।
मूल रूप
जबकि हममें से अधिकांश लोग रूट ऑब्जेक्ट के साथ काम करते हैं, TOON लचीला है। किसी दस्तावेज़ को कुंजी-मान जोड़ी से प्रारंभ करना आवश्यक नहीं है। यह रूट एरेज़ ([एन]: से तुरंत शुरू) या यहां तक कि एक रूट प्रिमिटिव का भी समर्थन करता है। JSON के साथ इस समानता का मतलब है कि आप TOON को लगभग किसी भी पाइपलाइन में स्वैप कर सकते हैं जहां JSON का वर्तमान में उपयोग किया जाता है, बशर्ते आपके पास दूसरे छोर पर पार्सर हो।
अंतिम विचार
TOON सिर्फ "एक अन्य प्रारूप" नहीं है। यह उस युग के लिए एक विशेष उपकरण है जहां डेटा का उपभोग नियतिवादी कोड के समान ही संभाव्य मॉडल द्वारा किया जाता है। JSON के कठोर डेटा मॉडल को CSV के घनत्व और YAML की पठनीयता के साथ जोड़कर, यह प्रकार की सुरक्षा का त्याग किए बिना संदर्भ-विंडो अनुकूलन की विशिष्ट समस्या को हल करता है।
यदि आप एजेंट बना रहे हैं, मॉडल को फाइन-ट्यूनिंग कर रहे हैं, या अंतहीन क्लोजिंग ब्रेसिज़ के माध्यम से स्क्रॉल करते-करते थक गए हैं, तो अब समय आ गया है कि आप TOON पर एक नज़र डालें।