วิธีใช้ 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 ในขณะเดียวกันก็จัดเตรียมโครงสร้างที่จำเป็นสำหรับการพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ

  1. ทำให้มันเล็ก: ใช้ 2-5 แถวในตัวอย่างของคุณ โมเดลจะมีลักษณะทั่วไป
  1. ชัดเจน: กำหนดส่วนหัวให้ชัดเจนเพื่อให้โมเดลทราบสคีมา
  1. ตรวจสอบอย่างเคร่งครัด: ใช้ข้อมูลเมตาของรูปแบบเพื่อตรวจจับข้อผิดพลาดในการสร้าง

การย้ายออกจาก JSON เพื่อรับเพย์โหลดที่รวดเร็ว คุณไม่เพียงแต่ประหยัดโทเค็นเท่านั้น แต่ยังกำลังสร้างไปป์ไลน์ AI ที่เชื่อถือได้มากขึ้นอีกด้วย