𝗧𝗶𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 ਵਿੱਚ ਇੱਕ 𝗔𝗜 𝗩𝗶𝗱𝗲𝗼 𝗝𝗼𝗯 𝗤𝘂𝗲𝘂𝗲 ਬਣਾਉਣਾ

AI ਵੀਡੀਓ ਜਨਰੇਸ਼ਨ ਕੋਈ ਸਟੈਂਡਰਡ HTTP ਰਿਕਵੈਸਟ ਨਹੀਂ ਹੈ। ਇੱਕ ਯੂਜ਼ਰ ਇੱਕ ਪ੍ਰੋਂਪਟ (prompt) ਅਤੇ ਸੈਟਿੰਗਾਂ ਭੇਜਦਾ ਹੈ। ਨਤੀਜਾ ਆਉਣ ਵਿੱਚ ਕੁਝ ਮਿੰਟ ਲੱਗਦੇ ਹਨ।

ਤੁਹਾਡੇ ਬੈਕਐਂਡ (backend) ਨੂੰ ਕਈ ਪੜਾਵਾਂ ਨੂੰ ਸੰਭਾਲਣਾ ਪਵੇਗਾ:

  • ਇਨਪੁਟ ਦੀ ਜਾਂਚ (Validate) ਕਰੋ।
  • ਇੱਕ ਜੌਬ ਰਿਕਾਰਡ ਬਣਾਓ।
  • ਜੌਬ ਨੂੰ ਪ੍ਰੋਵਾਈਡਰ (provider) ਕੋਲ ਸਬਮਿਟ ਕਰੋ।
  • ਨਤੀਜਿਆਂ ਲਈ ਪੋਲਿੰਗ (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;
}

ਆਪਣੇ ਵਰਕਫਲੋ (workflow) ਲਈ ਇਹਨਾਂ ਵਧੀਆ ਅਭਿਆਸਾਂ (best practices) ਦੀ ਪਾਲਣਾ ਕਰੋ:

  1. ਪਹਿਲਾਂ ਸਸਤੇ ਚੈੱਕ ਕਰੋ। ਮਹਿੰਗੀਆਂ APIs ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰੋਂਪਟ ਅਤੇ ਡਿਊਰੇਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ।

  2. ਪੋਲਿੰਗ ਰਣਨੀਤੀ (polling strategy) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਵਧਦੇ ਹੋਏ ਡਿਲੇਅ (delays) ਦੇ ਨਾਲ ਇੱਕ ਲੂਪ ਲਾਗੂ ਕਰੋ।

  3. ਡਿਲੇਅ ਨੂੰ ਸੰਭਾਲੋ। ਜੇਕਰ ਕਿਸੇ ਜੌਬ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ "delayed" ਸਟੇਟਸ ਵਿੱਚ ਬਦਲ ਦਿਓ। ਬਾਅਦ ਵਿੱਚ ਡਿਲੇਅ ਹੋਈਆਂ ਜੌਬਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਵੱਖਰੇ ਵਰਕਰ ਦੀ ਵਰਤੋਂ ਕਰੋ।

  4. ਗਲਤੀਆਂ ਨੂੰ ਨਾਰਮਲਾਈਜ਼ (Normalize) ਕਰੋ। ਆਪਣੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਕਦੇ ਵੀ ਪ੍ਰੋਵਾਈਡਰ ਦੀਆਂ ਕੱਚੀਆਂ (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