Contact
Line : comsiam
Contact
Line : comsiam

เมื่อโปรแกรมทำงานไม่ตรงที่คาด Claude ช่วยตรวจโค้ด เสนอจุดที่น่าสงสัย และแนะนำแนวทางแก้ได้ แต่การบอกเพียงว่า “โค้ดมีบั๊ก ช่วยแก้หน่อย” อาจทำให้ได้คำตอบที่เดาสาเหตุหรือแก้กว้างเกินไป ควรบอกอาการ ผลลัพธ์ที่ต้องการ และข้อจำกัดให้ชัด เพื่อให้ Claude วิเคราะห์เป็นขั้นตอน ComSiam แนะนำให้เริ่มจากขอให้ช่วยหาสาเหตุก่อน แล้วค่อยตัดสินใจแก้โค้ด
Claude สามารถช่วยอ่านโค้ดและพิจารณาว่าการทำงานส่วนใดอาจไม่ตรงกับเป้าหมาย เช่น เงื่อนไขผิด ลำดับการคำนวณไม่ถูกต้อง หรือไม่ได้จัดการข้อมูลบางรูปแบบ อย่างไรก็ตาม ข้อเสนอของ Claude เป็นเพียงแนวทางที่ต้องตรวจสอบกับโค้ดและผลลัพธ์จริง เพราะบั๊กเดียวกันอาจมีหลายสาเหตุ และโค้ดที่ส่งมาอาจไม่แสดงบริบททั้งหมด
ก่อนส่งโจทย์ ให้รวบรวมข้อมูลต่อไปนี้:
① เป้าหมายของโค้ด — โปรแกรมหรือฟังก์ชันนี้ควรทำอะไร
② ผลลัพธ์ที่คาดหวัง — เมื่อป้อนข้อมูลตัวอย่างแล้วควรได้อะไร
③ ผลลัพธ์ที่เกิดขึ้นจริง — อธิบายอาการที่พบ
④ โค้ดส่วนที่เกี่ยวข้อง — ส่งเฉพาะส่วนที่ทำให้เกิดปัญหา พร้อมส่วนที่เรียกใช้ถ้าจำเป็น
⑤ ข้อจำกัดในการแก้ — เช่น ให้เปลี่ยนเฉพาะฟังก์ชันนี้ หรือห้ามเพิ่มไลบรารี
ถ้าโปรแกรมมีหลายขั้นตอน ให้บอกด้วยว่าปัญหาเริ่มเกิดตรงไหน และเกิดทุกครั้งหรือเฉพาะบางข้อมูล
① ขอให้วิเคราะห์ก่อนแก้
ระบุว่าให้ Claude อธิบายสาเหตุที่เป็นไปได้ก่อน และยังไม่ต้องเขียนโค้ดใหม่ทันที วิธีนี้ช่วยให้คุณประเมินได้ว่า Claude เข้าใจอาการตรงกันหรือไม่
② ตรวจสมมติฐานกับโค้ด
ขอให้ Claude ชี้ว่าบรรทัดหรือเงื่อนไขใดสนับสนุนข้อสันนิษฐาน ถ้าคำตอบอาศัยข้อมูลที่ยังไม่ได้ให้ ให้ส่งข้อมูลเพิ่มแทนการให้แก้จากการคาดเดา
③ ขอการแก้แบบจำกัดขอบเขต
บอกให้แก้เฉพาะส่วนที่เกี่ยวข้อง รักษาพฤติกรรมเดิมของส่วนอื่น และอธิบายว่ามีการเปลี่ยนอะไรบ้าง
④ ทดสอบกรณีเดิมและกรณีเพิ่มเติม
ตรวจข้อมูลที่ทำให้เกิดบั๊กเดิม แล้วลองกรณีปกติ กรณีขอบ และข้อมูลที่ไม่ถูกต้อง
⑤ ตรวจโค้ดหลังแก้
อ่านการเปลี่ยนแปลงและตรวจว่ามีการเพิ่มเงื่อนไขหรือเปลี่ยนส่วนอื่นโดยไม่จำเป็นหรือไม่ ก่อนนำไปใช้จริง
Anthropic แนะนำให้ระบุคำสั่งและผลลัพธ์ที่ต้องการอย่างชัดเจน ซึ่งเป็นหลักสำคัญเมื่อขอให้ Claude วิเคราะห์หรือแก้ปัญหาจากโค้ด
สมมติฟังก์ชันนี้ควรหาค่าเฉลี่ยของตัวเลขในรายการ:
def average(numbers):
total = 0
for i in range(1, len(numbers)):
total += numbers[i]
return total / len(numbers)
เมื่อใช้ข้อมูล [10, 20, 30] ผลลัพธ์ที่คาดหวังคือ 20 แต่โค้ดอาจคำนวณได้ 16.67 เพราะลูปเริ่มที่ตำแหน่ง 1 ทำให้ข้ามตัวเลขตัวแรก
วิธีแก้ที่ตรงจุดคือรวมตัวเลขทั้งหมดในรายการ:
def average(numbers):
if not numbers:
return None
return sum(numbers) / len(numbers)
ตัวอย่างนี้ยังตรวจกรณีรายการว่างด้วย เพราะการหารด้วยจำนวนสมาชิกของรายการว่างจะทำให้เกิดปัญหา อย่างไรก็ตาม การคืนค่า None เป็นเพียงทางเลือกหนึ่ง ควรเลือกพฤติกรรมให้เหมาะกับโปรแกรม เช่น แสดงข้อความแจ้งเตือน หรือยกข้อผิดพลาดอย่างชัดเจน
ช่วยวิเคราะห์บั๊กในโค้ดด้านล่าง
เป้าหมาย:
[อธิบายว่าโค้ดควรทำอะไร]
ข้อมูลที่ใช้ทดสอบ:
[ระบุตัวอย่างข้อมูล]
ผลลัพธ์ที่คาดหวัง:
[ระบุผลที่ควรได้]
ผลลัพธ์ที่เกิดขึ้นจริง:
[ระบุอาการที่พบ]
ข้อจำกัด:
- วิเคราะห์สาเหตุที่เป็นไปได้ก่อน ยังไม่ต้องแก้โค้ด
- ชี้ส่วนของโค้ดที่เกี่ยวข้องกับแต่ละสาเหตุ
- หลังอธิบายสาเหตุแล้ว เสนอวิธีแก้ที่เปลี่ยนน้อยที่สุด
- อย่าเปลี่ยนพฤติกรรมของส่วนอื่น
- เสนอกรณีทดสอบหลังแก้ ทั้งกรณีปกติและกรณีขอบ
โค้ด:
[วางโค้ดที่นี่]
หากเห็นด้วยกับการวิเคราะห์แล้ว ค่อยขอให้ Claude แสดงโค้ดฉบับแก้ไขพร้อมสรุปความเปลี่ยนแปลง วิธีนี้ทำให้ตรวจแนวคิดก่อนนำโค้ดใหม่ไปใช้ได้ง่ายขึ้น
ถ้ายังแก้ไม่ได้ ให้ส่งผลทดสอบล่าสุดและโค้ดฉบับปัจจุบันกลับไป อย่าส่งเฉพาะโค้ดก่อนแก้ เพราะ Claude อาจไม่เห็นว่ามีการเปลี่ยนแปลงอะไรไปแล้ว
อย่าให้ Claude แก้โค้ดทั้งโปรเจกต์เมื่อปัญหาอยู่ในฟังก์ชันเล็ก ๆ และอย่านำคำตอบไปใช้ทันทีโดยไม่ทดสอบ โดยเฉพาะโค้ดที่เกี่ยวข้องกับการเข้าสู่ระบบ การชำระเงิน หรือข้อมูลส่วนบุคคล
ก่อนส่งโค้ดให้ Claude ควรลบรหัสผ่าน API Key และข้อมูลจริงของลูกค้าออก หากต้องการให้ตรวจการเชื่อมต่อหรือค่าตั้งระบบ ให้แทนค่าลับด้วยข้อความตัวอย่าง เช่น YOUR_API_KEY
ควรเริ่มจากการให้วิเคราะห์สาเหตุ โดยเฉพาะเมื่อยังไม่แน่ใจว่าบั๊กเกิดจากส่วนใด เมื่อเข้าใจสาเหตุและตรวจแล้วว่าตรงกับอาการ จึงค่อยขอวิธีแก้
ไม่จำเป็น ควรส่งส่วนที่เกี่ยวข้องกับปัญหาและบริบทที่จำเป็น หากส่งเฉพาะบรรทัดเดียวแล้ว Claude มองไม่เห็นตัวแปรหรือฟังก์ชันที่เกี่ยวข้อง ให้เพิ่มส่วนที่ขาด
ทดสอบกรณีเดิมและกรณีที่เคยทำงานได้ รวมถึงรันชุดทดสอบของโปรเจกต์ถ้ามี การแก้เพียงจุดเดียวช่วยจำกัดผลกระทบ แต่ไม่ได้รับประกันว่าส่วนอื่นจะไม่มีปัญหา จึงต้องตรวจผลหลังแก้
ให้ Claude ช่วยแก้บั๊กได้อย่างมีประสิทธิภาพโดยอธิบายเป้าหมาย ผลที่คาดหวัง และอาการจริง จากนั้นให้วิเคราะห์ก่อนแก้ กำหนดขอบเขตการเปลี่ยนโค้ด และทดสอบทั้งกรณีที่พบปัญหากับกรณีอื่น ๆ เสมอ ผู้อ่าน ComSiam สามารถใช้ Prompt ในบทความนี้เป็นจุดเริ่มต้น แล้วเติมรายละเอียดให้ตรงกับโปรเจกต์ของตน