Egy videomodell többet fogad el, mint egy promptot. Némelyik elfogad egy első és egy utolsó képkockát. Némelyik elfogad egy maroknyi referenciaképet. Némelyik elfogad egy referenciaklipet, és emiatt másképp viselkedik — elnémítja a saját hangsávját, vagy a klip hosszát veszi az eredmény hosszaként. Némelyik elfogad egy referencia hangklipet. Minden modell másképp rajzolja meg ezt a borítékot, és a mieink többsége csak annak egy részét küldte.
Most van egy egyetlen hely, amely leírja minden modell borítékát: hány kép, engedélyezett-e egy klip és hány másodpercig, elfogadható-e a hang, szüksége van-e a hangnak egy mellette lévő képre, elnémítja-e egy klip a modell saját hangját, meghatározza-e egy klip a hosszúságot. Ezt a szolgáltatók saját dokumentációjából olvasták ki, majd ugyanazon a napon valódi renderelésekkel, valódi kulcsokkal tesztelték — így találták meg az alábbi két pontot.
Kiterjesztés nélküli fájl
Egy klip átadása a modellnek linken keresztül a nyilvánvaló út. Ez néhánynál nagyon nehezen kitalálható módon hibázik: a fájl kiterjesztés nélkül érkezik, a modell pedig kiterjesztés szerint validál, így elutasít egy teljesen jó mp4-et, mert állítólag nem mp4. Ugyanazok a bájtok inline elküldve mindenhol elfogadottak voltak. Így most minden klipet előbb újrakódolnak egy szabványos formátumba, és inline küldenek el, egy méretfelső korláttal, amely felett a linkes út mégis használatban marad, figyelmeztetéssel.
Egy szint, amelyet senki sem kapott meg ténylegesen
A második ügy pénzbe került az ügyfeleknek. Az egyik videomodellnek egyáltalán nincs felbontásmezője — a minőségi szintjét egy másképp elnevezett mező állítja be —, és az előtte lévő platform csendben eldobta a mezőket, amelyeket nem ismert fel. Így minden renderelés ezen a modellen az hozzáadása óta az alapértelmezett szintre tért vissza, miközben az ügyfél a magasabb szintért fizetett. Semmi sem hibázott. A videó megérkezett. Csak nem az volt a videó, amelyet kiszámláztak.
A szintet most a ténylegesen árazott felbontásból vezetik le, és egy szonda erősíti meg.
A Seedance közvetlen pályára vált
Ugyanabban az időszakban a teljes Seedance család átváltott az aggregátorról a szolgáltató saját API-jára, az aggregátort tartalékként megtartva. Egy modellsor, egy név, két díjkészlet — és az az ár, amelyet felajánlanak neked, az, amit ténylegesen fizetsz, akkor is, ha az elsődleges pálya meghibásodik, és a tartalék fut, a főkönyv pedig rögzíti, melyik pálya végezte el ténylegesen a munkát, hogy a saját árrésszámviteltünk az igazságot olvassa, ne az ajánlatot.
Egy dolog, amit felhasználóként tudni kell: amikor egy referenciaklipet csatolsz ezen a pályán, a szolgáltató a klip másodperceit az eredmény másodpercei tetejére számlázza. Az űrlapon lévő becslés ezt mondja, a futtatás előtt megadott szám pedig az a szám, amelyet kiszámláznak.
Az útka észrevett dolgok
Három API-kliensből hiányzott az az egyetlen attribútum, amely láthatóvá tesz egy szolgáltató nevét viselő osztályt a konténerünkben. Kettő közülük szövegből beszéddé alakító kliens volt, láthatatlan azóta, hogy hozzáadták őket — ez az oka annak, hogy a katalógusba vetett két hang soha nem tudott ténylegesen kiszolgálni. Egy reflexiós teszt most elbuktatja a buildet a következő ilyen mulasztásnál, ahelyett hogy megvárná, amíg valaki észreveszi, hogy egy hang semmit sem csinál.
És az előző nap kiadott webes keresési oldal minden szinten 403-mal válaszolt, weben és mobilon egyaránt. Egy szülő jogosultság zárja le; mindkét szerepkör-mag csak annak három gyermek jogosultságát adta meg, és sehol sem következtetnek szülőre a gyermekekből. Négy másik funkció valamikor kézzel javította ezt. Most van egy ellenőrzés, amely végigmegy a jogosultsági fán, és ott bukik el, ahol egy szolgáltatás olyan jogosultsággal van lezárva, amelyet egyetlen szerepkör sem birtokol.