𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 में एक AI वीडियो जॉब क्यू (Job Queue) बनाना
AI वीडियो जनरेशन कोई स्टैंडर्ड HTTP रिक्वेस्ट नहीं है। एक यूजर प्रॉम्प्ट और सेटिंग्स भेजता है। परिणाम आने में मिनटों का समय लगता है।
आपके बैकएंड को कई कार्यों को संभालना होगा। इसे इनपुट को वैलिडेट करने, जॉब्स बनाने, प्रोवाइडर्स से बात करने, परिणामों के लिए पोल (poll) करने और विफलताओं को संभालने की आवश्यकता होती है।
एक मजबूत वर्कफ़्लो के लिए छह चरणों की आवश्यकता होती है:
- प्रॉम्प्ट और सेटिंग्स को वैलिडेट करें।
- अपलोड किए गए एसेट्स (assets) की जांच करें।
- अपने डेटाबेस में एक जॉब रिकॉर्ड बनाएं।
- जॉब को प्रोवाइडर के पास सबमिट करें।
- वीडियो तैयार होने तक प्रोवाइडर को पोल करते रहें।
- अपने UI के लिए परिणाम को फॉर्मेट करें।
प्रोवाइडर APIs को अपने पूरे ऐप को नियंत्रित न करने दें। अपने सिस्टम को स्थिर रखने के लिए एक एडॉप्टर लेयर (adapter layer) का उपयोग करें। इससे आप अपने कोर लॉजिक को दोबारा लिखे बिना प्रोवाइडर्स को बदल सकते हैं।
अपने प्रोडक्ट कॉन्ट्रैक्ट के रूप में कार्य करने के लिए एक सेंट्रल जॉब टाइप (central job type) बनाएं। प्रत्येक प्रोवाइडर को अपने डेटा को इस फॉर्मेट में ट्रांसलेट करना चाहिए।
तीन मेथड्स के साथ एक VideoProvider इंटरफ़ेस (interface) परिभाषित करें:
submit: जॉब को प्रोवाइडर के पास भेजें।poll: जांचें कि क्या जॉब पूरा हो गया है।normalizeError: प्रोवाइडर एरर्स को अपने स्वयं के एरर कोड में बदलें।
यह प्रोवाइडर के अंतरों को आपके बिलिंग लॉजिक और UI से दूर रखता है।
हमेशा पहले कम लागत वाले चेक (cheap checks) करें। API कॉल्स पर पैसा खर्च करने से पहले प्रॉम्प्ट और ड्यूरेशन को वैलिडेट करें।
अपना वर्कर (worker) बनाते समय, बढ़ते हुए डिले (delay) के साथ एक पोलिंग स्ट्रैटेजी का उपयोग करें। यदि किसी जॉब में बहुत अधिक समय लगता है, तो उसे "delayed" स्टेटस में डाल दें। जॉब्स को हमेशा के लिए "running" स्टेट में न रहने दें। इन डिले हुए जॉब्स की बाद में जांच करने के लिए एक अलग प्रोसेस का उपयोग करें।
आपके UI को कभी भी रॉ प्रोवाइडर एरर्स (raw provider errors) नहीं दिखाने चाहिए। अपने इंटरनल एरर कोड को अपने यूजर्स के लिए स्पष्ट संदेशों में मैप करें:
queued: आपका वीडियो शुरू होने का इंतज़ार कर रहा है।running: आपका वीडियो जनरेट किया जा रहा है।delayed: इसमें सामान्य से अधिक समय लग रहा है।moderation_rejected: अपना प्रॉम्प्ट या एसेट्स बदलने का प्रयास करें।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