ما هو تون؟

تون
JSON
تحسين

لقد كنا جميعا هناك. أنت تقوم بهندسة موجه لنموذج لغة كبير (LLM)، وتحتاج إلى تمرير البيانات المنظمة. يمكنك الوصول إلى JSON. إنه معيار الصناعة، بعد كل شيء. ولكن بينما تشاهد نافذة السياق الخاصة بك تمتلئ بالأقواس المتعرجة التي لا نهاية لها، والمفاتيح المتكررة، وعلامات الاقتباس حول الأعداد الصحيحة البسيطة، تبدأ في التساؤل: هل هناك طريقة أفضل؟

توفر YAML إمكانية القراءة ولكنها تعاني من الغموض. ملف CSV كثيف ولكنه يفتقر إلى التسلسل الهرمي.

أدخل تون.

TOON هو تنسيق لتسلسل البيانات يبدو وكأنه نسمة هواء نقية للمطورين ولغة أصلية لنماذج الذكاء الاصطناعي. إنه يسد الفجوة بين سهولة القراءة البشرية وكفاءة الآلة. اليوم، دعونا نتعمق في بناء جملة TOON وآلياتها لفهم سبب تحولها بسرعة إلى المفضلة لتبادل البيانات عالي الكفاءة.

الفلسفة: دلالات JSON، جماليات YAML

في جوهره، يشارك TOON نفس نموذج البيانات تمامًا مثل JSON. إذا كان بإمكانك تمثيلها في JSON — الأولية (السلاسل والأرقام والقيم المنطقية والقيمة الخالية) والكائنات والمصفوفات — فيمكنك تمثيلها في TOON. ومع ذلك، فإن العرض مختلف جذريا.

تون يتخلص من الأقواس. ويستخدم المسافة البادئة لتمثيل التسلسل الهرمي، مثل الكثير من YAML. يبدو الشيء البسيط نظيفًا وودودًا:

على عكس YAML، فإن TOON صارم فيما يتعلق بالأنواع. ليس هناك تخمين إذا كانت كلمة "لا" تعني "خطأ" أو السلسلة "لا". في TOON، تتطلب السلاسل علامات الاقتباس فقط عند الضرورة القصوى، مثل عندما تحتوي على أحرف خاصة، أو تشبه الأرقام، أو تكون فارغة. إذا كتبت رسالة: Hello World، فستحصل على سلسلة. إذا كتبت العدد: 42، فستحصل على رقم.

``يامل المعرف: 123 الاسم: آدا نشط: صحيح

قوة المصفوفات: الطول والجداول

ما يفصل TOON نفسه حقًا عن الحزمة هو طريقة تعامله مع المصفوفات. هذه هي "الميزة القاتلة" لتحسين الرمز المميز.

كل مصفوفة في TOON تعلن بوضوح عن طولها بين قوسين، مثل items[3]. قد يبدو هذا زائدا عن الحاجة بالنسبة للإنسان، ولكن بالنسبة للماجستير في القانون، فهو قوة عظمى. فهو يسمح للنموذج بالتحقق من صحة البنية على الفور واكتشاف الاقتطاع. إذا انقطع الدفق بعد عنصرين ولكن الرأس وعد بثلاثة عناصر، فسيعلم المحلل أن هناك خطأ ما.

