Poprosiłem LLM o poprawienie źle zapisanych nazw. Zamiast tego zmienił nazwę produktu.
Mój AI clipper poprawia nazwy własne w transkrypcjach. W jednym filmie zamienił nieznaną nazwę modelu na nazwę konkurenta. Dlaczego i jak to naprawiłem.
28 września 2026
Utworzono: 28 września 2026 · Zaktualizowano: 28 września 2026
Katto to AI-owy clipper wideo. Wrzucasz długi film, a on wycina z niego najlepsze momenty jako pionowe shorty i pisze do nich napisy. Buduję go sam, publicznie. Ten tekst dotyczy funkcji, którą reklamuję na stronie z cennikiem i którą przyłapałem na tym, że po cichu robi dokładnie odwrotnie, niż powinna.
Problem, który rozwiązywałem
Zamiana mowy na tekst świetnie radzi sobie ze słowami i fatalnie z nazwami. Whisper słyszy markę, której nigdy wcześniej nie spotkał, i zapisuje ją fonetycznie. "Trump" wychodzi jako "trompe". "Suárez" wychodzi jako "Suares". "ChatGPT" wychodzi jako "chatgépété". We francuskim filmie o piłce nożnej naliczyłem kiedyś dziewięćdziesiąt osiem takich przypadków w jednej transkrypcji.
Napisy z pokaleczonymi nazwami wyglądają niechlujnie, a są najbardziej widoczną częścią klipu. Dodałem więc krok korekty: po transkrypcji tekst trafia do małego modelu językowego z jedną instrukcją, znajdź nazwy własne zapisane fonetycznie i popraw ich pisownię. Kosztuje to około centa na film. Poprawiło te dziewięćdziesiąt osiem przypadków.
Co faktycznie poszło na produkcję
W zeszłym tygodniu użytkownik przepuścił przez Katto francuski film o dużych modelach językowych. Prowadzący cały czas mówił o modelu o nazwie JEV. Whisper usłyszał to i zapisał "Jev", czyli na tyle blisko, że nikt by nawet nie mrugnął.
Klipy wyszły z tytułami "Dlaczego Jamba jest przereklamowana" oraz "Jamba: rewolucja i przereklamowanie naraz". W napisach było Jamba. W opisach było Jamba.
Jamba to prawdziwy duży model językowy, stworzony przez AI21. Po prostu nie ten z filmu.
Sprawdziłem, co zapisał pipeline. W zarchiwizowanej transkrypcji "Jev" pojawiło się dwa razy, a "Jamba" ani razu. Na każdym kolejnym etapie było "Jamba" i nigdy "Jev": w ocenionych kandydatach, w metadanych klipów, w puli klipów, łącznie dwadzieścia cztery wystąpienia. Transkrypcja była poprawna. Zepsuło ją to, co dodałem, żeby ją chronić.
Dlaczego model to zrobił
Zrobił dokładnie to, co robi pomocny asystent. Film jest o modelach językowych. "Jev" to nie jest model, który zna. "Jamba" to model, który zna, a jedno od drugiego nie jest znowu tak daleko, jeśli zmrużyć oko. W tym kontekście zamiana jednego na drugie wygląda jak poprawka, a nie jak zmyślenie.
To jest tryb awarii, przed którym nikt nie ostrzega przy tego typu zadaniach. Sprawdzanie pisowni, które nie rozpoznaje słowa, zostawia je w spokoju. Model językowy, który nie rozpoznaje słowa, sięga po najbliższe słowo, które rozpoznaje, a im więcej ma wiedzy dziedzinowej, tym pewniejsze i tym bardziej błędne jest to sięgnięcie. Mój korektor był gorszy w rzadkich nazwach właśnie dlatego, że był dobry w popularnych.
To, co zabolało najbardziej
Już wcześniej o tym pomyślałem. W prompcie było, wielkimi literami:
Poprawiaj WYŁĄCZNIE pisownię i wielkość liter. NIGDY nie zastępuj nazwy INNĄ nazwą. Wymyślenie prawdopodobnej, ale błędnej nazwy jest GORSZE niż pozostawienie nietypowej nazwy bez zmian. […] NIE zgaduj bardziej znanej nazwy na podstawie kontekstu.
Trzy zdania, jednoznaczne, napisane specjalnie po to, żeby zapobiec temu, co się stało. Model je przeczytał i i tak zmienił nazwę produktu.
Nie uważam, żeby prompt był źle sformułowany, i nie sądzę już, żeby lepszy cokolwiek dał. Proszenie modelu, żeby nie robił czegoś, do czego ma skłonność, to prośba, a nie ograniczenie. Działa przez większość czasu, co jest gorsze niż niedziałanie nigdy, bo przestajesz sprawdzać.
Co zrobiłem zamiast tego
Reguła wyprowadziła się z promptu do kodu. Model nadal proponuje poprawki; funkcja decyduje teraz, czy każda z nich to poprawka pisowni, czy zmiana nazwy, i po cichu odrzuca te drugie.
Test jest celowo prymitywny: usuń z obu ciągów wielkość liter i znaki diakrytyczne, a potem zmierz, ile z oryginału przetrwało w zamienniku. Powyżej 0.6 to ta sama nazwa zapisana inaczej. Poniżej to inna nazwa.
- 0.90 · rousse peter → rouspéter · zachowane
- 0.83 · Suares → Suárez · zachowane
- 0.82 · chatgépété → ChatGPT · zachowane
- 0.73 · trompe → Trump · zachowane
- 0.53 · nouillène → Nguyen · odrzucone
- 0.31 · mistral → Gemini · odrzucone
- 0.25 · jev → Jamba · odrzucone
Każda poprawka z mojego zestawu testowego przechodzi. Część uzasadnionych poprawek nie przejdzie: piąta linijka to prawdziwy przypadek. Francuz mówiący "Nguyen" jest słyszany jako "nouillène", oba ciągi po usunięciu znaków diakrytycznych nie mają ze sobą prawie nic wspólnego, a zabezpieczenie wyrzuca teraz tę poprawkę do kosza. To samo spotka zlatynizowane japońskie nazwiska i skrótowce literowane w innym języku.
Wybrałem tę stronę. Dziwna nazwa pozostawiona bez zmian jest widoczna, a czytelnik może się domyślić, o co chodziło. Błędna nazwa nie jest widoczna i nikt się nie domyśli. Odrzucenia są logowane wraz z oboma ciągami, bo odrzucenie oznacza, że model właśnie próbował coś przemianować, a to warto zobaczyć.
Wnioski
Reguła, którą model może zignorować, nie jest regułą. Jeśli ograniczenie ma znaczenie, jego miejsce jest w kodzie, który uruchamia się po modelu, a nie w akapicie, który model czyta. Prompty wyrażają intencję. Nie egzekwują jej.
Patrz na kierunek poprawki, nie tylko na to, że jest. Miałem metryki na tym kroku: ile poprawek robi na film. Dziewięćdziesiąt osiem wyglądało na zdrową liczbę. Nic nie mierzyło, czy poprawka przybliżyła tekst do prawdy, czy od niej oddaliła, a zła poprawka jest nie do odróżnienia od dobrej, jeśli liczysz tylko sumę.
Pipeline, który zapisuje wejście i wysyła wyjście, może cię okłamać dwa razy. W zarchiwizowanej transkrypcji było "Jev", a w każdym dostarczonym klipie "Jamba". Gdybym przeczytał tylko archiwum, uznałbym, że pipeline działa dobrze. Liczy się sprawdzenie tego, co wyszło na zewnątrz.
Pewność siebie jest częścią tej awarii. Korektor, który zostawia nieznaną nazwę w spokoju, produkuje widoczne, nieszkodliwe dziwactwo. Taki, który ją podmienia, produkuje czysty, płynny, błędny tekst, którego nikt nie kwestionuje, łącznie ze mną, dopóki osoba, która nagrała film, nie przeczyta własnych napisów.
Zabezpieczenie trafiło na produkcję tego samego dnia. Jeśli obrabiasz film o czymś niszowym i Katto zostawia nietypową nazwę dokładnie tak, jak ją usłyszało, to jest teraz działanie celowe.
<<>>Related articles
Gotowy, aby zamienić swoje filmy w wiralowe klipy?
Katto automatycznie wycina klipy, dodaje napisy i przekadrowuje Twoje długie filmy w treści krótkie.
Wypróbuj Katto za darmo →