TypeScript ile Bir AI Video İş Kuyruğu Oluşturmak
AI video üretimi standart bir HTTP isteği değildir. Kullanıcı bir prompt ve ayarlar gönderir. Sonucun gelmesi dakikalar sürer.
Backend sisteminiz birçok görevi yönetmelidir. Girdileri doğrulaması, işler oluşturması, sağlayıcılarla iletişim kurması, sonuçları sorgulaması (poll) ve hataları yönetmesi gerekir.
Sağlam bir iş akışı altı adım gerektirir:
- Prompt ve ayarları doğrulayın.
- Yüklenen varlıkları (assets) kontrol edin.
- Veritabanınızda bir iş kaydı oluşturun.
- İşi bir sağlayıcıya gönderin.
- Video hazır olana kadar sağlayıcıyı sorgulayın.
- Sonucu kullanıcı arayüzünüz (UI) için formatlayın.
Sağlayıcı API'lerinin tüm uygulamanızı kontrol etmesine izin vermeyin. Sisteminizi kararlı tutmak için bir adaptör katmanı kullanın. Bu, temel mantığınızı yeniden yazmadan sağlayıcıları değiştirmenize olanak tanır.
Ürün sözleşmeniz olarak işlev görecek merkezi bir iş tipi (job type) oluşturun. Her sağlayıcı, verilerini bu formata dönüştürmelidir.
Üç metod içeren bir VideoProvider arayüzü tanımlayın:
- submit: İşi sağlayıcıya gönderin.
- poll: İşin bitip bitmediğini kontrol edin.
- normalizeError: Sağlayıcı hatalarını kendi hata kodlarınıza dönüştürün.
Bu, sağlayıcı farklılıklarını faturalandırma mantığınızdan ve kullanıcı arayüzünüzden uzak tutar.
Her zaman önce düşük maliyetli kontrolleri yapın. API çağrıları için para harcamadan önce promptları ve süreleri doğrulayın.
Worker'ınızı oluştururken, artan gecikmeler içeren bir sorgulama (polling) stratejisi kullanın. Bir iş çok uzun sürerse, onu "delayed" durumuna taşıyın. İşlerin sonsuza kadar "running" durumunda kalmasına izin vermeyin. Bu gecikmiş işleri daha sonra kontrol etmek için ayrı bir süreç kullanın.
Kullanıcı arayüzünüz asla ham sağlayıcı hatalarını göstermemelidir. Dahili hata kodlarınızı kullanıcılarınız için net mesajlara eşleyin:
- queued: Videonuz başlamak için bekliyor.
- running: Videonuz oluşturuluyor.
- delayed: Bu işlem normalden uzun sürüyor.
- moderation_rejected: Promptunuzu veya varlıklarınızı değiştirmeyi deneyin.
- provider_timeout: Sağlayıcı zamanında bir sonuç döndürmedi.
Net mesajlar destek taleplerini azaltır ve kullanıcıların ne olduğunu anlamalarına yardımcı olur.
AI videoyu bir iş sistemi olarak ele alın. Kararlı bir kuyruk ve iyi bir hata taksonomisi, ürününüzün bakımını kolaylaştırır.
Kaynak: https://dev.to/miao_cunhui_587ccddb6acc1/building-an-ai-video-job-queue-in-typescript-1349
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi