การถาม vs การมอบหมายงานให้ AI Agent
นักพัฒนาส่วนใหญ่ใช้ AI เหมือนเป็น Stack Overflow เวอร์ชันที่ฉลาดขึ้น
คุณพิมพ์คำถาม คุณได้รับคำตอบ จากนั้นคุณก็ลงมือทำงานด้วยตัวเอง วิธีนี้มันช้า
มีวิธีที่เร็วกว่านั้น คุณต้องเลิกแค่ "ถาม" และเริ่ม "มอบหมายงาน"
เมื่อคุณถาม AI: "ฉันจะเขียนเทสต์สำหรับ auth module ได้อย่างไร?" คุณจะได้คำอธิบาย แต่คุณก็ยังต้องเขียนเทสต์เอง และยังต้องลงมือทำงานเองอยู่ดี
เมื่อคุณมอบหมายงานให้ AI agent: "เขียนเทสต์สำหรับ /src/auth.py ครอบคลุมกรณี login, logout และ invalid token จากนั้นสั่งรันเทสต์ ถ้ามันไม่ผ่าน ให้แก้โค้ดจนกว่าจะผ่าน แล้วบอกฉันด้วยว่าคุณเปลี่ยนอะไรไปบ้าง"
Agent จะเปิดไฟล์ของคุณ เขียนเทสต์ รันเทสต์ อ่านข้อผิดพลาด แก้ไขโค้ด และนำชุดเทสต์ที่ใช้งานได้จริงมาให้คุณ
คุณแค่ตรวจสอบผลลัพธ์ คุณไม่ได้เป็นคนลงมือทำงานเอง
การมอบหมายงานที่มีประสิทธิภาพต้องประกอบด้วย 4 ส่วน:
- เป้าหมาย (Goal): Agent ควรสร้างผลลัพธ์อะไรออกมา?
- ขอบเขต (Scope): ไฟล์หรือส่วนไหนที่ Agent ควรเข้าไปจัดการ?
- เงื่อนไขความสำเร็จ (Success condition): เราจะรู้ได้อย่างไรว่างานเสร็จสิ้นอย่างถูกต้อง?
- การรายงานผล (Report back): มันเปลี่ยนอะไรไปบ้างและเพราะอะไร?
ตัวอย่างการใช้งานจริง:
การดีบั๊ก (Debugging): "หาสาเหตุที่แท้จริงของข้อผิดพลาดนี้และ stack trace แก้ไขมัน และอธิบายจุดที่พัง"
การรีแฟกเตอร์ (Refactoring): "Refactor ไฟล์นี้ โดยใช้ระดับการซ้อน (nesting levels) ไม่เกินสองชั้น ห้ามมีฟังก์ชันที่ยาวเกิน 30 บรรทัด และอัปเดตทุกจุดที่มีการเรียกใช้งาน (call site)"
การย้ายฐานข้อมูล (Database migration): "เขียนสคริปต์ migration แบบ idempotent สำหรับการเปลี่ยน schema นี้ แล้วลองรันกับฐานข้อมูลในเครื่องเพื่อยืนยันว่าสำเร็จ"
การรีวิว (Reviewing): "อ่าน PR diff นี้ หาจุดที่อาจจะพังเมื่อใช้งานจริง (production) และเขียนเทสต์ในส่วนที่ฉันลืมเขียน"
Agent ทำงานเร็ว แต่บางครั้งก็ผิดพลาดได้ ให้ใช้การตรวจสอบ 3 ข้อนี้เพื่อยืนยันงานของพวกมัน:
มันแก้ปัญหาได้จริงไหม? ให้รันโค้ด อย่าแค่อ่านมันเฉยๆ ให้รันเทสต์ด้วย เพราะการรันโค้ดเป็นวิธีเดียวที่จะพบข้อผิดพลาดในกรณีที่เป็น edge case
มันเข้ากับ codebase ของคุณไหม? Agent ไม่รู้ธรรมเนียมปฏิบัติ (conventions) ของทีมคุณ ให้ตรวจสอบผลลัพธ์ว่ามีรูปแบบที่ผิดปกติหรือมีการใช้ library ที่ทีมคุณหลีกเลี่ยงหรือไม่
มันเปลี่ยนสิ่งที่อยู่นอกเหนือขอบเขตงานหรือไม่? ตรวจสอบว่า Agent เข้าไปแตะไฟล์ไหนบ้าง ให้อ่าน diff เหมือนกำลังรีวิว PR จากนักพัฒนา junior เพื่อให้แน่ใจว่ามันไม่ได้ทำส่วนอื่นพังในขณะที่กำลังช่วยทำงาน
หน้าที่ของคุณจะเปลี่ยนจากการลงมือทำงาน เป็นการกำหนดเป้าหมายและตรวจสอบผลลัพธ์ คุณทำหน้าที่ใช้ดุลยพินิจ ส่วน Agent ทำหน้าที่สร้างความรวดเร็ว
Source: https://dev.to/omerberatsezer/asking-vs-delegating-agents-43ii
Optional learning community: https://t.me/GyaanSetuAi
