EP8 ให้ระบบเลือกเครื่องมือเอง และวัดว่าเลือกถูก ตอนจบซีรีส์
มีเครื่องมือ skill agent รวมกันหลายร้อย จะรู้ได้ยังไงว่างานนี้ควรใช้ตัวไหน วิธีสร้างตัวจับคู่งานกับเครื่องมือ ค้นด้วยความหมาย ให้ LLM จัดอันดับ และวัดผลด้วยชุดทดสอบ
- เครื่องมือเยอะเกินกว่าคนหรือ AI จะจำได้ ต้องมีตัวจับคู่งานกับเครื่องมือ
- ค้นด้วยความหมายก่อนเพราะถูกและเร็ว แล้วค่อยให้ LLM จัดอันดับเฉพาะตัวท้าย ๆ
- ไม่มีชุดวัด ก็ไม่รู้ว่าปรับแล้วดีขึ้นหรือแย่ลง สร้างชุดวัดจากงานจริงก่อนปรับอะไร
เจ็ดตอนที่ผ่านมา เราเพิ่มของให้ AI มาเรื่อย ๆ ทั้งคู่มือ skill subagent workflow โมเดลหลายรุ่น MCP และ AI เจ้าอื่น พอของเยอะถึงจุดหนึ่ง ปัญหาใหม่ก็มาเอง คือ งานนี้ควรใช้ตัวไหน ตอนจบนี้จะสร้างตัวจับคู่ที่เรียกว่า router และที่สำคัญกว่า คือวิธีวัดว่ามันเลือกถูก
ปัญหา: ของเยอะจนหาไม่เจอ
ระบบที่เราใช้เองมีของรวมกัน 211 รายการ แบ่งเป็น skill 166 ตัว เครื่องมือ MCP 25 ตัว agent 17 ตัว และแหล่งค้นเอกสาร 3 แหล่ง ไม่มีใครจำได้หมดว่าอะไรเหมาะกับงานไหน AI ก็เช่นกัน ถ้ายัดรายการทั้งหมดให้อ่านทุกครั้ง ทั้งเปลืองและเลือกพลาดง่าย
บริษัทใหญ่แก้ด้วยพนักงานต้อนรับที่รู้ว่าเรื่องไหนต้องส่งไปแผนกไหน
หลักการ: ให้ระบบ จับคู่งานกับเครื่องมือ แต่ต้องมี ชุดวัด ว่ามันเลือกถูกจริง
router ทำงานยังไง
- ทำทะเบียน ทุกรายการมีชื่อ ประเภท และคำอธิบายว่าใช้เมื่อไหร่ (คำอธิบายที่ดีสำคัญเหมือนใน EP2)
- แปลงคำอธิบายเป็นตัวเลข ด้วย embedding ข้อความที่ความหมายใกล้กันจะได้ตัวเลขใกล้กัน เก็บไว้ในฐานข้อมูลค้นหา
- พองานเข้ามา แปลงงานเป็นตัวเลขแบบเดียวกัน แล้วหารายการที่ใกล้ที่สุดสิบตัว ขั้นนี้ทำในเครื่อง เร็วและแทบไม่มีค่าใช้จ่าย
- ให้ LLM จัดอันดับ เฉพาะสิบตัวนั้น พร้อมเขียนเหตุผล ขั้นนี้แพงกว่า จึงทำกับรายการที่คัดมาแล้วเท่านั้น
- ตรวจความมั่นใจ ถ้าตัวที่ได้ห่างจากงานมาก ให้บอกตรง ๆ ว่าไม่มีเครื่องมือที่ใช่ ดีกว่าเดาแล้วเลือกผิด
ขั้น 3 กับ 4 คือการใช้โมเดลให้เหมาะงานแบบ EP5 ของถูกคัดก่อน ของแพงตัดสินทีหลัง
ชุดวัด: สร้างก่อนปรับ
router จะดีแค่ไหน ดูจากความรู้สึกไม่ได้ ต้องมีชุดงานทดสอบพร้อมคำตอบที่ยอมรับได้
{ "task": "รีวิวโค้ดใน pull request หาบั๊กและจุดที่ควรปรับ",
"expect": ["code-reviewer", "code-review"] }
แล้วนับว่าคำตอบที่ถูกอยู่ในอันดับต้น ๆ กี่เคส
def hit_at(k, cases, route):
hits = sum(any(name in route(c["task"])[:k] for name in c["expect"]) for c in cases)
return hits / len(cases)
ทุกครั้งที่แก้คำอธิบาย เปลี่ยนโมเดล embedding หรือปรับวิธีจัดอันดับ ให้รันชุดวัดนี้ ตัวเลขขึ้นคือดีขึ้นจริง ตัวเลขลงคือย้อนกลับ
ผลจริง
router ที่เราใช้เองมีชุดวัด 30 งาน เขียนจากงานที่สั่งจริง รันเฉพาะขั้นค้นด้วยความหมาย ไม่มี LLM ช่วย ได้ผลแบบนี้
| วัด | ผล |
|---|---|
| ถูกในอันดับ 1 (hit@1) | 22/30 (73%) |
| ถูกใน 3 อันดับแรก (hit@3) | 28/30 (93%) |
| ถูกใน 5 อันดับแรก (hit@5) | 29/30 (97%) |
แปลว่าแค่ขั้นค้นที่ถูกและเร็ว ก็คัดตัวที่ใช่มาอยู่ในห้าตัวแรกได้เกือบทุกงาน ส่วนการเลือกตัวที่หนึ่งให้แม่นขึ้น คือหน้าที่ของขั้น LLM จัดอันดับ
เคสที่พลาดก็มีบทเรียน งาน “เขียนเอกสาร Word รายงานมืออาชีพ” ควรได้ skill สำหรับไฟล์ Word แต่ไม่ติดห้าอันดับแรก ทั้งที่คำอธิบายของ skill นั้นมีคำว่า Word อยู่แล้ว ชุดวัดทำให้เราเห็นเคสแบบนี้ ถ้าไม่มี ก็จะไม่รู้เลยว่ามันพลาด
หาของใหม่เอง แต่คนเป็นคนรับเข้า
router ตัวนี้ยังมีงานรายวัน ค้นหา skill ที่เพิ่งอัปเดตบน GitHub ให้ LLM ประเมินจาก คุณภาพและความใหม่ ไม่ใช่จำนวนดาว แล้วเสนอเข้าคิว ไม่ได้รับเข้าทะเบียนเอง ต้องมีคนรีวิวก่อน เหตุผลเดียวกับ EP6 ของที่ AI จะหยิบไปใช้ ต้องผ่านคนตัดสินว่าเชื่อถือได้
ลองเองใน 10 นาที
- เขียนรายการเครื่องมือหรือ skill ที่มีอยู่ 10 ตัว พร้อมคำอธิบายว่าใช้เมื่อไหร่
- เขียนงานทดสอบ 10 งานจากสิ่งที่สั่งจริงเมื่อสัปดาห์ก่อน พร้อมคำตอบที่ถูก
- ให้ Claude อ่านรายการแล้วเลือกให้ทีละงาน นับว่าถูกกี่ข้อ นั่นคือชุดวัดแรกของคุณ ก่อนจะสร้าง router จริงด้วยซ้ำ
ตรงไหนที่คนต้องทำ
คนเป็นคน เขียนชุดวัดจากงานจริง และ อนุมัติของใหม่เข้าทะเบียน สองอย่างนี้คือสิ่งที่ทำให้ระบบที่มี AI หลายตัวยังเชื่อถือได้ แม้มันจะโตขึ้นทุกวัน
สรุปทั้งซีรีส์
| EP | หลักการ |
|---|---|
| 1 | สิ่งที่อยากให้ AI รู้ ต้องอยู่ในไฟล์ |
| 2 | แยกความรู้ ขั้นตอน และกฎบังคับ |
| 3 | งานที่อ่านเยอะแต่ผลสั้น ส่งให้ผู้ช่วยที่มีห้องของตัวเอง |
| 4 | ขั้นตายตัวให้สคริปต์ ขั้นที่ต้องคิดให้ AI ด่านสุดท้ายเป็นคน |
| 5 | ตัวเก่งกับงานที่ต้องคิด ตัวเล็กกับงานที่อ่านเยอะ |
| 6 | เขียนเครื่องมือครั้งเดียวด้วย MCP ใช้ได้กับ AI หลายตัว |
| 7 | ทุกการเรียกโมเดลผ่านชั้นกลางชั้นเดียว ไม่ผูกกับเจ้าเดียว |
| 8 | ให้ระบบเลือกเครื่องมือ และวัดว่าเลือกถูก |
ทั้งแปดข้อมีเรื่องเดียวกันซ่อนอยู่ AI ทำงานได้มากขึ้นเรื่อย ๆ แต่ระบบจะดีได้ ต้องมีคนออกแบบว่าใครทำอะไร ใครตรวจ และใครตัดสิน
คำถามที่พบบ่อย
ต้องมีเครื่องมือเยอะแค่ไหนถึงควรทำ router
ถ้ายังจำได้หมดว่าอะไรอยู่ไหน ยังไม่ต้องทำ เริ่มคุ้มเมื่อมีหลายสิบชิ้นขึ้นไป หรือเมื่อเริ่มเจอว่า AI หยิบเครื่องมือผิดบ่อย
hit@3 คืออะไร
สัดส่วนของงานทดสอบที่คำตอบที่ถูกต้องอยู่ในสามอันดับแรกที่ router เสนอ ถ้า hit@3 เท่ากับ 93% แปลว่า 93 ใน 100 งาน เครื่องมือที่ใช่อยู่ในสามตัวเลือกแรก
คำสั่งและค่าตั้งในบทความทดสอบบนระบบตัวอย่าง ลองบนเครื่องทดสอบก่อนใช้กับระบบจริงเสมอ