97 คะแนน โดย baeba 2025-06-05 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

1. บทนำ: พรอมป์ต์เป็นตัวกำหนดประสิทธิภาพการพัฒนาซอฟต์แวร์

  • ประสิทธิภาพของผู้ช่วยเขียนโค้ดด้วย AI ขึ้นอยู่กับคุณภาพของพรอมป์ต์ คำขอที่ชัดเจนจะให้โค้ดที่ละเอียดแม่นยำ ส่วนคำถามที่คลุมเครือจะให้ผลลัพธ์ที่ใช้งานไม่ได้
  • วิธีเขียนพรอมป์ต์ได้กลายเป็นทักษะจำเป็นสำหรับนักพัฒนาแล้ว และมันก็เหมือนกับการฝึกคู่หูในการพัฒนาให้ทำงานร่วมกันได้ดี
  • บทความนี้จะแสดงให้เห็นผ่านตัวอย่างใช้งานจริงและการเปรียบเทียบว่า “คำถามที่ดี” สร้าง “โค้ดที่ดี” ได้อย่างไร

2. 7 หลักการของพรอมป์ต์ที่มีประสิทธิภาพ

ให้บริบท
  • AI ไม่รู้ฉากหลังของโปรเจ็กต์ของผู้ใช้ จึงควรระบุภาษา เฟรมเวิร์ก ไลบรารี ข้อความ error และเป้าหมายให้ชัดเจน
  • ตัวอย่าง: ใส่ฉากหลังทางเทคนิคเช่น “เกิด TypeError ระหว่าง fetch user ในสภาพแวดล้อม Node.js + Express + Mongoose”
ทำเป้าหมายให้ชัดเจน
  • “โค้ดใช้ไม่ได้” ไม่ได้ช่วยอะไร ควรถามให้แม่นยำ เช่น “ผลลัพธ์ที่คาดหวังคือ ○○ แต่ผลจริงเป็น △△ ทำไมถึงเป็นแบบนั้น?”
แยกงานซับซ้อนออกเป็นส่วนย่อย
  • การขอเป็นขั้นตอนจะมีประสิทธิภาพมากกว่าการถามรวดเดียวทั้งฟีเจอร์ เช่น คอมโพเนนต์ > การจัดการสถานะ > การเชื่อมต่อ API
ใส่ตัวอย่างอินพุต/เอาต์พุต
  • เมื่อแสดงตัวอย่างผลลัพธ์ที่ต้องการ AI จะเข้าใจเจตนาได้ดีขึ้น (e.g. [3,1,4][1,3,4])
กำหนดบทบาท
  • การกำหนดบทบาท เช่น “ช่วยรีวิวโค้ดเหมือนเป็นนักพัฒนา React ระดับซีเนียร์” จะช่วยเพิ่มความลึกและคุณภาพของคำตอบ
ปรับปรุงแบบโต้ตอบและทำซ้ำ
  • คำตอบแรกไม่จำเป็นต้องสมบูรณ์แบบ หากให้ฟีดแบ็ก AI จะต่อยอดจากบริบทเดิมและค่อย ๆ ให้ผลลัพธ์ที่แม่นขึ้น
รักษาความสม่ำเสมอของโค้ด
  • ถ้าตัวโค้ดมีความสม่ำเสมอทั้งชื่อฟังก์ชัน รูปแบบ และคอมเมนต์ AI ก็จะรักษาแนวทางนั้นไว้ ทำให้คุณภาพดีขึ้น

3. กลยุทธ์การเขียนพรอมป์ต์สำหรับการดีบัก

ระบุ error และเปรียบเทียบกับพฤติกรรมที่คาดหวัง
  • หากให้ทั้งข้อความ error อาการของปัญหา ผลลัพธ์ที่คาดหวัง และค่าป้อนเข้า AI จะวิเคราะห์ได้อย่างแม่นยำ
ขอให้ไล่ตรวจทีละบรรทัด
  • คำขออย่าง “ช่วยไล่ทีละขั้นว่าค่าตัวแปรนี้เริ่มผิดปกติจากตรงไหน” มีประสิทธิภาพกับบั๊กลอจิกที่ซับซ้อน
ให้โค้ดสำหรับการจำลองปัญหาแบบขั้นต่ำ
  • หากให้เฉพาะโค้ดส่วนสำคัญที่ทำให้เกิดปัญหาแทนการส่งทั้งโปรเจ็กต์ AI จะวิเคราะห์สาเหตุได้แม่นยำกว่า
ถามต่ออย่างชัดเจน
  • แทนที่จะถามว่า “ทำไมถึงได้ผลลัพธ์แบบนี้?” การถามตรง ๆ เช่น “เงื่อนไขส่วนไหนผิดในจุดนี้?” จะดีกว่า
