Kujenga Foleni ya Kazi ya Video ya AI katika TypeScript
Uzalishaji wa video za AI si ombi la kawaida la HTTP. Mtumiaji hutuma maelekezo (prompt) na mipangilio. Matokeo huchukua dakika kadhaa kufika.
Backend yako lazima ishughulikie hatua kadhaa:
- Thibitisha ingizo (input).
- Tengeneza rekodi ya kazi.
- Tuma kazi kwa mtoa huduma (provider).
- Fuatilia matokeo (poll).
- Shughulikia makosa.
- Onyesha hali kwa mtumiaji.
Unapaswa kutumia foleni (queue) na tabaka la kiunganishi (adapter layer). Hii inazuia kodi maalum ya mtoa huduma isiharibu programu yako nzima.
Define aina kuu ya kazi (core job type) ili itumike kama mkataba wa bidhaa yako.
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;
};
Tumia interface kwa ajili ya watoa huduma wako. Hii inafanya mantiki ya mfanyakazi (worker logic) kuwa safi.
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;
}
Fuata mbinu bora hizi kwa mtiririko wako wa kazi (workflow):
Fanya ukaguzi rahisi kwanza. Thibitisha maelekezo (prompts) na muda kabla ya kuita API ghali.
Tumia mkakati wa kufuatilia (polling strategy). Tekeleza mzunguko (loop) wenye ucheleweshaji unaoongezeka.
Shughulikia ucheleweshaji. Ikiwa kazi inachukua muda mrefu sana, ihamishe kwenye hali ya "delayed". Tumia mfanyakazi (worker) tofauti kukagua kazi zilizochelewa baadaye.
Uwianishe makosa (normalize errors). Usionyeshe makosa ghafi ya mtoa huduma kwa watumiaji wako. Badilisha makosa ya kiufundi kuwa ujumbe unaoeleweka na binadamu.
Mifano ya ujumbe kwa mtumiaji:
- "queued": Video yako inasubiri kuanza.
- "running": Video yako inazalishwa.
- "delayed": Hii inachukua muda mrefu kuliko kawaida.
- "moderation_rejected": Ombi hili haliwezi kuchakatwa.
Chukulia video za AI kama mfumo wa kazi. Foleni thabiti na mfumo wa makosa ulio wazi hufanya bidhaa yako iwe rahisi kudumisha na kukuza (scale).
Source: https://dev.to/miao_cunhui_587ccddb6acc1/building-an-ai-video-job-queue-in-typescript-1349