- ใช้ระบบ Dynamic Task Queue แทนเวิร์กโฟลว์แบบ Node-Edge ดั้งเดิม โดยให้ความสำคัญกับความกระชับและความยืดหยุ่น
- หลักการ 3 ข้อ
- การทำงานพร้อมกัน: งานจะรันแบบขนานโดยอัตโนมัติ
- การจัดตารางแบบไดนามิก: สามารถเพิ่มงานใหม่ได้ระหว่างการรันงาน
- การพึ่งพาอย่างชาญฉลาด: ประมวลผลโดยรอผลลัพธ์จากงานก่อนหน้า
- ผลลัพธ์ของทุก task จะถูกเก็บไว้ใน
Context ที่ thread-safe
- สถาปัตยกรรมแบบ task นี้ช่วยให้เวิร์กโฟลว์ที่ซับซ้อนกลายเป็นเรื่องง่ายมาก
- รันงานแบบขนานได้โดยไม่ต้องมีโค้ด threading แบบ explicit
- เวิร์กโฟลว์แบบไดนามิกและ cycle ที่แก้ไขตัวเองได้
- การแตกแขนงตามเงื่อนไขและการควบคุมโฟลว์
- การสตรีมการรันงาน
- การจัดการสถานะ โหลดสถานะก่อนหน้าและบันทึกสถานะปัจจุบัน
- สามารถเริ่มรันจากงานที่กำหนดได้
- ส่งต่อข้อมูลอินพุตแบบไดนามิกเพื่อรันงานถัดไป
- การประมวลผลแบบขนานและการรวบรวมผลลัพธ์ เช่น MapReduce
- ใช้การจัดตารางแบบไดนามิกโดยไม่ต้องกำหนดการเชื่อมต่อระหว่างโหนดล่วงหน้า
- ลดความซับซ้อนของเวิร์กโฟลว์เพื่อให้เขียนโค้ดได้สะอาดขึ้น
- ออกแบบมาให้มีน้ำหนักเบา ไม่มี dependency ภายนอก
- Auto-Instrumentation
- มีฟังก์ชัน Auto-Instrumentation สำหรับการติดตามด้วย Laminar
- หากต้องการเปิดใช้งานการติดตามบน OpenTelemetry ต้อง initialize Laminar SDK ก่อนใช้งาน Flow
- ความสามารถขั้นสูง
- การแชร์คอนเท็กซ์: ทุกงานใช้คอนเท็กซ์เดียวกันเพื่อจัดการ data flow
- การจัดการข้อผิดพลาด: ส่งต่อ exception ภายในงานได้อย่างเหมาะสม
- ความปลอดภัยของเธรด: ทุกงานเป็น thread-safe
- การพึ่งพาน้อยที่สุด: ทำงานได้โดยไม่ต้องใช้ไลบรารีภายนอก
- แผนการพัฒนาในอนาคต
- เพิ่มการรองรับ asynchronous
- เพิ่มตัวเลือกการ deploy แบบ serverless
1 ความคิดเห็น
ผมยังไม่ค่อยเข้าใจคำอธิบายของโปรเจกต์เท่าไรนะครับ เป็นแค่การยกตัวอย่างกรณีการใช้งาน ไม่ได้เจาะจงสำหรับ AI agent โดยเฉพาะใช่ไหมครับ? เพราะดูแล้วเหมือนไม่ค่อยต่างจาก task engine แบบทั่วไปที่ใช้งานได้อเนกประสงค์เลย