ตัวอย่างเปรียบเทียบ: คำถามแย่ vs. คำถามดี
  • หากพูดแค่ว่า “โค้ดใช้ไม่ได้” ก็จะได้เพียงคำตอบเชิงคาดเดา แต่ถ้าให้ทั้งข้อความ error และโค้ด ก็จะได้วิธีแก้ที่แม่นยำ

4. กลยุทธ์การเขียนพรอมป์ต์สำหรับการรีแฟกเตอร์และการเพิ่มประสิทธิภาพ

ทำเป้าหมายของการรีแฟกเตอร์ให้ชัดเจน
  • แทนที่จะพูดแค่ว่า “ช่วยรีแฟกเตอร์ให้หน่อย” ควรระบุเป้าหมายการปรับปรุงให้ชัด เช่น “เพิ่มความอ่านง่าย ปรับปรุงประสิทธิภาพ อัปเดต API ให้ทันสมัย”
  • ถ้าเป้าหมายคลุมเครือ AI อาจพยายามปรับแบบสุ่มหรือเปลี่ยนไปในทิศทางที่ไม่ต้องการ
ให้บริบทของภาษา/สภาพแวดล้อม
  • หากบอกข้อจำกัดทางเทคนิคหรือสไตล์ของโปรเจ็กต์ เช่น “แปลง React class component → function component”, “สภาพแวดล้อม Node.js 14” ก็จะได้การแปลงที่เหมาะสม
ขอคำอธิบายประกอบด้วย
  • หากขอทั้งโค้ดที่รีแฟกเตอร์แล้วและคำอธิบายว่า “ทำไมถึงเปลี่ยนแบบนี้” ก็จะได้ทั้งประโยชน์ด้านการตรวจคุณภาพโค้ดและการเรียนรู้
ยกระดับด้วยคำขอตามบทบาท
  • คำขออย่าง “ช่วยรีแฟกเตอร์เหมือนเป็นนักพัฒนา TypeScript ระดับซีเนียร์” จะช่วยดึงข้อเสนอการปรับปรุงที่ลึกและทันสมัยยิ่งขึ้น

5. กลยุทธ์การเขียนพรอมป์ต์สำหรับการพัฒนาฟีเจอร์ใหม่

แบ่งฟีเจอร์ออกเป็นขั้นตอนแล้วค่อยขอ
  • แม้เป็นฟีเจอร์ซับซ้อน หากแบ่งเป็น “ออกแบบโครงสร้างฟีเจอร์ → สร้าง UI → เชื่อมลอจิก” ก็จะได้ผลลัพธ์ที่เสถียรกว่า
ให้สไตล์โค้ดเดิมของโปรเจ็กต์
  • หากยกตัวอย่างคอมโพเนนต์ที่คล้ายกันหรือ convention ภายใน ก็จะได้โค้ดที่สอดคล้องกับโปรเจ็กต์ เช่น “สร้าง ProductList โดยอ้างอิงจาก UserList”
สื่อเจตนาด้วยคอมเมนต์/TODO
  • ใน IDE หากใส่คอมเมนต์ภาษาธรรมชาติเช่น // TODO: 요청 유효성 검증 구현 Copilot จะสร้างบล็อกโค้ดที่ตรงตามเจตนาให้อัตโนมัติ
ยกตัวอย่างอินพุต/เอาต์พุต
  • เมื่อระบุค่าป้อนเข้าและผลลัพธ์ที่คาดหวัง AI จะพยายามทำให้ตรงตามนั้นและเพิ่มความแม่นยำได้
ปรับปรุงซ้ำด้วยฟีดแบ็ก
  • แม้ผลลัพธ์แรกจะยังไม่ตรงความคาดหวัง หากให้ฟีดแบ็กเช่น “กรุณาใช้ map แทน filter” AI ก็จะปรับตามได้ทันทีและพัฒนาต่อไป

6. 7 รูปแบบของพรอมป์ต์ที่มักล้มเหลว (Anti-patterns)

คำขอที่คลุมเครือ
  • คำถามอย่าง “ทำไมโค้ดนี้ใช้ไม่ได้?” จะดึงได้เพียงคำตอบกว้าง ๆ ที่ไม่ค่อยมีความหมาย ควรใส่ข้อความ error โค้ด และผลลัพธ์ที่คาดหวังด้วย
ขอมากเกินไปในครั้งเดียว
  • คำขอผสมหลายอย่าง เช่น “สร้างทั้งแอป + เพิ่มระบบยืนยันตัวตน + ใส่สคริปต์ deploy” มักทำให้ตกหล่นหรือสับสน จึงควรแยกเป็นขั้นตอน
