วิธีใช้ TOON กับ LLM
หากคุณเคยวางอาร์เรย์ JSON ขนาดใหญ่ลงใน ChatGPT หรือ Claude คุณอาจรู้สึกได้ถึงความเจ็บปวดเมื่อหน้าต่างบริบทปิดลง JSON นั้นยอดเยี่ยมสำหรับ Web API แต่สำหรับ Large Language Models (LLM) นั้นสิ้นเปลืองอย่างไม่น่าเชื่อ การทำซ้ำชื่อฟิลด์ เช่น "id":, "name": และ "timestamp": สำหรับทุก ๆ ระเบียนไม่ได้เป็นเพียงการซ้ำซ้อน มันเผาผลาญโทเค็นที่ใช้เงินจริงและพื้นที่บริบทอันมีค่า
นี่คือจุดที่ TOON (สัญลักษณ์วัตถุตาราง) โดดเด่น มันไม่ได้เป็นเพียงรูปแบบข้อมูลเท่านั้น เป็นกลยุทธ์ในการเพิ่มประสิทธิภาพการโต้ตอบ LLM ด้วยการแยกภาษีไวยากรณ์ของ JSON ออกไปและเพิ่มส่วนหัวของโครงสร้างที่ชัดเจน TOON ช่วยให้คุณสามารถส่งข้อมูลไปยังโมเดลของคุณได้มากขึ้น และได้รับผลลัพธ์ที่มีโครงสร้างที่เชื่อถือได้มากขึ้นเป็นการตอบแทน
เศรษฐศาสตร์โทเค็นของ TOON
ทำไมต้องเปลี่ยนรูปแบบ? คณิตศาสตร์เป็นเรื่องง่าย ในอาร์เรย์ JSON มาตรฐานของออบเจ็กต์ สคีมาจะถูกทำซ้ำสำหรับทุกแถว หากคุณมีรายชื่อผู้ใช้ 50 คน คุณจะต้องชำระค่าชื่อฟิลด์ 50 ครั้ง
TOON กำจัดความซ้ำซ้อนนี้ด้วยการประกาศสคีมาหนึ่งครั้งในส่วนหัว ข้อมูลจะตามมาในรูปแบบที่มีความหนาแน่นและต่อเนื่องกัน ในทางปฏิบัติ โดยทั่วไปแล้วจะส่งผลให้การใช้โทเค็นลดลง 30-60% สำหรับอาร์เรย์แบบเดียวกันเมื่อเปรียบเทียบกับ JSON ที่จัดรูปแบบแล้ว เมื่อคุณต้องรับมือกับหน้าต่างบริบทขนาดใหญ่หรือการเรียก API ในปริมาณมาก ประสิทธิภาพดังกล่าวจะแปลโดยตรงเป็นค่าใช้จ่ายที่ลดลงและเวลาแฝงที่ลดลง
การส่งข้อมูล: กฎ "แสดงอย่าบอก"
เมื่อคุณต้องการ LLM เพื่อวิเคราะห์ข้อมูล กลยุทธ์ที่รวดเร็วของคุณเป็นสิ่งสำคัญ ผู้เริ่มต้นมักจะเขียนย่อหน้ายาวเพื่ออธิบายรูปแบบข้อมูล ด้วย TOON คุณไม่จำเป็นต้องทำเช่นนั้น
LLM เป็นเครื่องมือจับคู่รูปแบบ พวกเขาเข้าใจ TOON ได้อย่างสัญชาตญาณเพราะมันดูเหมือนลูกผสมของ YAML และ CSV ซึ่งเป็นรูปแบบที่พวกเขาเห็นนับพันล้านครั้งระหว่างการฝึกอบรม
หากต้องการส่งข้อมูล เพียงห่อข้อมูลไว้ในบล็อกโค้ดที่มีรั้วกั้น คุณสามารถติดป้ายกำกับว่า "ตูน" ได้ แต่แม้ว่าตัวเน้นไวยากรณ์ของโมเดลจะไม่รองรับอย่างเป็นทางการ แต่โมเดลก็เข้าใจโครงสร้างได้ทันที
ตัวอย่างการป้อนข้อมูล
แทนที่จะอธิบายสคีมา เพียงแค่จัดเตรียมบล็อก:
ส่วนหัว users[3]{id,name,role,lastLogin} จะบอกทุกสิ่งที่โมเดลจำเป็นต้องรู้: ประเภทเอนทิตี จำนวน (3 แถว) และลำดับของฟิลด์ การเยื้องจะจัดการลำดับชั้น ลักษณะ "การจัดทำเอกสารด้วยตนเอง" นี้ช่วยให้คุณมีอิสระในการมุ่งเน้นไปที่งานตรรกะจริงมากกว่าคำแนะนำในการแยกวิเคราะห์ไวยากรณ์
นี่คือบันทึกกิจกรรมของผู้ใช้ ข้อมูลอยู่ในรูปแบบ TOON (เยื้อง 2 ช่องว่าง ส่วนหัวที่ชัดเจน)
ผู้ใช้[3]{id,ชื่อ,บทบาท,lastLogin}:
1,อลิซ,ผู้ดูแลระบบ,2025-01-15T10:30:00Z
2,บ๊อบ,ผู้ใช้,2025-01-14T15:22:00Z
3,ชาร์ลี,ผู้ใช้,2025-01-13T09:45:00Z
งาน: วิเคราะห์บันทึกและระบุผู้ใช้ที่ไม่ได้เข้าสู่ระบบภายใน 24 ชั่วโมงที่ผ่านมา
-
การสร้างผลลัพธ์ที่เชื่อถือได้
การรับ LLM เป็น read data เป็นเรื่องง่าย การทำให้มัน สร้าง ข้อมูลที่มีโครงสร้างที่ถูกต้องเป็นส่วนที่ยาก โมเดลชอบที่จะเห็นภาพหลอน ตัด JSON หรือลืมวงเล็บปีกกาปิด
TOON เพิ่มชั้นความปลอดภัยผ่านไวยากรณ์ของส่วนหัว โดยเฉพาะการนับ [N] เมื่อคุณขอให้โมเดลส่งออก TOON คุณกำลังขอให้โมเดลส่งไปยังโครงสร้างก่อนที่จะสร้างข้อมูล
พร้อมท์สำหรับรุ่น
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ให้ระบุรูปแบบส่วนหัวที่คุณคาดหวังและสั่งให้โมเดลเติมแถว
การขอให้แบบจำลองคำนวณ [N] ถือเป็นการบังคับกระบวนการ "สายโซ่แห่งความคิด" โดยที่แบบจำลองจะต้องวางแผนขนาดเอาต์พุต ข้อจำกัดที่ดูเหมือนเล็กน้อยนี้ช่วยลดโอกาสที่โมเดลจะขาดหายไปครึ่งหนึ่งของรายการได้อย่างมาก
งาน: ส่งคืนรายชื่อผู้ใช้ที่ใช้งานอยู่โดยมีบทบาท "ผู้ใช้"
รูปแบบ: ใช้ TOON ตั้งค่า [N] ในส่วนหัวให้ตรงกับจำนวนแถวที่คุณสร้าง
รูปแบบที่คาดหวัง:
ผู้ใช้[N]{id,ชื่อ,บทบาท,lastLogin}:
-
กำลังตรวจสอบความถูกต้องด้วยโหมดเข้มงวด
เมื่อคุณได้รับการตอบกลับจาก LLM คุณไม่ควรเชื่อถือเพียงอย่างเดียว นี่คือจุดที่โหมดเข้มงวดของไลบรารี TOON กลายเป็นมหาอำนาจสำหรับแอปพลิเคชันที่ใช้งานจริง
หากคุณใช้ไลบรารี TypeScript การถอดรหัสด้วยโหมดเข้มงวดจะตรวจสอบว่าแถวที่สร้างขึ้นตรงกับจำนวนส่วนหัว:
วิธีนี้ช่วยให้คุณตรวจจับเอาต์พุตโมเดล "แบบ Lazy" หรือการตัดทอนเครือข่ายโดยทางโปรแกรมได้ทันที แทนที่จะค้นหาข้อมูลดาวน์สตรีมที่ไม่ถูกต้องในแอปพลิเคชันของคุณ
นำเข้า { ถอดรหัส } จาก '@toon-format/toon';
ลอง {
// หากโมเดลระบุ [5] แต่มี 4 แถว แสดงว่ามีข้อผิดพลาดเกิดขึ้น
ข้อมูล const = ถอดรหัส (modelOutput, { เข้มงวด: จริง });
console.log('ได้รับข้อมูลที่ถูกต้อง:', ข้อมูล);
} จับ (ข้อผิดพลาด) {
console.error('ตรวจพบภาพหลอนหรือการตัดทอนแบบจำลอง:', error.message);
- -
การเพิ่มประสิทธิภาพขั้นสูง: เคล็ดลับแท็บ
หากคุณหมกมุ่นอยู่กับการเพิ่มประสิทธิภาพ (และในโลกของ LLM คุณก็ควรเป็นเช่นนั้น) คุณสามารถบีบประสิทธิภาพให้มากยิ่งขึ้นโดยการเลือกตัวคั่นอย่างชาญฉลาด
เครื่องหมายจุลภาคเป็นมาตรฐาน แต่แท็บ (\t) มักจะแสดงเป็นโทเค็นเดียวในคำศัพท์โทเค็นไนเซอร์หลายคำ นอกจากนี้ แท็บไม่ค่อยปรากฏภายในช่องข้อความธรรมชาติ ซึ่งช่วยลดความจำเป็นในการใช้อักขระหลีก (เช่น การล้อมสตริงในเครื่องหมายคำพูด)
คุณสามารถเข้ารหัสข้อมูลของคุณโดยใช้แท็บก่อนส่งไปยังโมเดล:
เพียงอย่าลืมแจ้งโมเดลในข้อความแจ้ง: "ข้อมูลถูกแยกด้วยแท็บ TOON" สิ่งนี้จะสร้างการแสดงที่มีขนาดกะทัดรัดมากซึ่งเป็นเรื่องง่ายอย่างเหลือเชื่อสำหรับโมเดลในการแยกวิเคราะห์และสร้าง
const toonPrompt = เข้ารหัส (ข้อมูล { ตัวคั่น: '\t' });
-
ตัวอย่างขั้นตอนการทำงานที่สมบูรณ์
มาดูสถานการณ์ในโลกแห่งความเป็นจริง: การกรองบันทึกของระบบ คุณต้องการส่งบันทึกดิบไปยังโมเดลและรับรายการข้อผิดพลาดที่มีโครงสร้างกลับมา
แจ้ง:
โมเดลเอาท์พุต:
บันทึกของระบบในรูปแบบ TOON (คั่นด้วยแท็บ):
เหตุการณ์ [4] {id, ระดับ, ข้อความ, การประทับเวลา}:
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, ระดับ, ข้อความ, การประทับเวลา}:
1,ข้อผิดพลาด,การเชื่อมต่อหมดเวลา,2025-01-15T10:00:00Z
4,ข้อผิดพลาด,ข้อผิดพลาดของฐานข้อมูล,2025-01-15T10:15:00Z
-
โมเดลกรองรายการอย่างถูกต้อง และที่สำคัญได้อัปเดตส่วนหัวเป็น เหตุการณ์[2] ด้วยการถอดรหัสการตอบสนองนี้ คุณจะได้รับอาร์เรย์ที่ปลอดภัยและสะอาดพร้อมสำหรับตรรกะแอปพลิเคชันของคุณ
สรุป
TOON เชื่อมช่องว่างระหว่างความสามารถในการอ่านของมนุษย์และประสิทธิภาพของเครื่องจักร โดยเคารพข้อจำกัดด้านต้นทุนของ LLM ในขณะเดียวกันก็จัดเตรียมโครงสร้างที่จำเป็นสำหรับการพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ
- ทำให้มันเล็ก: ใช้ 2-5 แถวในตัวอย่างของคุณ โมเดลจะมีลักษณะทั่วไป
- ชัดเจน: กำหนดส่วนหัวให้ชัดเจนเพื่อให้โมเดลทราบสคีมา
- ตรวจสอบอย่างเคร่งครัด: ใช้ข้อมูลเมตาของรูปแบบเพื่อตรวจจับข้อผิดพลาดในการสร้าง
การย้ายออกจาก JSON เพื่อรับเพย์โหลดที่รวดเร็ว คุณไม่เพียงแต่ประหยัดโทเค็นเท่านั้น แต่ยังกำลังสร้างไปป์ไลน์ AI ที่เชื่อถือได้มากขึ้นอีกด้วย