TypeScript میں AI ویڈیو جاب کیو (Job Queue) بنانا

AI ویڈیو جنریشن کوئی عام HTTP ریکویسٹ نہیں ہے۔ صارف ایک پرامپٹ اور سیٹنگز بھیجتا ہے۔ نتیجہ آنے میں کئی منٹ لگتے ہیں۔

آپ کے بیک اینڈ کو بہت سے کام سنبھالنے پڑتے ہیں۔ اسے ان پٹ کی تصدیق کرنے، جابز بنانے، فراہم کنندگان (providers) سے بات کرنے، نتائج کے لیے پولنگ کرنے اور ناکامیوں کو سنبھالنے کی ضرورت ہوتی ہے۔

ایک مضبوط ورک فلو کے لیے چھ مراحل درکار ہیں:

  • پرامپٹ اور سیٹنگز کی تصدیق کریں۔
  • اپ لوڈ کردہ اثاثوں (assets) کو چیک کریں۔
  • اپنے ڈیٹا بیس میں ایک جاب ریکارڈ بنائیں۔
  • جاب کو فراہم کنندہ (provider) کو جمع کروائیں۔
  • ویڈیو تیار ہونے تک فراہم کنندہ سے پولنگ کرتے رہیں۔
  • اپنے UI کے لیے نتیجے کو فارمیٹ کریں۔

فراہم کنندہ کی APIs کو اپنے پورے ایپ کو کنٹرول نہ کرنے دیں۔ اپنے سسٹم کو مستحکم رکھنے کے لیے ایک اڈاپٹر لیئر (adapter layer) استعمال کریں۔ اس سے آپ اپنے بنیادی لاجک کو دوبارہ لکھے بغیر فراہم کنندگان کو تبدیل کر سکتے ہیں۔

اپنے پروڈکٹ کنٹریکٹ کے طور پر کام کرنے کے لیے ایک مرکزی جاب ٹائپ (job type) بنائیں۔ ہر فراہم کنندہ کو اپنا ڈیٹا اسی فارمیٹ میں تبدیل کرنا چاہیے۔

تین میتھڈز کے ساتھ ایک VideoProvider انٹرفیس (interface) کی تعریف کریں:

  • submit: جاب کو فراہم کنندہ کو بھیجیں۔
  • poll: چیک کریں کہ آیا جاب مکمل ہو گئی ہے۔
  • normalizeError: فراہم کنندہ کی غلطیوں کو اپنے ایرر کوڈز میں تبدیل کریں۔

یہ فراہم کنندگان کے فرق کو آپ کے بلنگ لاجک اور UI سے دور رکھتا ہے۔

ہمیشہ پہلے سستے چیک (cheap checks) کریں۔ API کالز پر رقم خرچ کرنے سے پہلے پرامپٹس اور دورانیے کی تصدیق کریں۔

اپنا ورکر (worker) بناتے وقت، بڑھتے ہوئے وقفوں کے ساتھ پولنگ اسٹریٹیجی استعمال کریں۔ اگر کسی جاب میں بہت زیادہ وقت لگتا ہے، تو اسے "delayed" اسٹیٹس میں منتقل کر دیں۔ جابز کو ہمیشہ کے لیے "running" اسٹیٹ میں نہ رہنے دیں۔ ان تاخیر شدہ جابز کو بعد میں چیک کرنے کے لیے ایک الگ پروسیس استعمال کریں۔

آپ کے UI کو کبھی بھی فراہم کنندہ کے خام (raw) ایررز نہیں دکھانے چاہئیں۔ اپنے اندرونی ایرر کوڈز کو اپنے صارفین کے لیے واضح پیغامات میں تبدیل کریں:

  • queued: آپ کی ویڈیو شروع ہونے کا انتظار کر رہی ہے۔
  • running: آپ کی ویڈیو تیار کی جا رہی ہے۔
  • delayed: اس میں معمول سے زیادہ وقت لگ رہا ہے۔
  • moderation_rejected: اپنا پرامپٹ یا اثاثے (assets) تبدیل کرنے کی کوشش کریں۔
  • provider_timeout: فراہم کنندہ نے وقت پر نتیجہ نہیں دیا۔

واضح پیغامات سپورٹ ٹکٹس کو کم کرتے ہیں اور صارفین کو یہ سمجھنے میں مدد دیتے ہیں کہ کیا ہوا ہے۔

AI ویڈیو کو ایک جاب سسٹم کے طور پر دیکھیں۔ ایک مستحکم کیو (queue) اور غلطیوں کی اچھی درجہ بندی (error taxonomy) آپ کی پروڈکٹ کی دیکھ بھال کو آسان بناتی ہے۔

Source: https://dev.to/miao_cunhui_587ccddb6acc1/building-an-ai-video-job-queue-in-typescript-1349

Optional learning community: https://t.me/GyaanSetuAi