ระบบเอเจนต์ย่อย

ระบบเอเจนต์ย่อย

ภาพรวม

เอเจนต์ย่อย (Subagent) คือกลไกการแยกย่อยและมอบหมายงานของพื้นที่ทำงาน Agent หลักสามารถแยกงานคู่ขนานที่ซับซ้อนออกเป็นงานย่อย สร้างเอเจนต์ย่อยเฉพาะทางเพื่อดำเนินการอย่างอิสระ และเมื่อเอเจนต์ย่อยทำงานเสร็จก็จะส่งผลลัพธ์กลับให้ Agent หลักดำเนินการต่อ

ระบบรองรับเอเจนต์ย่อย 3 ประเภท โดยมีความลึกในการซ้อนสูงสุด 3 ระดับ

เอเจนต์ย่อยทั้ง 3 ประเภท

ประเภท ชื่อเครื่องมือ วิธีสร้าง สถานการณ์ที่เหมาะสม ตำแหน่งดำเนินการ
สร้างอัตโนมัติ create_local_sub_agent Agent สร้างเองระหว่างการอนุมาน การแยกงานย่อยชั่วคราว โหนดในเครื่อง
ส่งงานแบบลงทะเบียนล่วงหน้า dispatch_sub_agent ผู้ใช้กำหนดค่าไว้ล่วงหน้า บทบาทเฉพาะทางที่ใช้งานซ้ำ โหนดในเครื่อง
ส่งงานข้ามโหนด dispatch_multi_node_agent Agent เลือกโหนดระยะไกล ต้องใช้ทรัพยากรหรือความสามารถระยะไกล โหนดระยะไกล

เอเจนต์ย่อยที่สร้างอัตโนมัติ (create_local_sub_agent)

เมื่อ Agent ประเมินระหว่างการอนุมานว่างานปัจจุบันจำเป็นต้องแยกย่อย Agent จะเรียกใช้เครื่องมือ create_local_sub_agent ด้วยตนเอง เพื่อสร้างเอเจนต์ย่อยชั่วคราว ผู้ใช้ยังสามารถสั่งให้ Agent สร้างเอเจนต์ย่อยผ่านพรอมต์ในบทสนทนาได้ เช่น:

"กรุณาสร้างเอเจนต์ย่อยหนึ่งตัวเพื่อรับผิดชอบการค้นหาข้อมูลที่เกี่ยวข้อง แล้วสร้างเอเจนต์ย่อยอีกตัวเพื่อเขียนเอกสาร"

พารามิเตอร์การสร้าง:

พารามิเตอร์ คำอธิบาย จำเป็น
task คำอธิบายงานของเอเจนต์ย่อย ใช่
systemPrompt การกำหนดตัวตน/บทบาทของเอเจนต์ย่อย ใช่
cwd ไดเรกทอรีการทำงาน (ค่าเริ่มต้นสืบทอดจากระดับบน) ไม่
maxSpawnDepth ความลึกในการซ้อน (1-3) ค่าเริ่มต้น 1 ไม่

ขั้นตอนการดำเนินการ:

  1. Agent หลักตัดสินใจสร้างเอเจนต์ย่อยและกำหนดงาน
  2. ระบบเริ่ม Agent Loop อิสระ (ค่าเริ่มต้นสูงสุด 50 รอบ)
  3. เอเจนต์ย่อยมีลูปเครื่องมืออิสระ กระบวนการดำเนินการมองเห็นได้ในหน้าต่างบทสนทนาของ Agent หลัก
  4. เมื่อเอเจนต์ย่อยทำงานเสร็จ จะส่งผลลัพธ์สุดท้ายกลับให้ Agent หลัก
  5. Agent หลักดำเนินงานต่อโดยอิงจากผลลัพธ์

เอเจนต์ย่อยแบบส่งงานลงทะเบียนล่วงหน้า (dispatch_sub_agent)

