LangChain Deep Agents v0.5 เปิดตัว Async Subagents สำหรับเวิร์กโฟลว์แบบไม่บล็อก
Tools
![]()
สวัสดีครับเพื่อนๆ! วันนี้มีข่าวดีจาก LangChain มาฝากกันอีกแล้วครับ สำหรับใครที่ทำงานกับ Deep Agents อยู่เป็นประจำ น่าจะถูกใจกับอัปเดตใหม่ล่าสุดในเวอร์ชัน v0.5 นี้มากๆ เพราะเค้าได้เปิดตัวฟีเจอร์เด็ดอย่าง Async Subagents ที่จะช่วยให้การทำงานของเอเจนต์เราลื่นไหล ไม่ติดขัด แถมยังฉลาดขึ้นกว่าเดิมเยอะเลย
การอัปเดตครั้งนี้ไม่ธรรมดานะครับ เพราะ LangChain เค้าได้ปล่อยเวอร์ชันย่อยใหม่ทั้ง deepagents และ deepagentsjs พร้อมนำเสนอ async (non-blocking) subagents และการรองรับระบบไฟล์แบบ multi-modal ที่หลากหลายขึ้นอีกด้วย ซึ่งทั้งหมดนี้จะเข้ามาช่วยให้เอเจนต์ของเราสามารถจัดการกับงานที่ซับซ้อนและใช้เวลานานได้มีประสิทธิภาพมากขึ้น ถ้าอยากรู้รายละเอียดเต็มๆ ลองดูที่ Deep Agents v0.5 Release Blog ได้เลยครับ
Async Subagents คืออะไร?
ลองจินตนาการว่าเอเจนต์หลักของเราเหมือนผู้จัดการโครงการที่ต้องสั่งงานให้ลูกทีม (subagents) ไปทำ ถ้าเป็นแบบเดิม (inline subagents) ผู้จัดการจะสั่งงานเสร็จแล้วก็ต้องนั่งรอจนกว่าลูกทีมจะทำงานนั้นเสร็จเรียบร้อยถึงจะสั่งงานต่อไปได้ หรือทำอย่างอื่นได้ ซึ่งถ้างานนั้นใช้เวลานานมากๆ ผู้จัดการก็จะถูกบล็อก ทำอะไรไม่ได้เลย
แต่พอมี Async Subagents เข้ามา โลกก็เปลี่ยนไป! แทนที่จะรอจนงานเสร็จ Async Subagents จะรับงานไปทำเบื้องหลังทันที แล้วรีบส่ง Task ID กลับมาให้ผู้จัดการ ผู้จัดการก็สามารถไปทำอย่างอื่นต่อได้ ไม่ว่าจะคุยกับผู้ใช้งาน หรือมอบหมายงานอื่นๆ ให้ลูกทีมคนอื่นทำพร้อมๆ กันได้หลายงานเลยทีเดียว งานที่ได้รับมอบหมายก็จะไปรันอยู่บนเซิร์ฟเวอร์ระยะไกลแบบอิสระ ไม่มาบล็อกการทำงานหลักของเราเลยครับ
ข้อดีอีกอย่างคือ Async Subagents เหล่านี้เป็นแบบ stateful ด้วยนะ หมายความว่าเค้าจะรักษาสถานะการทำงานของตัวเองไว้ตลอดการโต้ตอบ ทำให้ผู้จัดการสามารถส่งคำสั่งเพิ่มเติม หรือปรับแก้แนวทางกลางคันได้อีกด้วย เจ๋งไปเลยใช่ไหมล่ะ?
ทำงานยังไงนะ?
การใช้งาน Async Subagents ก็ไม่ได้ซับซ้อนอย่างที่คิดครับ ตอนที่เราสร้าง create_deep_agent เราสามารถระบุ AsyncSubAgent spec ได้เลย ซึ่งตัว spec นี้จะชี้ไปยังรีโมทเอเจนต์ของเรา
แล้วเอเจนต์หลักของเราก็จะมีเครื่องมือใหม่ 5 ตัวสำหรับจัดการงานที่รันอยู่เบื้องหลัง:
start_async_task: ใช้สำหรับเปิดงานบนรีโมทเอเจนต์ แล้วจะส่ง Task ID กลับมาทันทีcheck_async_task: ตรวจสอบสถานะของงาน และเรียกผลลัพธ์เมื่อทำงานเสร็จupdate_async_task: ส่งคำสั่งเพิ่มเติมไปยังงานที่กำลังทำงานอยู่cancel_async_task: ยกเลิกงานที่กำลังทำงานอยู่list_async_tasks: แสดงรายการงานทั้งหมดที่กำลังถูกติดตามพร้อมสถานะปัจจุบัน
เรียกได้ว่าเป็นการทำงานแบบ "สั่งแล้วลืม" (fire-and-forget) ครับ เอเจนต์หลักแค่เปิดงาน ทีนี่ก็สามารถทำงานอื่นต่อหรือคุยกับผู้ใช้งานไปเรื่อยๆ แล้วค่อยกลับมาตรวจสอบผลลัพธ์เมื่อต้องการได้เลย แถมยังรัน Async Subagents หลายตัวพร้อมกันได้อีกด้วยนะ
Agent Protocol: หัวใจสำคัญ
สิ่งหนึ่งที่ทำให้ Async Subagents ใช้งานได้หลากหลายขนาดนี้ก็คือ การที่มันรองรับเอเจนต์ระยะไกลใดๆ ก็ตามที่ใช้ Agent Protocol ซึ่งเป็นโปรโตคอลแบบ open-source ครับ ไม่ว่าคุณจะใช้เอเจนต์ที่ deploy ด้วย LangSmith หรือจะสร้างบริการ FastAPI ของตัวเองที่ใช้ server stubs หรือแม้แต่การ implement แบบอื่นๆ ก็สามารถทำงานร่วมกันได้หมดเลย LangChain เค้ายังได้เพิ่มตัวอย่างการ implement เซิร์ฟเวอร์สำหรับ Deep Agents ทั้งเวอร์ชัน Python และ JS ไว้ให้ด้วยนะ
และที่น่าสนใจคือ ถ้าเราไม่ได้ระบุ url สำหรับ AsyncSubAgent Deep Agents จะใช้ ASGI transport ในการสื่อสาร ซึ่งทำให้ supervisor (เอเจนต์หลัก) กับ sub-agents สามารถ co-deploy และสื่อสารกันได้ใน process เดียวกันด้วย!
รองรับ Multi-Modal ที่หลากหลายขึ้น
นอกจากเรื่อง Async Subagents แล้ว Deep Agents v0.5 ยังขยายการรองรับ Multi-modal ให้กับระบบไฟล์อีกด้วยครับ จากเดิมที่รองรับแค่การอ่านรูปภาพ ตอนนี้รองรับไฟล์ประเภทอื่นๆ เช่น PDF, ไฟล์เสียง (audio), วิดีโอ (video) และไฟล์ประเภทอื่นๆ ได้แล้ว โดยเอเจนต์จะยังคงใช้เครื่องมือ read_file เหมือนเดิม ไม่ต้องเปลี่ยน API เลยครับ ระบบจะตรวจจับประเภทไฟล์จากนามสกุลโดยอัตโนมัติ แล้วส่งเนื้อหาไปยังโมเดลในรูปแบบ content block ที่เหมาะสม
เริ่มต้นใช้งานยังไงดี?
ถ้าอ่านมาถึงตรงนี้แล้วรู้สึกว้าว อยากลองใช้งาน Deep Agents v0.5 ก็ไม่ต้องรอช้าแล้วครับ! ลองเข้าไปอ่านรายละเอียดเพิ่มเติมและเริ่มใช้งานได้ทันที เพื่อสัมผัสประสบการณ์การทำงานของเอเจนต์ที่เร็วขึ้นและฉลาดขึ้นได้เลย
อ่านต่อ: LangChain Deep Agents v0.5: Async Subagents ฟีเจอร์ใหม่ที่จะเปลี่ยนวิธีทำงานของเอเจนต์คุณให้ลื่นไหลและทรงพลังยิ่งกว่าเดิม!