เลิกโหลดทุกคำสั่งลงในทุกเซสชัน

คนส่วนใหญ่มุ่งเน้นไปที่การเขียน prompt ให้ดีขึ้น แต่พวกเขามักมองข้ามสิ่งที่เกิดขึ้นก่อนที่ prompt จะเริ่มทำงาน พวกเขาโหลดคำสั่งมากเกินไปเข้าไปใน context ของ assistant

สิ่งนี้ทำให้เกิดปัญหา 3 อย่าง:

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

ยิ่งคุณเพิ่มกฎมากเท่าไหร่ คุณก็ยิ่งทำให้ส่วนที่เกี่ยวข้องเจือจางลงเท่านั้น การมี context มากขึ้นไม่ได้หมายความว่าความสามารถจะมากขึ้นเสมอไป

ผมแก้ปัญหานี้โดยการเปลี่ยนจากไฟล์เดียวมาเป็นระบบโมดูล (modular system) ผมแบ่งคำสั่งออกเป็นโมดูลเฉพาะทาง:

instructions.md: จุดเริ่มต้นขนาดเล็กที่ต้องโหลดเสมอ • persona.md: บุคลิกภาพและโทนเสียง • structure.md: โครงสร้างระบบสำหรับงานด้านการนำทาง (navigation tasks) • workflows.md: กฎเฉพาะสำหรับการจบเซสชัน

ตอนนี้ ไฟล์หลักจะทำหน้าที่เป็น router มันจะเรียกโมดูลอื่นๆ เฉพาะเมื่อจำเป็นต้องใช้ในงานนั้นๆ เท่านั้น

ตัวอย่างเช่น:

ผลลัพธ์ที่ได้นั้นชัดเจนมาก ปริมาณ token พื้นฐาน (baseline token load) ของผมลดลงจาก 4,800 tokens เหลือเพียง 1,450 tokens ซึ่งเป็นการลดลงถึง 70%

เป้าหมายไม่ใช่การทำให้คำสั่งเล็กลง แต่เป้าหมายคือการแยก baseline load ออกจาก on-demand load

Baseline load คือสิ่งที่คุณต้องจ่ายทุกครั้ง คุณต้องรักษาให้มันมีขนาดเล็กที่สุด On-demand load คือสิ่งที่คุณจะโหลดเฉพาะเมื่อจำเป็นเท่านั้น ซึ่งส่วนนี้สามารถมีขนาดใหญ่และมีรายละเอียดมากได้

วิธีนี้มีข้อแลกเปลี่ยน (trade-offs) คุณจะได้ประสิทธิภาพเพิ่มขึ้น แต่ต้องแลกมาด้วยความซับซ้อนในการจัดการเส้นทาง (route) ของคำสั่ง คุณต้องมั่นใจว่า assistant สามารถเข้าถึงโมดูลต่างๆ ได้อย่างแม่นยำ

หากคำสั่งของคุณมีขนาดเล็ก อย่าทำแบบนี้ เพราะมันเป็นการเสียเวลาเปล่า แต่ถ้าชุดคำสั่งของคุณมีขนาดใหญ่และกำลังขยายตัวขึ้นเรื่อยๆ ให้เริ่มทำแบบนี้ทันที

เลิกบังคับให้ assistant ต้องแบกน้ำหนักที่ไม่จำเป็น และกำจัดคำสั่งที่ไม่เกี่ยวข้องออกไปเพื่อให้พื้นที่ทำงานสะอาดขึ้น

Source: https://dev.to/ben-witt/significantly-fewer-context-tokens-through-a-modular-instruction-architecture-2g70

Optional learning community: https://t.me/GyaanSetuAi