code ว่าที่นิยมจัดบรรทัด Indentation โดยใช้อยู่ 2 แบบหลักคือ 4 Space และ Tab ซึ่งจริง ๆ แล้วถ้าคนทั่วไปแทบจะไม่ดูเลยว่า code ที่มีนั้นมันจะใช้ 4 Space หรือ Tab ในการจัดบรรทัดแต่ว่า AI เห็นมีผลกับประหยัดการใช้ Token ด้วยเหมือนกัน
โดยสรุปสั้น ๆ คือ การใช้ Tab มักจะประหยัด Token ได้มากกว่าหรือเท่ากัน เมื่อเทียบกับ 4 Space เสมอครับ (ไม่มีกรณีที่ Tab เปลืองกว่า)
นี่คือรายละเอียดเชิงลึกครับ:
1. ทำไม Tab ถึงประหยัดกว่า ?
AI ไม่ได้มองตัวอักษรทีละตัว แต่มองเป็นกลุ่มคำหรือสัญลักษณ์ที่เรียกว่า Token
- Tab (
\t): โดยปกติ AI จะนับเป็น 1 Token เสมอ ไม่ว่าจะแสดงผลกว้างแค่ไหน - Space 4 ตัว ( ):
- กรณีดีที่สุด: AI บางรุ่น ( เช่น GPT-4 หรือ Gemini รุ่นใหม่ ๆ ) ถูกเทรนมากับ Code เยอะ ๆ มันจะฉลาดพอที่จะรวบรวม Space 4 ตัว ให้กลายเป็น 1 Token ได้ ( ในกรณีนี้คือ เท่ากัน )
- กรณีทั่วไป: ถ้า Indent ลึก ๆ หรือมี Space เกินมานิดหน่อย ( เช่น 5-6 spaces ) AI อาจจะมอง Space กลุ่มนั้นแยกเป็น 2-3 Tokens ทันที
- ระดับ Byte: Tab กินพื้นที่แค่ 1 byte แต่ 4 Space กิน 4 bytes แม้ Token จะเท่ากัน แต่ขนาด Input จริง ( payload ) ของ Tab ก็เล็กกว่าครับ
2. ตัวอย่างการนับ ( โดยประมาณ )
สมมติคุณมี Code ที่ Indent ลึก 3 ชั้น ( 12 spaces ):
- แบบ Tab:
\t\t\t= 3 Tokens ( ค่อนข้างแน่นอน ) - แบบ Space: ( 12 spaces )
- Model ที่เก่ง Code: อาจมองเป็น 1 Token ใหญ่ หรือ 3 Tokens ( ของ 4-space ) -> เท่ากัน
- Model ทั่วไป: อาจมองเป็น 4-6 Tokens ( Space ทีละคู่ หรือทีละกลุ่ม ) -> เปลืองกว่า
3. คำแนะนำสำหรับการใช้งานจริง
- ถ้าเน้นประหยัดสุด ๆ ( เช่น ส่ง Code ยาวมาก ๆ เข้า AI ): การแปลง Space เป็น Tab ก่อนส่ง ( Minify ) จะช่วยลด Token ได้แน่นอน และลดความเสี่ยงที่ AI จะนับ Space ผิดพลาด
- ในการทำงานปกติ: ผลลัพธ์ที่ประหยัดได้อาจจะไม่คุ้มค่ากับการเปลี่ยน Code Style ของทีมครับ ให้ยึดตาม Linter/Format ที่ทีมใช้เป็นหลัก ( เช่น ถ้าทีมใช้ PHP PSR-12 ก็ต้องใช้ 4 Spaces อยู่ดี )
สรุป: ถ้าคุณกำลัง Copy Code ก้อนใหญ่ ๆ ไปแปะให้ AI ช่วยดู และกลัว Token เต็ม การ Find & Replace จาก 4 Spaces -> Tab ก่อนส่ง เป็นเทคนิคที่ดีครับ
อ่านเพิ่มเติม