ให้ Constraints ที่ชัดเจน
การบอก Claude ว่า 'ห้ามทำอะไร' สำคัญพอๆ กับบอกว่า 'ให้ทำอะไร' constraints ที่ชัดเจนช่วยให้ได้โค้ดที่เข้ากับโปรเจกต์
เมื่อเรียนจบบทนี้ คุณจะ…
- อธิบายความสำคัญของข้อจำกัด (Constraints) ได้
- จำแนกประเภทของข้อจำกัดได้
- นำข้อจำกัดไปใช้สั่งงาน AI ได้อย่างมีประสิทธิภาพ

ทำไมต้องบอก Claude ว่า 'ห้ามทำอะไร'?
ลองจินตนาการว่าคุณกำลังขอให้เชฟฝีมือดีทำอาหารจานพิเศษให้ แต่คุณลืมบอกไปว่า 'ห้ามใส่มะเขือเทศนะ เพราะฉันแพ้' ผลลัพธ์ที่ได้อาจจะอร่อย แต่ก็กินไม่ได้อยู่ดีใช่ไหมครับ? เช่นเดียวกันกับ Claude ครับ ถึงแม้เขาจะเก่งและฉลาดมากในการเขียนโค้ด แต่ถ้าเราไม่บอก 'ข้อจำกัด' หรือ 'สิ่งที่ห้ามทำ' ให้ชัดเจน เขาอาจจะสร้างโค้ดที่ทำงานได้ดี แต่กลับไม่ตรงกับความต้องการเฉพาะเจาะจงของโปรเจกต์เราได้ครับ
การบอก 'ห้ามทำอะไร' (Constraints) จึงสำคัญพอๆ กับการบอก 'ให้ทำอะไร' เลยครับ มันช่วยให้ Claude เข้าใจขอบเขตการทำงานได้ชัดเจนขึ้น ทำให้ผลลัพธ์ที่ได้ตรงใจเราและเข้ากับโปรเจกต์ของเราได้แบบไร้รอยต่อ เหมือนเราได้อาหารที่ทั้งอร่อยและปลอดภัยสำหรับเรานั่นแหละครับ
รู้จักประเภทของข้อจำกัด (Constraints) ที่เราใช้ได้
ข้อจำกัดที่เราสามารถบอก Claude ได้นั้นมีหลายประเภท เหมือนกับการกำหนดกฎเกณฑ์ในสถานการณ์ต่างๆ ในชีวิตประจำวัน ลองมาดูกันว่ามีอะไรบ้าง:
1. ข้อจำกัดทางเทคนิค (Technical Constraints): อันนี้คือการบอกว่าให้ใช้เทคโนโลยีหรือวิธีการเขียนโค้ดแบบไหน เช่น 'ใช้ TypeScript เท่านั้น ห้ามใช้ JavaScript ธรรมดา' หรือ 'ห้ามใช้ `any` ใน TypeScript เด็ดขาด' เหมือนกับการบอกช่างไม้ว่า 'ให้ใช้เลื่อยมือเท่านั้น ห้ามใช้เลื่อยไฟฟ้า'
2. ข้อจำกัดขอบเขตงาน (Scope Constraints): คือการกำหนดว่า Claude สามารถเข้าไปแก้ไขส่วนไหนได้บ้าง หรือห้ามแตะส่วนไหนเลย เช่น 'แก้เฉพาะไฟล์ index.ts เท่านั้น ห้ามแตะไฟล์อื่นในโปรเจกต์' หรือ 'ห้ามเพิ่มฟังก์ชันใหม่ แค่ปรับปรุงฟังก์ชันเดิม' เหมือนกับการบอกช่างว่า 'ซ่อมแค่ตรงนี้พอนะ อย่าไปยุ่งกับส่วนอื่นของบ้าน'
3. ข้อจำกัดด้านสไตล์และโครงสร้าง (Style & Structure Constraints): เป็นการบอกให้ Claude เขียนโค้ดตามรูปแบบที่เรามีอยู่แล้ว หรือห้ามเพิ่มอะไรที่ไม่จำเป็น เช่น 'เขียนโค้ดตามรูปแบบ (code style) ที่มีอยู่เดิม' หรือ 'ห้ามเพิ่มไลบรารี (library) หรือ dependency ใหม่' เหมือนกับการบอกให้แต่งตัวให้เข้ากับธีมงานปาร์ตี้
4. ข้อจำกัดด้านความปลอดภัย (Security Constraints): อันนี้สำคัญมากๆ ครับ เป็นการป้องกันไม่ให้ Claude สร้างโค้ดที่อาจก่อให้เกิดปัญหาด้านความปลอดภัย เช่น 'ห้าม hardcode รหัสผ่านหรือข้อมูลสำคัญลงในโค้ดโดยตรง' หรือ 'ห้ามลบข้อมูลสำคัญออกจากฐานข้อมูล' เหมือนกับการบอกว่า 'ห้ามเปิดเผยข้อมูลส่วนตัวของลูกค้าเด็ดขาด'
ใส่ข้อจำกัดใน Prompt ของเรายังไง?
เมื่อเราเข้าใจแล้วว่าข้อจำกัดมีกี่ประเภท ทีนี้มาดูกันว่าเราจะบอก Claude ได้ยังไงใน Prompt ของเราครับ หลักการง่ายๆ คือ ให้ใส่ข้อจำกัดเหล่านี้ไว้ท้ายๆ ของ Prompt เสมอ โดยระบุให้ชัดเจนและเป็นข้อๆ ครับ
การทำแบบนี้จะช่วยให้ Claude ประมวลผลคำสั่งหลักของเราก่อน แล้วค่อยนำข้อจำกัดมาพิจารณาตอนสร้างโค้ด ทำให้ผลลัพธ์ที่ได้ทั้งตรงตามความต้องการและอยู่ในกรอบที่เรากำหนดไว้ครับ
- 1. เริ่มต้นด้วยคำสั่งหลักที่เราอยากให้ Claude ทำ เช่น 'ช่วยปรับปรุงฟังก์ชันนี้ให้ทำงานเร็วขึ้นหน่อย'
- 2. ตามด้วยประโยคที่บอกถึงข้อจำกัด เช่น 'โดยมีข้อจำกัดดังนี้:' หรือ 'แต่ต้องทำตามกฎเหล่านี้:'
- 3. ระบุข้อจำกัดแต่ละข้อให้ชัดเจนและเป็นข้อๆ เช่น 'ห้ามเปลี่ยนชื่อหรือจำนวนพารามิเตอร์ของฟังก์ชัน (function signature)', 'ห้ามติดตั้งหรือเพิ่มไลบรารี (library) ใหม่', 'โค้ดที่ได้ต้องยังคงผ่านการทดสอบ (test) เดิมทั้งหมด'
ตัวอย่าง: ลองใช้ Constraints กับสถานการณ์จริง
สมมติว่าคุณมีฟังก์ชันหนึ่งที่ทำงานช้า และต้องการให้ Claude ช่วยปรับปรุงให้เร็วขึ้น แต่มีข้อจำกัดหลายอย่างที่ต้องรักษาไว้ เพื่อไม่ให้กระทบกับส่วนอื่นๆ ของระบบ นี่คือตัวอย่าง Prompt ที่คุณสามารถใช้ได้ครับ
ช่วยปรับปรุงฟังก์ชัน calculateTotalAmount(items: Item[]): number นี้ให้ทำงานเร็วขึ้น โดยมีข้อจำกัดดังนี้:
- ห้ามเปลี่ยนชื่อฟังก์ชัน หรือจำนวนและชนิดของพารามิเตอร์ (function signature) เด็ดขาด
- ห้ามเพิ่มไลบรารี (library) หรือ dependency ใหม่เข้ามาในโปรเจกต์
- โค้ดที่ปรับปรุงแล้วต้องยังคงผ่านการทดสอบ (test) เดิมทั้งหมด
- ต้องใช้ TypeScript เท่านั้น และห้ามใช้ `any`
ในตัวอย่างนี้ เราได้บอกทั้ง 'สิ่งที่ต้องการ' (ปรับปรุงฟังก์ชันให้เร็วขึ้น) และ 'สิ่งที่ห้ามทำ' (ห้ามเปลี่ยน signature, ห้ามเพิ่ม library, ต้องผ่าน test, ใช้ TypeScript เท่านั้น) ทำให้ Claude มีข้อมูลที่ครบถ้วนและสามารถสร้างโค้ดที่เหมาะสมที่สุดให้เราได้ครับ
เคล็ดลับ: ข้อจำกัดที่ใช้บ่อย เก็บไว้ที่ไหนดี?
บางครั้ง เราอาจจะมีข้อจำกัดบางอย่างที่ต้องใช้บ่อยๆ กับทุกๆ งาน หรือทุกๆ ไฟล์ในโปรเจกต์ เช่น 'ห้ามใช้ `any` ใน TypeScript' หรือ 'ห้ามเพิ่ม `console.log` ในโค้ดจริง' การพิมพ์ข้อจำกัดเหล่านี้ซ้ำๆ ทุกครั้งใน Prompt อาจจะเสียเวลาและทำให้เราลืมได้
Claude มีวิธีที่ฉลาดในการจัดการกับข้อจำกัดเหล่านี้ครับ นั่นคือการใช้ไฟล์ CLAUDE.md! คุณสามารถสร้างไฟล์นี้ไว้ในโปรเจกต์ของคุณ และใส่ข้อจำกัดที่ต้องการให้ Claude จำไว้เสมอในส่วนที่ชื่อว่า NEVER ครับ เหมือนกับการเขียนกฎประจำบ้านที่ทุกคนต้องจำและทำตามนั่นเอง
- 1. สร้างไฟล์ชื่อ
CLAUDE.mdในโฟลเดอร์หลักของโปรเจกต์ของคุณ (ถ้ายังไม่มี) - 2. ในไฟล์
CLAUDE.mdให้สร้างส่วนหัวข้อNEVERโดยใช้## NEVER - 3. ภายใต้หัวข้อ
NEVERให้ใส่ข้อจำกัดที่คุณอยากให้ Claude *ห้ามทำ* เสมอในโปรเจกต์นี้ เช่น ``` ## NEVER - ห้ามใช้ `any` ใน TypeScript เด็ดขาด - ห้ามเพิ่ม `console.log` ในโค้ดจริง - ห้ามแก้ไขไฟล์package.json``` - 4. เมื่อคุณเรียกใช้ Claude ในโปรเจกต์นี้ Claude จะอ่านไฟล์
CLAUDE.mdโดยอัตโนมัติ และนำข้อจำกัดในส่วนNEVERไปพิจารณาในการสร้างโค้ดทุกครั้ง โดยที่คุณไม่ต้องพิมพ์ซ้ำใน Prompt เลยครับ
CLAUDE.md ช่วยประหยัดเวลาและทำให้โค้ดของเรามีมาตรฐานเดียวกันทั้งโปรเจกต์- บอก 'ห้ามทำอะไร' ด้วย
- มี constraints แบบเทคนิค/ขอบเขต/สไตล์/security
- constraints ประจำใส่ใน CLAUDE.md