𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 ನಲ್ಲಿ 𝗔𝗜 𝗩𝗶𝗱𝗲𝗼 𝗝𝗼𝗯 𝗤𝘂𝗲𝘂𝗲 ಅನ್ನು ನಿರ್ಮಿಸುವುದು

AI ವಿಡಿಯೋ ಜನರೇಷನ್ ಎಂಬುದು ಸಾಮಾನ್ಯ HTTP ರಿಕ್ವೆಸ್ಟ್ ಅಲ್ಲ. ಬಳಕೆದಾರರು ಒಂದು ಪ್ರಾಂಪ್ಟ್ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ. ಅದರ ಫಲಿತಾಂಶ ಬರಲು ನಿಮಿಷಗಳ ಕಾಲ ಬೇಕಾಗುತ್ತದೆ.

ನಿಮ್ಮ ಬ್ಯಾಕೆಂಡ್ ಅನೇಕ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ಇನ್‌ಪುಟ್ ಅನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡುವುದು, ಜಾಬ್‌ಗಳನ್ನು ರಚಿಸುವುದು, ಪ್ರೊವೈಡರ್‌ಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವುದು, ಫಲಿತಾಂಶಗಳಿಗಾಗಿ ಪೋಲ್ ಮಾಡುವುದು ಮತ್ತು ವೈಫಲ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಒಂದು ಸುಭದ್ರ ವರ್ಕ್‌ಫ್ಲೋಗೆ ಆರು ಹಂತಗಳು ಬೇಕಾಗುತ್ತವೆ:

  • ಪ್ರಾಂಪ್ಟ್ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಿ.
  • ಅಪ್‌ಲೋಡ್ ಮಾಡಿದ ಅಸೆಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.
  • ನಿಮ್ಮ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಜಾಬ್ ರೆಕಾರ್ಡ್ ಅನ್ನು ರಚಿಸಿ.
  • ಪ್ರೊವೈಡರ್‌ಗೆ ಜಾಬ್ ಅನ್ನು ಸಬ್‌ಮಿಟ್ ಮಾಡಿ.
  • ವಿಡಿಯೋ ಸಿದ್ಧವಾಗುವವರೆಗೆ ಪ್ರೊವೈಡರ್ ಅನ್ನು ಪೋಲ್ ಮಾಡಿ.
  • ನಿಮ್ಮ UI ಗಾಗಿ ಫಲಿತಾಂಶವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಿ.

ಪ್ರೊವೈಡರ್ APIಗಳು ನಿಮ್ಮ ಇಡೀ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ಬಿಡಬೇಡಿ. ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ಅನ್ನು ಸ್ಥಿರವಾಗಿಡಲು ಅಡಾಪ್ಟರ್ ಲೇಯರ್ ಬಳಸಿ. ಇದು ನಿಮ್ಮ ಕೋರ್ ಲಾಜಿಕ್ ಅನ್ನು ಮರುಬರೆಯದೆ ಪ್ರೊವೈಡರ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ನಿಮ್ಮ ಉತ್ಪನ್ನದ ಒಪ್ಪಂದದಂತೆ (product contract) ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಒಂದು ಕೇಂದ್ರ ಜಾಬ್ ಟೈಪ್ ಅನ್ನು ರಚಿಸಿ. ಪ್ರತಿಯೊಬ್ಬ ಪ್ರೊವೈಡರ್ ಕೂಡ ತನ್ನ ಡೇಟಾವನ್ನು ಈ ಫಾರ್ಮ್ಯಾಟ್‌ಗೆ ಪರಿವರ್ತಿಸಬೇಕು.

ಮೂರು ಮೆಥಡ್‌ಗಳೊಂದಿಗೆ VideoProvider ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ:

  • submit: ಜಾಬ್ ಅನ್ನು ಪ್ರೊವೈಡರ್‌ಗೆ ಕಳುಹಿಸಿ.
  • poll: ಜಾಬ್ ಮುಗಿದಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
  • normalizeError: ಪ್ರೊವೈಡರ್ ದೋಷಗಳನ್ನು ನಿಮ್ಮದೇ ಆದ ಎರರ್ ಕೋಡ್‌ಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ.

ಇದು ಪ್ರೊವೈಡರ್‌ಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ಲಾಜಿಕ್ ಮತ್ತು UI ಇಂದ ದೂರವಿಡುತ್ತದೆ.

ಯಾವಾಗಲೂ ಕಡಿಮೆ ವೆಚ್ಚದ ಪರಿசோதனೆಗಳನ್ನು ಮೊದಲು ಮಾಡಿ. API ಕಾಲ್‌ಗಳಿಗಾಗಿ ಹಣ ಖರ್ಚು ಮಾಡುವ ಮೊದಲು ಪ್ರಾಂಪ್ಟ್‌ಗಳು ಮತ್ತು ಅವಧಿಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಿ.

ನಿಮ್ಮ ವರ್ಕರ್ ಅನ್ನು ನಿರ್ಮಿಸುವಾಗ, ಹೆಚ್ಚುತ್ತಿರುವ ವಿಳಂಬದೊಂದಿಗೆ (increasing delays) ಪೋಲಿಂಗ್ ಸ್ಟ್ರಾಟಜಿಯನ್ನು ಬಳಸಿ. ಒಂದು ಜಾಬ್ ತುಂಬಾ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತಿದ್ದರೆ, ಅದನ್ನು "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