Node.js AI Workflow: สร้างระบบงาน AI ด้วย BullMQ
คู่มือสร้างเวิร์กโฟลว์ AI ใน Node.js ด้วยการแยกการทำงานผ่าน PostgreSQL, BullMQ, Redis และ OpenAI พร้อมการตรวจสอบความถูกต้องด้วย Zod

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- รับเว็บฮุคและบันทึกข้อมูลลง PostgreSQL ทันทีพร้อมส่งสถานะ 202 Accepted
- ใช้ BullMQ และ Redis จัดการคิวงานเบื้องหลังแบบอะซิงโครนัส
- เรียก OpenAI เพื่อจำแนกประเภทและตรวจสอบความถูกต้องด้วย Zod
- แยกสถานะธุรกิจไว้ที่ฐานข้อมูลและให้ AI ทำหน้าที่ตีความข้อความเท่านั้น
การพัฒนาเว็บแอปพลิเคชันที่ต้องผสานการทำงานเข้ากับปัญญาประดิษฐ์มักพบความท้าทายเรื่องความเสถียร เนื่องจากโมเดลภาษาขนาดใหญ่อาจมีความล่าช้าหรือความไม่แน่นอนในการตอบสนอง แนวทางปฏิบัติที่ดีจึงเป็นการแยกกระบวนการรับคำขอออกจากกระบวนการประมวลผลเบื้องหลัง เพื่อให้ระบบสามารถรองรับภาระงานและจัดการข้อผิดพลาดได้อย่างมีประสิทธิภาพ
ในบทความเชิงเทคนิคจาก Gate of AI ได้นำเสนอการสร้างบริการรับคำขอขนาดเล็กด้วย Node.js โดยเมื่อระบบภายนอกส่งข้อมูลเข้ามาที่เอนด์พอยต์ POST /webhooks/work-items API จะทำหน้าที่ตรวจสอบความถูกต้องของข้อมูล บันทึกลงใน PostgreSQL และเพิ่มงานลงในคิว BullMQ ก่อนจะตอบกลับด้วยสถานะ 202 Accepted ทันทีโดยไม่ต้องรอผลลัพธ์จาก AI

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
สำหรับขั้นตอนการทำงานเบื้องหลัง เวิร์กเกอร์แยกต่างหากจะดึงงานมาจาก Redis โหลดข้อมูลหลักจาก PostgreSQL ส่งคำขอไปยัง OpenAI เพื่อจำแนกประเภทข้อมูล จากนั้นตรวจสอบโครงสร้าง JSON ที่ได้รับด้วย Zod และบันทึกผลลัพธ์ลงฐานข้อมูล พร้อมกันนี้ระบบยังมีเอนด์พอยต์ GET /work-items/:id สำหรับตรวจสอบสถานะและ GET /ready สำหรับตรวจสอบความพร้อมของระบบด้วย
การออกแบบระบบในลักษณะนี้ช่วยรักษาความน่าเชื่อถือของข้อมูล (System of Record) โดยให้ PostgreSQL ทำหน้าที่เก็บสถานะทางธุรกิจทั้งหมด ขณะที่ Redis และ BullMQ ทำหน้าที่ประสานงานเบื้องหลัง การจำกัดบทบาทของ AI ให้ทำหน้าที่เฉพาะการตีความและสรุปผลภายใต้ขอบเขตที่กำหนด ช่วยป้องกันไม่ให้โมเดลเข้ามาตัดสินใจในเรื่องนโยบายความปลอดภัยที่ต้องอาศัยโค้ดหรือการตรวจสอบจากมนุษย์
การติดตั้งระบบเริ่มต้นด้วยการสร้างโปรเจกต์ Node.js และติดตั้งแพ็กเกจที่จำเป็น เช่น bullmq, express, ioredis, openai, pg, pino และ zod รวมทั้งเครื่องมือสำหรับ TypeScript อย่าง tsx นอกจากนี้ ในระบบที่มีความน่าเชื่อถือสูง นักพัฒนาควรพิจารณาใช้รูปแบบ Outbox Event เพื่อบันทึกเหตุการณ์ลงฐานข้อมูลในทรานแซคชันเดียวกันกับการแทรกข้อมูล ป้องกันปัญหากรณีเกิดความผิดพลาดระหว่างการบันทึกข้อมูลและการส่งงานไปยังคิว
การทดสอบระบบด้วยคีย์การทำงานซ้ำ (Idempotency Key) ช่วยให้มั่นใจว่าการส่งเว็บฮุคซ้ำจะไม่สร้างข้อมูลซ้ำซ้อนใน PostgreSQL เนื่องจากระบบจะคืนค่าข้อมูลเดิมแทนที่จะสร้างแถวใหม่ บทเรียนสำคัญจากการสร้างระบบอัตโนมัติด้วย AI คือการผสานเครื่องมือแต่ละชนิดเข้าด้วยกันอย่างเหมาะสม ได้แก่ การใช้ AI ตีความข้อมูลดิบ การใช้โค้ดควบคุมนโยบาย การใช้ PostgreSQL จัดการสถานะ และการใช้ BullMQ สำหรับการรันงานซ้ำเมื่อเกิดข้อผิดพลาด
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น