ไม่มีคำถาม
  • ถ้าโยนโค้ดมาอย่างเดียวโดยไม่มีคำขอ AI มักสรุปเนื้อหาหรือให้ผลลัพธ์ที่ไม่เกี่ยวข้อง จึงควรระบุจุดประสงค์ของคำถามให้ชัด
เกณฑ์ความสำเร็จไม่ชัดเจน
  • “ทำให้เร็วขึ้น”, “เปลี่ยนให้ดีขึ้น” เป็นเกณฑ์ที่คลุมเครือ เช่น ควรระบุให้วัดได้อย่าง “ปรับให้เป็นความซับซ้อนเวลา O(n)”
เมินคำถามของ AI
  • หาก AI ถามว่า “นี่เป็นแบบ functional หรือ class?” ก็ควรตอบเพื่อให้ได้ผลลัพธ์ที่เหมาะสมที่สุด
ขาดความสม่ำเสมอ
  • หากสไตล์ ไวยากรณ์ และคำศัพท์เปลี่ยนไปเรื่อย ๆ AI ก็จะสับสนเช่นกัน การรักษาสไตล์เดียวกันจะช่วยยกระดับคุณภาพคำตอบ
การอ้างอิงกำกวมอย่าง “โค้ดด้านบน”
  • ยิ่งบทสนทนายาวขึ้น “โค้ดด้านบน” ก็ยิ่งไม่ชัดเจน ควรแสดงโค้ดอีกครั้งหรือระบุชื่อฟังก์ชันอย่างชัดเจนให้มากที่สุด

7. บทสรุป: การทำงานร่วมกับ AI คือบทสนทนาแบบวนซ้ำ

  • Prompt engineering ได้กลายเป็นทักษะการสื่อสารหลักของนักพัฒนาไปแล้ว พื้นฐานสำคัญคือการให้บริบท การตั้งเป้าหมายให้ชัด และการปรับปรุงซ้ำ
  • AI ไม่ใช่แค่ผู้ช่วยเขียนโค้ด แต่เป็นทั้งผู้ร่วมงานและคู่หูในการเรียนรู้ หากใช้อย่างถูกวิธีจะช่วยเพิ่มทั้งประสิทธิภาพและทักษะการพัฒนา
  • หากใช้กลยุทธ์หลากหลาย เช่น การทดลอง การให้ฟีดแบ็ก และการกำหนดบทบาท ก็สามารถใช้งาน AI ได้เหมือนเป็นสมาชิกทีมจริง ๆ
  • เป้าหมายสุดท้ายคือการสร้างโค้ดได้เร็วและแม่นยำขึ้น แต่ขณะเดียวกันก็ควรใช้เป็นเครื่องมือเรียนรู้เพื่อก้าวไปเป็นนักพัฒนาที่ดียิ่งขึ้นด้วย

ตารางเปรียบเทียบพรอมป์ต์ที่ดี vs แย่

ประเภท การดีบัก การรีแฟกเตอร์ การพัฒนาฟีเจอร์
พรอมป์ต์ที่ดี จุดที่เกิด TypeError อยู่ตรงนี้ ค่าที่คาดหวังคือ ○○ แต่กลับได้ NaN กรุณาช่วยหาสาเหตุ ช่วยลบความซ้ำซ้อนของฟังก์ชันนี้และเพิ่มประสิทธิภาพ แยกส่วน fetch ออกเป็น helper และคงข้อความ error เดิมไว้ ช่วยสร้างคอมโพเนนต์ ProductList ที่มีช่องค้นหา รับ JSON จาก /api/products มาฟิลเตอร์รายการ และรวมสถานะ error กับ loading ด้วย
พรอมป์ต์ที่แย่ ทำไมฟังก์ชันของผมใช้ไม่ได้? ช่วยรีแฟกเตอร์ให้หน่อย ช่วยทำฟังก์ชันค้นหาให้หน่อย

5 ความคิดเห็น

 
bootno2316 2025-06-08

ก็ไม่ต่างจากวิธีรับมือกับโปรแกรมเมอร์ที่เป็นมนุษย์เลยนะครับ

 
xguru 2025-06-08

คู่มือเพลย์บุ๊ก Prompt Engineering สำหรับโปรแกรมเมอร์

โปรดดูเวอร์ชันที่บอตสรุป GN+ สรุปไว้ประกอบด้วย คอมเมนต์สรุปของ Hacker News ก็น่าอ่านเช่นกัน

 
baeba 2025-06-09

คุณโพสต์ก่อนแล้วนี่เอง..
ขอบคุณครับ

 
bichi 2025-06-05

บอกแล้วบอกอีกว่าอย่าทำแบบนี้ แต่พวกนี้ก็ยังมีแบบหนึ่งในสิบที่ทำอยู่ดี -_-

 
mango 2025-06-05

มนุษย์จะไปรู้อะไร!