คุณไม่จำเป็นต้องมี Sub-Agents
คนส่วนใหญ่มักจะวาดสถาปัตยกรรมของเอเจนต์ (agent architectures) เหมือนกับแผนผังองค์กร
พวกเขาจะวาง Orchestrator ไว้ด้านบนสุด แล้วลากเส้นไปยัง Researcher, Coder และ Tester มันดูสะอาดตาและดูเป็นมืออาชีพ
แต่นี่คือความผิดพลาด
ในปี 1975 Fred Brooks เคยเขียนไว้ว่า การเพิ่มคนเข้าไปในโปรเจกต์ซอฟต์แวร์ที่ล่าช้าจะยิ่งทำให้มันล่าช้าลงไปอีก สาเหตุเป็นเพราะต้นทุนด้านการสื่อสารนั้นเพิ่มขึ้นเร็วกว่าเนื้องานที่ทำได้จริง
เมื่อคุณสร้างฝูงเอเจนต์ (swarm of agents) คุณกำลังทำความผิดพลาดแบบเดิมซ้ำอีกครั้ง
Orchestrator ต้องใช้เวลาทั้งหมดไปกับการจัดการงานย่อย (subtasks) ซึ่งสร้างภาระงานส่วนเกิน (overhead) มหาศาล คุณไม่ได้กำลังสร้างสถาปัตยกรรม แต่คุณกำลังสร้างระบบท่อระบายน้ำ (plumbing)
นี่คือเหตุผลที่ sub-agents ล้มเหลว:
- การสูญเสียบริบท (Context loss): Sub-agent ทำงานในหน้าต่างของตัวเอง มันไม่สามารถส่งกระบวนการคิด (reasoning) ทั้งหมดกลับไปยังตัวแม่ได้ มันส่งไปได้เพียงแค่บทสรุปเท่านั้น
- วิธีแก้ปัญหาที่สิ้นเปลือง: ผู้คนพยายามบังคับให้เอเจนต์เขียนข้อมูลลงในไฟล์หรือ git เพียงเพื่อให้ตัวแม่สามารถอ่านสิ่งที่เกิดขึ้นได้ คุณกำลังพยายามสร้าง shared memory ขึ้นมาใหม่ แต่กลับทำให้มันช้าลงกว่าเดิม
- การสิ้นเปลือง Token: คุณต้องจ่ายค่าส่งต่อบริบทผ่านทุกๆ ขอบเขต (boundary) การมี swarm ของเอเจนต์จำนวน N ตัว จะมีต้นทุน token เท่ากับ N+1
- การตัดสินใจที่ขัดแย้งกัน: เอเจนต์ที่ทำงานขนานกันมักจะตั้งสมมติฐานที่แตกต่างกัน หากเอเจนต์สองตัวสร้างสิ่งเดียวกัน พวกเขามักจะใช้สไตล์หรือตรรกะที่ต่างกัน
งานวิจัยแสดงให้เห็นว่า multi-agent frameworks มีอัตราความล้มเหลวระหว่าง 41% ถึง 87% ความล้มเหลวเหล่านี้เกิดขึ้นเพราะเอเจนต์สื่อสารกันไม่ตรงจุด (talk past each other) การใช้โมเดลที่ดีกว่าเดิมจะไม่ช่วยแก้ปัญหานี้ เพราะมันคือปัญหาด้านการประสานงาน (coordination) ไม่ใช่ปัญหาด้านโมเดล
แล้วคุณควรสร้างมันอย่างไร?
ให้ปฏิบัติตามกฎสองข้อนี้:
- หากงานเป็นอิสระต่อกัน ให้รันงานเหล่านั้นใน loop แยกกัน ใช้โปรแกรมสองตัวแยกกัน นี่คือการประมวลผลแบบขนาน (parallel processing) ไม่ใช่ระบบ multi-agent
- หากงานต้องการกระบวนการคิดที่เป็นเส้นตรงเส้นเดียว (single train of thought) ให้ใช้ loop เดียวเท่านั้น
การใช้ loop เดียวจะช่วยรักษาบริบททั้งหมดไว้ในที่เดียว สามารถแก้ไขตัวเองได้ง่าย และทิ้งประวัติการทำงานที่สะอาดตา แทนที่จะเป็นแชทกลุ่มที่วุ่นวาย
เลิกสร้าง meshes แล้วเริ่มสร้าง loops กันเถอะ
แหล่งที่มา: https://dev.to/tony__vi/you-dont-need-sub-agents-1eh7
ชุมชนแห่งการเรียนรู้ (ไม่บังคับ): https://t.me/GyaanSetuAi