𝗜 𝗧𝗿𝗶𝗲𝗱 𝗧𝗼 𝗔𝘀𝘀𝗶𝗴𝗻 𝗧𝗮𝘀𝗸𝘀 𝘁𝗼 𝗮𝗻 𝗔𝗜
ผมพยายามสร้าง dispatcher เพื่อส่งต่องานไปยัง AI agent ต่างๆ
Forge จัดการเรื่องโค้ด Xiao Ke จัดการเรื่องการสนทนา ผมคิดว่าตรรกะมันง่ายมาก แค่อ่านงาน จับคู่ความสามารถ แล้วก็ส่งงานไป
ผมหยุดทำกลางคัน
ผมตระหนักได้ว่าผมไม่รู้วิธีจับคู่พวกมัน ผมไม่สามารถนิยามได้ว่าจริงๆ แล้ว Forge ทำอะไรได้บ้าง
ผมคิดว่าผมรู้คำตอบ ผมคิดว่า Forge สามารถเขียนโค้ดและรันการทดสอบได้ แต่พอผมพยายามจะเขียน specification ผมกลับล้มเหลว
ผมไม่มีข้อมูลเกี่ยวกับ:
- ขนาดของ codebase ที่มันจัดการได้
- จำนวนงานที่มันรันได้พร้อมกัน
- ระยะเวลาที่ใช้สำหรับปัญหาที่ซับซ้อน
- วิธีที่มันรายงานข้อผิดพลาด
ผมใช้คำอย่างเช่น "ประมาณว่า" และ "ผมคิดว่า"
งานวิจัยที่ชื่อ AgentSpec อธิบายปัญหานี้ไว้ หากคุณต้องการให้ scheduler ทำงานได้ คุณต้องมี typed specification สำหรับ agent ทุกตัว คุณต้องนิยาม:
- รูปแบบ Input
- รูปแบบ Output
- Preconditions
- ขีดจำกัดที่ทราบ
หากไม่มี spec ตัว scheduler ก็เป็นแค่การเดาสุ่ม
การเดาสุ่มนั้นอันตรายเพราะคุณไม่รู้ตัวว่ากำลังทำอยู่ คุณคิดว่าคุณกำลังจับคู่กับงาน แต่จริงๆ แล้วคุณกำลังคาดเดา (projecting) คุณเห็นความสำเร็จจากสัปดาห์ที่แล้ว แล้วก็ทึกทักเอาเองว่า agent จะทำสำเร็จอีกครั้ง
เรื่องนี้เกิดขึ้นกับเพื่อนร่วมงานที่เป็นมนุษย์ด้วยเช่นกัน คุณมอบหมายงานให้ใครบางคนเพราะเขาเคยทำสิ่งที่คล้ายกันมาก่อน บางครั้งคุณก็คิดถูก แต่บางครั้งคุณก็แค่ซ่อนปัญหาที่จะเกิดขึ้นในอนาคตเอาไว้
ส่วนที่ยากที่สุดไม่ใช่การขาดความรู้ แต่คือการคิดว่าคุณรู้ทั้งที่จริงๆ แล้วคุณไม่รู้
ผมยังตระหนักอีกว่า spec นั้นเป็นสิ่งที่คงที่ (static) แต่งานนั้นเป็นสิ่งที่เปลี่ยนแปลงตลอดเวลา (dynamic) spec จะบอกคุณว่า agent ทำอะไรได้บ้าง แต่มันไม่ได้บอกว่าตอนนี้ agent กำลังยุ่งอยู่หรือคิวงานเต็มแล้วหรือยัง
ผมกำลังสร้าง mental model ไม่ใช่ specification ผมคอยอัปเดตความประทับใจของผมหลังจากจบงานแต่ละชิ้น ผมเก็บสะสมเศษเสี้ยวของข้อมูลแทนที่จะสร้างโครงสร้างขึ้นมา
ความประทับใจคือเศษเสี้ยว แต่ spec คือโครงสร้าง
ลองทำแบบฝึกหัดนี้ดู: เลือกคนหรือเครื่องมือที่คุณใช้ทุกวัน เขียน capability spec สำหรับพวกเขา อย่าเขียนคำชม แต่ให้เขียนเอกสารจริงๆ:
- ภายใต้เงื่อนไขใดที่พวกเขาจะมีประสิทธิภาพมากที่สุด?
- Input แบบไหนที่ทำให้เกิดข้อผิดพลาด?
- งานประเภทไหนที่คุณไม่ควรให้พวกเขาทำเลย?
การเขียนจะเผยให้เห็นช่องว่างของคุณ คุณจะพบว่าสิ่งที่คิดว่า "ชัดเจนอยู่แล้ว" แท้จริงแล้วคือจุดที่ว่างเปล่า
จุดที่ว่างเปล่านั้นคือจุดที่ความผิดพลาดครั้งต่อไปจะเกิดขึ้น จงหาพวกมันให้เจอตอนนี้ ก่อนที่บางอย่างจะพังลง
แหล่งที่มา: https://dev.to/icophy/i-tried-to-assign-tasks-to-an-ai-turns-out-i-didnt-know-what-it-could-do
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi
ผมลองมอบหมายงานให้ AI ปรากฏว่าผมไม่รู้เลยว่ามันทำอะไรได้บ้าง
เมื่อผมเริ่มใช้ LLM (Large Language Models) ใหม่ๆ ผมคิดว่ามันเป็นเพียงแค่แชทบอทที่ดูล้ำสมัย ผมคิดว่ามันเหมาะสำหรับเขียนอีเมล สรุปข้อความ หรืออาจจะช่วยตอบคำถามเกี่ยวกับการเขียนโค้ดพื้นฐานได้บ้าง
ผมคิดผิด
เมื่อผมเริ่มทดสอบขีดจำกัดของสิ่งที่ผมคิดว่าเป็นไปได้ ผมก็ตระหนักว่า LLM ไม่ใช่แค่แชทบอท แต่มันคือ "เครื่องยนต์แห่งการใช้เหตุผล" (Reasoning engines)
พวกมันสามารถเขียนโค้ด วิเคราะห์ สร้างสรรค์ และใช้เหตุผลได้
นี่คือบางสิ่งที่ทำให้ผมทึ่งมาก:
1. การเขียนโค้ด (Coding)
ผมไม่ได้หมายถึงแค่การให้มันเขียนฟังก์ชันง่ายๆ แต่ผมหมายถึง:
- การทำ Refactoring: ผมสามารถส่งโค้ดที่ทำงานได้แต่เขียนมาไม่ดีให้ AI แล้วสั่งว่า "ช่วยปรับปรุงโค้ดนี้ให้สะอาดขึ้นและเป็นไปตามหลักการ Clean Code หน่อย" และผลลัพธ์ที่ได้ก็น่าทึ่งมาก
- การเขียน Unit Tests: การเขียนเทสต์เป็นงานที่น่าเบื่อ แต่ AI สามารถวิเคราะห์โค้ดของผมและสร้างชุดการทดสอบที่ครอบคลุมได้อย่างรวดเร็ว
- การอธิบายโค้ด: เมื่อผมเจอโค้ดที่ซับซ้อนและไม่มีคำอธิบาย ผมสามารถโยนมันให้ AI แล้วถามว่า "โค้ดส่วนนี้ทำงานอย่างไร?" มันช่วยให้ผมเข้าใจระบบได้เร็วขึ้นอย่างมาก
2. การเขียนและงานสร้างสรรค์ (Writing & Creativity)
AI ทำได้มากกว่าแค่การแก้ไวยากรณ์:
- การปรับเปลี่ยนโทนเสียง (Tone Shifting): ผมสามารถเขียนร่างแรกที่ดูเป็นกันเอง แล้วสั่งให้ AI "เปลี่ยนข้อความนี้ให้ดูเป็นทางการสำหรับส่งให้ลูกค้า"
- การสรุปเนื้อหา: ผมสามารถให้บทความยาวๆ แล้วสั่งให้มัน "สรุปประเด็นสำคัญเป็นข้อๆ" หรือ "สรุปในรูปแบบที่เด็ก 5 ขวบเข้าใจได้"
3. การใช้เหตุผลและการแก้ปัญหา (Reasoning & Problem Solving)
นี่คือส่วนที่ทรงพลังที่สุด:
- การระดมสมอง (Brainstorming): ผมใช้ AI เป็นคู่คิดในการหาไอเดียใหม่ๆ เช่น "ช่วยเสนอแนวทางแก้ปัญหาเรื่องการขยายระบบ (Scalability) สำหรับแอปพลิเคชันที่มีผู้ใช้เพิ่มขึ้นอย่างรวดเร็ว"
- การวิเคราะห์ตรรกะ: ผมสามารถให้โจทย์ปัญหาที่ซับซ้อนและให้ AI ช่วยแยกแยะขั้นตอนการคิดเพื่อหาคำตอบ
พลังของ Prompt Engineering
ผมได้เรียนรู้ว่าความแตกต่างระหว่างคำตอบที่ "งั้นๆ" กับคำตอบที่ "ยอดเยี่ยม" คือวิธีการที่เราสื่อสารกับมัน
การใช้เทคนิคอย่าง Few-shot prompting (การให้ตัวอย่าง)