ผู้ใช้สามารถลงทะเบียนล่วงหน้าในการตั้งค่า APP เพื่อสร้างเอเจนต์ย่อยที่มีการกำหนดค่าเฉพาะ และ Agent จะเรียกใช้ผ่านเครื่องมือ dispatch_sub_agent เมื่อจำเป็น

คำอธิบายของเอเจนต์ย่อยที่ลงทะเบียนล่วงหน้าจะถูกแทรกอัตโนมัติเข้าสู่ระบบพรอมต์ของ Agent หลัก และเมื่อ LLM เห็นงานที่ตรงกัน ก็จะเลือกเอเจนต์ย่อยที่เหมาะสมโดยอัตโนมัติ

รายการการกำหนดค่า:

การกำหนดค่า คำอธิบาย
name ชื่อเอเจนต์ย่อย
description คำอธิบายความสามารถ (แทรกเข้าสู่ระบบพรอมต์ของ Agent หลัก)
systemPrompt การกำหนดตัวตน/บทบาท
tools รายการอนุญาตเครื่องมือ (หากละไว้จะสืบทอดทั้งหมด)
disallowedTools รายการห้ามเครื่องมือ
skills รายการ ID ทักษะที่ใช้ได้
mcpServers รายการชื่อเซิร์ฟเวอร์ MCP ที่ใช้ได้
model แทนที่โมเดลของระดับบน
maxTurns แทนที่จำนวนรอบสูงสุดเริ่มต้น
canSpawn สามารถสร้างเอเจนต์ย่อยระดับล่างได้หรือไม่
maxSpawnDepth ความลึกในการซ้อนสูงสุด

ดูรายละเอียดหน้าจอการจัดการได้ที่ การลงทะเบียนและการจัดการเอเจนต์ย่อย


การส่งงานข้ามโหนด (dispatch_multi_node_agent)

เมื่องานต้องใช้ทรัพยากรหรือความสามารถของอุปกรณ์ระยะไกล Agent สามารถส่งงานไปยังโหนดอื่นเพื่อดำเนินการผ่านเครื่องมือ dispatch_multi_node_agent

ขั้นตอนการทำงาน:

  1. Agent หลักดูรายการโหนดออนไลน์ (แทรกเข้าสู่ระบบพรอมต์)
  2. เลือกโหนดเป้าหมายตามการประกาศความสามารถของโหนด
  3. ส่ง node.invoke.request ผ่าน Gateway WebSocket
  4. โหนดระยะไกลเริ่ม Agent Loop อิสระเพื่อดำเนินงาน
  5. เมื่อเสร็จ จะส่งผลลัพธ์กลับผ่าน node.invoke.result

ตัวอย่างสถานการณ์:

  • เว็บฝั่งบนคอมพิวเตอร์ A เริ่มบทสนทนา
  • งานต้องเข้าถึงไฟล์ในเครื่องบนคอมพิวเตอร์ B
  • Agent ส่งงานย่อยการดำเนินการกับไฟล์ไปยังโหนด APP ของคอมพิวเตอร์ B ผ่าน Gateway
  • โหนด B ดำเนินการแล้วส่งผลลัพธ์กลับ และแสดงบทสนทนาต่อบนคอมพิวเตอร์ A

การควบคุมความลึกในการซ้อน

เอเจนต์ย่อยรองรับการสร้างแบบซ้อน โดยมีความลึกสูงสุด 3 ระดับ:

ความลึก 0: Agent หลัก (บทสนทนากับผู้ใช้) └── ความลึก 1: เอเจนต์ย่อย A └── ความลึก 2: เอเจนต์ย่อยของย่อย A-1 └── ความลึก 3: เอเจนต์ระดับลึกที่สุด (ไม่สามารถมอบหมายต่อได้)
                      
                      ความลึก 0: Agent หลัก (บทสนทนากับผู้ใช้)
  └── ความลึก 1: เอเจนต์ย่อย A
        └── ความลึก 2: เอเจนต์ย่อยของย่อย A-1
              └── ความลึก 3: เอเจนต์ระดับลึกที่สุด (ไม่สามารถมอบหมายต่อได้)

                    
