TypeScript मध्ये AI व्हिडिओ जॉब क्यू (Queue) तयार करणे
AI व्हिडिओ जनरेशन ही एक सामान्य HTTP रिक्वेस्ट नाही. वापरकर्ता एक प्रॉम्प्ट (prompt) आणि सेटिंग्ज पाठवतो. निकाल मिळण्यासाठी काही मिनिटे लागतात.
तुमच्या बॅकएंडला खालील अनेक टप्पे हाताळावे लागतील:
- इनपुटची पडताळणी (Validate) करणे.
- जॉब रेकॉर्ड तयार करणे.
- जॉब प्रोव्हायडरकडे (provider) सबमिट करणे.
- निकालांसाठी पोलिंग (poll) करणे.
- त्रुटी (failures) हाताळणे.
- वापरकर्त्याला स्टेटस दाखवणे.
तुम्ही क्यू (queue) आणि अडॅप्टर लेयर (adapter layer) वापरला पाहिजे. यामुळे प्रोव्हायडर-विशिष्ट कोडमुळे तुमचे संपूर्ण ॲप बिघडण्यापासून वाचते.
तुमच्या प्रॉडक्ट कॉन्ट्रॅक्ट (product contract) प्रमाणे काम करण्यासाठी एक कोअर जॉब टाईप (core job type) परिभाषित करा.
type JobStatus = "queued" | "validating" | "running" | "delayed" | "succeeded" | "failed";
type VideoJob = {
id: string;
userId: string;
model: string;
prompt: string;
aspectRatio: "16:9" | "9:16" | "1:1";
durationSeconds: number;
status: JobStatus;
providerTaskId?: string;
outputUrl?: string;
errorCode?: VideoJobErrorCode;
};
तुमच्या प्रोव्हायडर्ससाठी इंटरफेस (interface) वापरा. यामुळे तुमचा वर्कर लॉजिक (worker logic) स्वच्छ राहतो.
interface VideoProvider {
submit(job: VideoJob): Promise<{ providerTaskId: string }>;
poll(providerTaskId: string): Promise<
| { status: "running" }
| { status: "succeeded"; outputUrl: string }
| { status: "failed"; error: unknown }
>;
normalizeError(error: unknown): VideoJobErrorCode;
}
तुमच्या वर्कफ्लोसाठी (workflow) या सर्वोत्तम पद्धतींचे (best practices) पालन करा:
प्रथम कमी खर्चाच्या तपासण्या (cheap checks) करा. महागड्या APIs कॉल करण्यापूर्वी प्रॉम्प्ट्स आणि ड्युरेशन्सची पडताळणी करा.
पोलिंग स्ट्रॅटेजी (polling strategy) वापरा. वाढत्या विलंबतेसह (increasing delays) एक लूप लागू करा.
विलंब हाताळा. जर एखाद्या जॉबला खूप वेळ लागत असेल, तर त्याला "delayed" स्टेटसमध्ये हलवा. नंतर विलंबित जॉब्स तपासण्यासाठी वेगळा वर्कर वापरा.
त्रुटींचे सामान्यीकरण (Normalize errors) करा. वापरकर्त्यांना कधीही प्रोव्हायडरच्या कच्च्या (raw) त्रुटी दाखवू नका. तांत्रिक त्रुटींचे मानवी-वाचनीय संदेशांमध्ये रूपांतर करा.
उदाहरणार्थ वापरकर्ता संदेश:
- "queued": तुमचा व्हिडिओ सुरू होण्याची प्रतीक्षा आहे.
- "running": तुमचा व्हिडिओ तयार केला जात आहे.
- "delayed": यासाठी नेहमीपेक्षा जास्त वेळ लागत आहे.
- "moderation_rejected": ही विनंती प्रक्रिया करता आली नाही.
AI व्हिडिओकडे एक जॉब सिस्टम म्हणून पहा. एक स्थिर क्यू (queue) आणि स्पष्ट एरर वर्गीकरण (error taxonomy) तुमचे उत्पादन देखभाल आणि स्केल (scale) करणे सोपे बनवते.
Source: https://dev.to/miao_cunhui_587ccddb6acc1/building-an-ai-video-job-queue-in-typescript-1349