TypeScript ഉപയോഗിച്ച് ഒരു AI വീഡിയോ ജോബ് ക്യൂ (Job Queue) നിർമ്മിക്കുന്നു

AI വീഡിയോ ജനറേഷൻ എന്നത് ഒരു സാധാരണ HTTP റിക്വസ്റ്റ് അല്ല. ഒരു ഉപയോക്താവ് പ്രോംപ്റ്റും (prompt) സെറ്റിംഗ്‌സും അയക്കുന്നു. അതിന്റെ ഫലം ലഭിക്കാൻ മിനിറ്റുകൾ എടുക്കും.

നിങ്ങളുടെ ബാക്കെൻഡ് (backend) താഴെ പറയുന്ന ഘട്ടങ്ങൾ കൈകാര്യം ചെയ്യണം:

  • ഇൻപുട്ട് പരിശോധിക്കുക (Validate input).
  • ഒരു ജോബ് റെക്കോർഡ് സൃഷ്ടിക്കുക.
  • ജോബ് ഒരു പ്രൊവൈഡറിലേക്ക് സമർപ്പിക്കുക.
  • ഫലങ്ങൾക്കായി പോളിംഗ് (poll) നടത്തുക.
  • പരാജയങ്ങൾ കൈകാര്യം ചെയ്യുക.
  • ഉപയോക്താവിന് സ്റ്റാറ്റസ് കാണിക്കുക.

നിങ്ങൾ ഒരു ക്യൂവും (queue) ഒരു അഡാപ്റ്റർ ലെയറും (adapter layer) ഉപയോഗിക്കണം. ഇത് പ്രൊവൈഡർ അധിഷ്ഠിത കോഡുകൾ നിങ്ങളുടെ ആപ്പിനെ മുഴുവനായി തകരാറിലാക്കുന്നത് തടയുന്നു.

നിങ്ങളുടെ പ്രോഡക്റ്റ് കോൺട്രാക്റ്റായി പ്രവർത്തിക്കുന്നതിനായി ഒരു കോർ ജോബ് ടൈപ്പ് (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;
}

നിങ്ങളുടെ വർക്ക്ഫ്ലോയ്ക്കായി ഈ മികച്ച രീതികൾ (best practices) പിന്തുടരുക:

  1. ആദ്യം ലളിതമായ പരിശോധനകൾ നടത്തുക. വിലകൂടിയ API-കൾ വിളിക്കുന്നതിന് മുമ്പ് പ്രോംപ്റ്റുകളും ഡ്യൂറേഷനുകളും പരിശോധിക്കുക.

  2. ഒരു പോളിംഗ് സ്ട്രാറ്റജി (polling strategy) ഉപയോഗിക്കുക. ഇടവേളകൾ വർദ്ധിപ്പിച്ചുകൊണ്ടുള്ള ഒരു ലൂപ്പ് നടപ്പിലാക്കുക.

  3. താമസം (delays) കൈകാര്യം ചെയ്യുക. ഒരു ജോബ് എടുക്കാൻ കൂടുതൽ സമയമെടുത്താൽ, അതിനെ "delayed" സ്റ്റാറ്റസിലേക്ക് മാറ്റുക. താമസമെടുക്കുന്ന ജോബുകൾ പിന്നീട് പരിശോധിക്കാൻ ഒരു പ്രത്യേക വർക്കർ ഉപയോഗിക്കുക.

  4. എററുകൾ നോർമലൈസ് (Normalize) ചെയ്യുക. പ്രൊവൈഡറിൽ നിന്നുള്ള നേരിട്ടുള്ള എററുകൾ ഒരിക്കലും ഉപയോക്താക്കൾക്ക് കാണിക്കരുത്. സാങ്കേതികമായ എററുകളെ ലളിതമായ സന്ദേശങ്ങളാക്കി മാറ്റുക.

ഉദാഹരണ സന്ദേശങ്ങൾ:

  • "queued": നിങ്ങളുടെ വീഡിയോ ആരംഭിക്കാൻ കാത്തിരിക്കുന്നു.
  • "running": നിങ്ങളുടെ വീഡിയോ നിർമ്മിച്ചുകൊണ്ടിരിക്കുന്നു.
  • "delayed": ഇതിന് സാധാരണയേക്കാൾ കൂടുതൽ സമയമെടുക്കുന്നു.
  • "moderation_rejected": ഈ റിക്വസ്റ്റ് പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല.

AI വീഡിയോയെ ഒരു ജോബ് സിസ്റ്റമായി പരിഗണിക്കുക. ഒരു സ്ഥിരതയുള്ള ക്യൂവും വ്യക്തമായ എറർ ടാക്സോണമിയും (error taxonomy) നിങ്ങളുടെ പ്രോഡക്റ്റ് പരിപാലിക്കാനും വികസിപ്പിക്കാനും എളുപ്പമാക്കുന്നു.

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