บล็อกโค้ดนี้ในหน้าต่างลอย
พารามิเตอร์ ค่า คำอธิบาย
DEFAULT_MAX_SPAWN_DEPTH 1 ค่าเริ่มต้น: เอเจนต์ย่อยไม่สามารถสร้างระดับล่างได้
MAX_ALLOWED_SPAWN_DEPTH 3 ขีดจำกัดสูงสุดแบบตายตัว
SUBAGENT_DEFAULT_MAX_TURNS 50 จำนวนรอบสูงสุดเริ่มต้นของเอเจนต์ย่อย (สูงกว่า Agent หลักที่ 25)

ยิ่งความลึกมาก ความเป็นอิสระยิ่งสูง แต่การใช้ Token และเวลาดำเนินการก็เพิ่มขึ้นตามไปด้วย

กลไกการสืบทอดเครื่องมือ

โหมด คำอธิบาย
สืบทอดโดยค่าเริ่มต้น เอเจนต์ย่อยสืบทอดเครื่องมือที่ใช้ได้ทั้งหมดของ Agent หลัก
รายการอนุญาต พารามิเตอร์ tools ระบุรายการเครื่องมือที่อนุญาตให้ใช้
รายการห้าม พารามิเตอร์ disallowedTools ยกเว้นเครื่องมือเฉพาะ
สืบทอดทักษะ สามารถสืบทอดหรือแทนที่ทักษะและเซิร์ฟเวอร์ MCP ของระดับบน
แทนที่โมเดล เอเจนต์ย่อยสามารถใช้โมเดล LLM ที่ต่างจากระดับบน

การแสดงผล UI

เอเจนต์ย่อยจะมีเครื่องหมายพิเศษแสดงในหน้าต่างบทสนทนา Work:

การแสดงการเรียกใช้เครื่องมือของเอเจนต์ย่อย-CN

องค์ประกอบการแสดงผล คำอธิบาย
SubagentToolRow แถวการเรียกใช้เครื่องมือเฉพาะของเอเจนต์ย่อย พร้อมสีระบุพิเศษ (สีมรกต emerald)
การส่งผ่านกิจกรรม กระบวนการเรียกใช้เครื่องมือของเอเจนต์ย่อยแสดงแบบเรียลไทม์ในหน้าต่างบทสนทนาของ Agent หลัก
การแสดงผลลัพธ์ เมื่อเอเจนต์ย่อยทำงานเสร็จ ผลลัพธ์สุดท้ายจะแสดงเป็นเอาต์พุตของเครื่องมือ

ผู้ใช้สามารถเห็นได้อย่างชัดเจนว่าการดำเนินการใดทำโดย Agent หลัก และการดำเนินการใดทำโดยเอเจนต์ย่อย



วิธีสร้างเอเจนต์ย่อยผ่านบทสนทนา

คุณสามารถสั่งให้ Agent สร้างเอเจนต์ย่อยด้วยภาษาธรรมชาติในบทสนทนา ต่อไปนี้คือตัวอย่างพรอมต์บางส่วน:

พรอมต์ ผลลัพธ์
"สร้างเอเจนต์ย่อยหนึ่งตัวเพื่อค้นหาและจัดระเบียบข้อมูลที่เกี่ยวข้อง" Agent สร้างเอเจนต์ย่อยที่เน้นการค้นหา
"แบ่งงานนี้ให้เอเจนต์ย่อยสองตัวทำ: ตัวหนึ่งรับผิดชอบโค้ด อีกตัวรับผิดชอบเอกสาร" Agent สร้างเอเจนต์ย่อยสองตัวที่ต่างเชี่ยวชาญกัน
"ช่วยสร้างเอเจนต์ย่อยความลึก 2 เพื่อจัดการงานที่ซับซ้อนนี้" Agent สร้างเอเจนต์ย่อยที่สามารถมอบหมายต่อได้อีก
"ใช้โหนดระยะไกลเพื่อดำเนินงานประมวลผลไฟล์นี้" Agent ใช้ dispatch_multi_node_agent

