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

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

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

ഒരു മികച്ച വർക്ക്ഫ്ലോയ്ക്ക് ആറ് ഘട്ടങ്ങൾ ആവശ്യമാണ്:

  • പ്രോംപ്റ്റും സെറ്റിംഗ്‌സും പരിശോധിക്കുക.
  • അപ്‌ലോഡ് ചെയ്ത അസറ്റുകൾ (assets) പരിശോധിക്കുക.
  • നിങ്ങളുടെ ഡാറ്റാബേസിൽ ഒരു ജോബ് റെക്കോർഡ് സൃഷ്ടിക്കുക.
  • ജോബ് ഒരു പ്രൊവൈഡറിലേക്ക് സമർപ്പിക്കുക.
  • വീഡിയോ തയ്യാറാകുന്നത് വരെ പ്രൊവൈഡറിൽ നിന്ന് ഫലംക്കായി പോൾ ചെയ്യുക.
  • നിങ്ങളുടെ UI-ക്കായി ഫലം ഫോർമാറ്റ് ചെയ്യുക.

പ്രൊവൈഡർ API-കൾ നിങ്ങളുടെ മുഴുവൻ ആപ്പിനെയും നിയന്ത്രിക്കാൻ അനുവദിക്കരുത്. നിങ്ങളുടെ സിസ്റ്റം സുസ്ഥിരമായി നിലനിർത്താൻ ഒരു അഡാപ്റ്റർ ലെയർ (adapter layer) ഉപയോഗിക്കുക. ഇത് നിങ്ങളുടെ കോർ ലോജിക് (core logic) വീണ്ടും എഴുതാതെ തന്നെ പ്രൊവൈഡർമാരെ മാറ്റാൻ നിങ്ങളെ സഹായിക്കുന്നു.

നിങ്ങളുടെ പ്രൊഡക്റ്റ് കോൺട്രാക്റ്റായി പ്രവർത്തിക്കുന്നതിനായി ഒരു സെൻട്രൽ ജോബ് ടൈപ്പ് (central job type) നിർമ്മിക്കുക. ഓരോ പ്രൊവൈഡറും അവരുടെ ഡാറ്റ ഈ ഫോർമാറ്റിലേക്ക് മാറ്റേണ്ടതുണ്ട്.

മൂന്ന് മെത്തേഡുകളുള്ള ഒരു VideoProvider ഇന്റർഫേസ് നിർവചിക്കുക:

  • submit: ജോബ് പ്രൊവൈഡറിലേക്ക് അയക്കുക.
  • poll: ജോബ് പൂർത്തിയായോ എന്ന് പരിശോധിക്കുക.
  • normalizeError: പ്രൊവൈഡർ എററുകളെ നിങ്ങളുടെ സ്വന്തം എറർ കോഡുകളാക്കി മാറ്റുക.

ഇത് പ്രൊവൈഡർമാരിലെ വ്യത്യാസങ്ങളെ നിങ്ങളുടെ ബില്ലിംഗ് ലോജിക്കിൽ നിന്നും UI-യിൽ നിന്നും അകറ്റി നിർത്തുന്നു.

എപ്പോഴും കുറഞ്ഞ ചിലവുള്ള പരിശോധനകൾ ആദ്യം ചെയ്യുക. API കോളുകൾക്കായി പണം ചിലവാക്കുന്നതിന് മുമ്പ് പ്രോംപ്റ്റുകളും ഡ്യൂറേഷനുകളും (durations) പരിശോധിക്കുക.

നിങ്ങളുടെ വർക്കർ നിർമ്മിക്കുമ്പോൾ, ഇടവേളകൾ വർദ്ധിപ്പിച്ചുകൊണ്ടുള്ള ഒരു പോളിംഗ് സ്ട്രാറ്റജി (polling strategy) ഉപയോഗിക്കുക. ഒരു ജോബ് എടുക്കാൻ കൂടുതൽ സമയമെടുത്താൽ, അതിനെ "delayed" സ്റ്റാറ്റസിലേക്ക് മാറ്റുക. ജോബുകൾ എന്നെന്നേക്കുമായി "running" സ്റ്റേറ്റിൽ നിലനിൽക്കാൻ അനുവദിക്കരുത്. ഈ ഡിലേ ആയ ജോബുകൾ പിന്നീട് പരിശോധിക്കാൻ ഒരു പ്രത്യേക പ്രോസസ്സ് ഉപയോഗിക്കുക.

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

  • queued: നിങ്ങളുടെ വീഡിയോ ആരംഭിക്കാൻ കാത്തിരിക്കുന്നു.
  • running: നിങ്ങളുടെ വീഡിയോ നിർമ്മിക്കപ്പെട്ടുകൊണ്ടിരിക്കുന്നു.
  • delayed: ഇതിന് സാധാരണയേക്കാൾ കൂടുതൽ സമയമെടുക്കുന്നു.
  • moderation_rejected: നിങ്ങളുടെ പ്രോംപ്റ്റോ അസറ്റുകളോ മാറ്റി പരീക്ഷിക്കുക.
  • provider_timeout: പ്രൊവൈഡർ കൃത്യസമയത്ത് ഫലം നൽകിയില്ല.

വ്യക്തമായ സന്ദേശങ്ങൾ സപ്പോർട്ട് ടിക്കറ്റുകൾ കുറയ്ക്കാനും എന്ത് സംഭവിച്ചു എന്ന് ഉപയോക്താക്കൾക്ക് മനസ്സിലാക്കാനും സഹായിക്കുന്നു.

AI വീഡിയോയെ ഒരു ജോബ് സിസ്റ്റമായി കാണുക. സുസ്ഥിരമായ ഒരു ക്യൂവും നല്ലൊരു എറർ ടാക്സോണോമിയും (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