يقدم TOON بشكل فعال ثلاث طرق للتعامل مع المصفوفات، واختيار الطريقة الأكثر كفاءة تلقائيًا:

  1. الأوليات المضمنة: بالنسبة إلى قوائم الأرقام أو السلاسل البسيطة، يبقيها TOON مضغوطًا. `العلامات[3]: المشرف، العمليات، المطور
  1. القوائم القياسية: بالنسبة للأنواع المختلطة، تستخدم بنية قائمة موصولة مشابهة لـ YAML.
  1. الكائنات الجدولية: هذا هو تغيير قواعد اللعبة.

إذا كان لديك مجموعة من الكائنات التي تشترك في نفس المفاتيح - وهو نمط شائع جدًا في سجلات قاعدة البيانات - فإن TOON يتحول إلى تنسيق جدولي. بدلاً من تكرار المفاتيح لكل صف، فإنه يعلن عن المفاتيح مرة واحدة في الرأس.

في المثال أعلاه، يخبرنا users[2]{id,name,role}: أن لدينا صفين ويحدد المخطط. تتبع البيانات بنية تشبه ملف CSV. يؤدي هذا إلى التخلص من العبء الزائد للرمز المميز الناتج عن تكرار "id": و"name": و"role": لكل مستخدم.

``يامل المستخدمين[2]{المعرف، الاسم، الدور}: 1، أليس المشرف، المشرف 2، بوب سميث، المستخدم

المحددات وكفاءة الرمز المميز

قد تلاحظ استخدام الفواصل في الأمثلة أعلاه. يدعم TOON في الواقع ثلاثة محددات: الفواصل (افتراضية)، وعلامات التبويب، والأنابيب (|).

لماذا يهم هذا؟ الترميز.

في العديد من رموز LLM، قد يتم تقسيم الفاصلة المتبوعة بالاقتباس إلى رموز مميزة متعددة. ومع ذلك، فإن حرف علامة التبويب غالبًا ما يتم ترميزه بشكل نظيف للغاية. يتيح لك TOON تبديل المحددات على مستوى رأس المصفوفة. إذا كنت تستخدم محدد علامات التبويب، فلن تحتاج غالبًا إلى اقتباس السلاسل التي تحتوي على مسافات، مما يؤدي إلى ضغط بياناتك بشكل أكبر.

التنسيق ذكي بما يكفي للتعامل مع "الاصطدامات". إذا كانت بياناتك تحتوي على المحدد النشط، فإن TOON يقتبس ببساطة تلك القيمة المحددة.

``يامل العناصر[2]{SKU،الاسم،الكمية}: A1، اسم القطعة، 2 B2، اسم الأداة، 1

طي المفتاح: تسطيح المنحنى

ميزة أخرى تسلط الضوء على تركيز TOON على الكفاءة هي Key Folding. عادةً ما تؤدي الكائنات المتداخلة بعمق إلى "درج" من المسافة البادئة التي تشغل المساحة الأفقية والرموز المميزة.

إذا كان لديك تسلسل هرمي عميق حيث لا تحتوي الكائنات الوسيطة على أشقاء، فيمكن لـ TOON طيها في مسار تدوين نقطي.

بدلاً من الكتابة:

يمكنك الكتابة:

``يامل البيانات: البيانات الوصفية: العناصر[2]: أ، ب

تعمل هذه الميزة، المتوفرة منذ الإصدار 1.5 من المواصفات، على تقليل عدد الأسطر والمسافات البادئة بشكل كبير. والأهم من ذلك، أن هذا الأمر قابل للعكس تمامًا. عندما تقوم بفك تشفير البيانات مع تمكين توسيع المسار، فإنه يعيد بناء التسلسل الهرمي للكائن العميق بشكل مثالي.

``يامل data.metadata.items[2]: أ، ب

الصرامة والسلامة

على الرغم من مظهره الموجز، إلا أن TOON ليس فضفاضًا مع البيانات. إنه يلتزم بمجموعة صارمة من قواعد الاقتباس والهروب.

تبقى السلاسل عمومًا بدون علامات اقتباس، وهو أمر رائع لسهولة القراءة. ومع ذلك، يفرض TOON عرض أسعار لحالات الحافة لضمان سلامة البيانات. إذا كانت السلسلة تبدو كرقم (على سبيل المثال، "05" أو "1e-6")، فسيتم اقتباسها لمنع تحليلها كرقم. إذا كانت السلسلة عبارة عن كلمة محجوزة مثل true أو null، فسيتم اقتباسها.

علاوة على ذلك، يقوم TOON بتطبيع الأرقام. فهو يصدر أشكالًا عشرية أساسية - بدون تدوين علمي أو أصفار زائدة في المخرجات - مما يضمن الاتساق. حتى أنه يتعامل مع BigInt بأمان؛ إذا تجاوز الرقم نطاق العدد الصحيح الآمن، فسيتم إجراء تسلسل له كسلسلة لمنع فقدان الدقة أثناء النقل.

أشكال الجذر

بينما يعمل معظمنا مع الكائنات الجذرية، فإن TOON مرن. ليس من الضروري أن يبدأ المستند بزوج من القيمة الرئيسية. وهو يدعم مصفوفات الجذر (تبدأ فورًا بـ [N]:) أو حتى جذر أولي واحد. يعني هذا التكافؤ مع JSON أنه يمكنك تبديل TOON تقريبًا إلى أي مسار يستخدم فيه JSON حاليًا، بشرط أن يكون لديك المحلل اللغوي على الطرف الآخر.

الأفكار النهائية

TOON ليس مجرد "تنسيق آخر". إنها أداة متخصصة لعصر يتم فيه استهلاك البيانات من خلال النماذج الاحتمالية بقدر ما يتم استهلاكها من خلال الكود الحتمي. من خلال الجمع بين نموذج البيانات الصارم لـ JSON وكثافة ملف CSV وسهولة قراءة YAML، فإنه يحل المشكلة المحددة المتمثلة في تحسين نافذة السياق دون التضحية بسلامة النوع.

إذا كنت وكيل بناء، أو تقوم بضبط النماذج، أو سئمت فقط من التمرير عبر أقواس الإغلاق التي لا نهاية لها، فقد حان الوقت لإلقاء نظرة على TOON.