TypeScript मध्ये AI व्हिडिओ जॉब क्यू (Job Queue) तयार करणे
AI व्हिडिओ जनरेशन ही एक सामान्य HTTP विनंती (request) नाही. वापरकर्ता एक प्रॉम्प्ट (prompt) आणि सेटिंग्ज पाठवतो. निकाल मिळण्यासाठी काही मिनिटे लागतात.
तुमच्या बॅकएंडला अनेक कार्ये हाताळावी लागतात. इनपुट व्हॅलिडेट करणे, जॉब तयार करणे, प्रोव्हायडर्सशी संवाद साधणे, निकालांसाठी पोलिंग (polling) करणे आणि त्रुटी (failures) हाताळणे आवश्यक आहे.
एका भक्कम वर्कफ्लोसाठी सहा पायऱ्यांची आवश्यकता असते:
- प्रॉम्प्ट आणि सेटिंग्ज व्हॅलिडेट करा.
- अपलोड केलेले ॲसेट्स तपासा.
- तुमच्या डेटाबेसमध्ये जॉब रेकॉर्ड तयार करा.
- जॉब प्रोव्हायडरकडे सबमिट करा.
- व्हिडिओ तयार होईपर्यंत प्रोव्हायडरला पोल करा.
- तुमच्या UI साठी निकाल फॉरमॅट करा.
प्रोव्हायडरच्या API ला तुमच्या संपूर्ण ॲपवर नियंत्रण ठेवू देऊ नका. तुमचे सिस्टम स्थिर ठेवण्यासाठी 'अॅडॉप्टर लेअर' (adapter layer) वापरा. यामुळे तुम्हाला तुमचा मुख्य लॉजिक (core logic) पुन्हा न लिहिता प्रोव्हायडर्स बदलता येतील.
तुमच्या प्रॉडक्ट कॉन्ट्रॅक्टप्रमाणे काम करण्यासाठी एक मध्यवर्ती 'जॉब टाईप' (job type) तयार करा. प्रत्येक प्रोव्हायडरने आपला डेटा या फॉरमॅटमध्ये रूपांतरित केला पाहिजे.
तीन पद्धतींसह (methods) एक VideoProvider इंटरफेस परिभाषित करा:
submit: जॉब प्रोव्हायडरकडे पाठवा.poll: जॉब पूर्ण झाला आहे का ते तपासा.normalizeError: प्रोव्हायडरच्या त्रुटी तुमच्या स्वतःच्या एरर कोडमध्ये रूपांतरित करा.
यामुळे प्रोव्हायडरमधील फरक तुमच्या बिलिंग लॉजिक आणि UI पासून दूर राहतात.
नेहमी आधी स्वस्त तपासणी (cheap checks) करा. API कॉल्सवर पैसे खर्च करण्यापूर्वी प्रॉम्प्ट आणि कालावधी (durations) व्हॅलिडेट करा.
तुमचा वर्कर (worker) तयार करताना, वाढत्या विलंबतेसह (increasing delays) पोलिंग स्ट्रॅटेजी वापरा. जर एखाद्या जॉबला खूप वेळ लागत असेल, तर त्याला "delayed" स्टेटसमध्ये हलवा. जॉब्सना कायमस्वरूपी "running" स्थितीत ठेवू नका. नंतर या विलंबित जॉब्सची तपासणी करण्यासाठी वेगळी प्रक्रिया वापरा.
तुमच्या UI ने कधीही प्रोव्हायडरच्या कच्च्या (raw) त्रुटी दाखवू नयेत. तुमच्या अंतर्गत एरर कोड्सचे वापरकर्त्यांसाठी स्पष्ट संदेशांमध्ये मॅपिंग करा:
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