การอ่านหน้าจอระหว่างการทำงานของเอเจนต์ย่อย

กระบวนการทำงานของเอเจนต์ย่อย-CN

องค์ประกอบ UI ความหมาย
แถวเครื่องมือที่มีเครื่องหมายสีมรกต นี่คือการเรียกใช้เครื่องมือที่เอเจนต์ย่อยกำลังดำเนินการ
การเรียกใช้เครื่องมือ "create_local_sub_agent" Agent หลักกำลังสร้างเอเจนต์ย่อย
การเรียกใช้เครื่องมือภายในเอเจนต์ย่อย เครื่องมือที่เอเจนต์ย่อยตัดสินใจเรียกใช้เอง แสดงแบบเรียลไทม์
ผลลัพธ์สุดท้าย เอาต์พุตสรุปหลังจากเอเจนต์ย่อยทำงานเสร็จ

ผลกระทบต่อค่าใช้จ่าย

การใช้ token ของเอเจนต์ย่อยจะถูกคำนวณแยกต่างหาก:

สถานการณ์ ประมาณการการใช้ token
เฉพาะ Agent หลัก (ไม่มีเอเจนต์ย่อย) 1x
Agent หลัก + เอเจนต์ย่อย 1 ตัว 1.5x ~ 2.5x
Agent หลัก + เอเจนต์ย่อย 2 ตัว 2x ~ 4x
ซ้อน 3 ระดับ (หลัก + ลูก + หลาน + เหลน) 3x ~ 6x

คำแนะนำ: เอเจนต์ย่อยเหมาะกับงานซับซ้อนที่จำเป็นต้องแยกย่อยจริง ๆ สำหรับงานง่าย ๆ ให้ Agent หลักจัดการโดยตรงได้เลย ไม่จำเป็นต้องสร้างเอเจนต์ย่อย

เมื่อใดควรใช้ / ไม่ควรใช้เอเจนต์ย่อย

เหมาะกับการใช้เอเจนต์ย่อย ไม่จำเป็นต้องใช้เอเจนต์ย่อย
งานแบ่งออกเป็นส่วนย่อยที่เป็นอิสระโดยธรรมชาติ (เช่น: ค้นหาข้อมูล + เขียนเอกสาร) งานเชิงเส้นเดี่ยว ๆ (เช่น: อ่านไฟล์หนึ่งไฟล์แล้วสรุป)
ต้องการมุมมองเชี่ยวชาญที่ต่างกัน (เช่น: รีวิวโค้ด + ตรวจสอบความปลอดภัย) คำถาม-คำตอบง่าย ๆ
ต้องการทรัพยากรของโหนดระยะไกล (เช่น: ไฟล์บนเซิร์ฟเวอร์ระยะไกล) การดำเนินการกับไฟล์ในเครื่อง
ปริมาณงานมาก สามารถทำคู่ขนานเพื่อเร่งความเร็วได้ งานง่ายและรวดเร็ว

ไม่แนะนำให้กำหนดบทบาทที่ต่างกันให้ SubAgent เพื่อแบ่งงานทำร่วมกัน เพราะในยุค AI การทำงานร่วมกันกลับลดประสิทธิภาพและคุณภาพลง เอเจนต์ย่อยเหมาะกับสถานการณ์ที่ดำเนินงานคู่ขนานเพื่อประหยัดเวลาและเพิ่มประสิทธิภาพมากกว่า

เอกสารที่เกี่ยวข้อง