BEAM

Seedlight BEAM: nasz framework wdrażania, automatyzacji i rozwoju platform eCommerce →

← Wszystkie artykuły
AI EngineeringSzymon Żynda9 min czytania

Agent zrobił dokładnie to, co napisaliśmy: dlaczego automatyzacje AI zawodzą po cichu

Automatyzacja AI rzadko psuje się głośno. Wykonuje instrukcję dosłownie, a nie zgodnie z intencją, i ten sam defekt ląduje w każdym wyniku. Trzy zmierzone przypadki z naszej pracy i przełożenie na opisy, atrybuty i feedy.

Automatyzacja AI rzadko psuje się głośno. Nie wyrzuca błędu, nie zatrzymuje importu, nie budzi nikogo w nocy. Kończy się sukcesem i oddaje wynik, który wygląda dobrze. Problem polega na tym, że model wykonał instrukcję dosłownie, a instrukcja znaczyła co innego, niż miał na myśli jej autor.

Kluczowe wnioski

  • Automatyzacje AI rzadko psują się głośno. Model wykonuje instrukcję dosłownie, więc dwuznaczny zapis daje ten sam defekt w każdym wyniku, a każdy wynik z osobna wygląda poprawnie.
  • Nasz przypadek: zdanie „jedna tabela albo jedna lista” miało znaczyć proporcję, agenci odczytali twardy limit. Efekt: 10 rozdziałów z 12 bez ani jednej listy i 31 akapitów powyżej 700 znaków, przez tydzień bez zgłoszenia.
  • W sklepie ten sam mechanizm dotyka opisów, atrybutów i feedów. „Zwięzły opis” i „uzupełnij braki” to życzenia; instrukcją jest zakres znaków, słownik wartości i polecenie „braki oznacz jako BRAK, nigdy nie zgaduj”.
  • Naprawiają to trzy rzeczy: jedna nazwa i jedno znaczenie, sprawdzalne kryterium zamiast przymiotnika oraz pomiar próbki, zanim uwierzysz, że proces działa.

O modelach mówi się, że „rozumieją”. Nie rozumieją, tylko wykonują. Ta różnica jest niewidoczna, dopóki instrukcja jest jednoznaczna, i kosztowna w momencie, gdy przestaje być. Niżej trzy defekty, które zmierzyliśmy u siebie, i to samo zjawisko przełożone na katalog, atrybuty i feedy w sklepie.

Warto rozdzielić dwa rodzaje awarii, bo bronisz się przed nimi zupełnie inaczej:

  • Awaria głośna: skrypt kończy się błędem, import staje, kolejka rośnie. Widać ją tego samego dnia i ktoś ją naprawia.
  • Awaria cicha: proces kończy się sukcesem, dane wyglądają sensownie, a mimo to każdy wynik ma ten sam defekt. Widać ją dopiero w zestawieniu, o ile ktoś je w ogóle zrobi.

Defekt 1: jedno dwuznaczne zdanie w briefie

Rozdziały przewodników piszemy z pomocą agentów. W briefie redakcyjnym stało zdanie: „jedna tabela albo jedna lista”. Intencją była proporcja, czyli nie zaśmiecaj tekstu wyliczeniami. Agenci odczytali to jako twardy limit i zrobili dokładnie to, co przeczytali.

Skalę zobaczyliśmy dopiero po policzeniu skryptem:

  • 10 rozdziałów z 12 nie miało ani jednej listy.
  • 31 akapitów przekraczało 700 znaków.
  • Jeden rozdział miał 20 akapitów powyżej 600 znaków na 24 wszystkie.

Najciekawsze jest to, dlaczego przez tydzień nikt tego nie zgłosił. Każdy tekst z osobna wyglądał poprawnie: spójny, rzeczowy, bez błędów. Defekt istniał wyłącznie w zestawieniu, a zestawienia nikt nie robi, dopóki nie ma powodu. Dwuznaczny zapis nie zepsuł jednego rozdziału. Zepsuł całą serię, w tę samą stronę i z tego samego powodu.

Defekt 2: jedna nazwa, trzy znaczenia

Drugi defekt jest jeszcze cichszy, bo nie zostawia śladu w tekście, tylko w zachowaniu. W naszym otwartym zestawie skilli dla agentów argument --profile znaczył trzy różne rzeczy w trzech miejscach: raz zestaw reguł walidacji, raz typ asortymentu, raz ścieżkę do pliku konfiguracyjnego.

Człowiek w takiej sytuacji dopytuje. Agent nie dopytuje: bierze najbardziej prawdopodobne znaczenie i idzie dalej. Wynik jest formalnie poprawny i inny niż zamierzony, a komunikat o błędzie nie pojawi się nigdy, bo z punktu widzenia narzędzia nic złego się nie stało.

Poprawka była nudna i skuteczna: jedna nazwa, jedno znaczenie w całym zestawie, a dla osobnych pojęć osobne nazwy. Kolizja nazw to najtańszy do usunięcia rodzaj cichego defektu i jednocześnie najczęściej przeoczony, bo nazwy dobiera się mimochodem, a potem żyją w kilku plikach naraz.

Defekt 3: bez pomiaru masz opinię, nie dane

Defekt pierwszy nie wyszedł z żadnego alertu. Wyszedł dlatego, że człowiek przeczytał tekst i powiedział: „słabo się to czyta”. Dopiero wtedy policzyliśmy długości akapitów, liczbę list i liczbę śródtytułów. Wrażenie zamieniło się w zadanie w momencie, w którym dostało liczby.

APPROVED WITHOUT EDITS · BY BATCH54%B163%B271%B378%B483%B587%B6typical tuning curve: reviewer corrections feed back into the rules

Przy okazji jedno polecenie znalazło 57 niedomkniętych cudzysłowów w trzech dokumentach: znak otwierający „ bez pary domykającej. Takiego błędu oko nie łapie przy czytaniu, a powtarza się w każdym pliku, który powstał tym samym procesem. Sprawdzenie zajęło minutę i wcześniej po prostu nie istniało, bo nikt nie pomyślał, żeby je zrobić.

Reguła kciuka: dopóki nie masz liczby, masz opinię. Brak zgłoszeń nie jest dowodem jakości, tylko dowodem na to, że nikt jeszcze nie policzył.

To samo dzieje się w operacjach sklepu

Rozdział przewodnika to niska stawka. W sklepie ten sam mechanizm dotyka opisów, atrybutów i feedów, czyli danych, które klient widzi i po których decyduje o zakupie. Nieprecyzyjna reguła nie psuje jednego produktu. Psuje wszystkie naraz, w każdym kanale, do momentu aż ktoś ją poprawi.

Opisy produktów: „zwięzły” to życzenie, nie instrukcja

„Opis ma być zwięzły i sprzedażowy” brzmi jak polecenie, a jest życzeniem: nie da się go sprawdzić skryptem ani rozstrzygnąć nim sporu. Agent, który dostaje przymiotnik, sam ustala jego wartość, i ustala ją inaczej dla wiertarki, a inaczej dla kolczyków.

Instrukcją staje się to dopiero z kompletem czterech rzeczy:

  • Zakres: od 400 do 600 znaków, trzy akapity, pierwsze zdanie z konkretną korzyścią.
  • Pola wymagane: materiał, wymiary, kraj produkcji, sposób pielęgnacji, o ile są w karcie produktu.
  • Twierdzenia zakazane: zdrowotne, medyczne, „najlepszy na rynku” i wszystko, czego nie ma w danych źródłowych.
  • Dwa przykłady: jeden opis dobry i jeden zły, plus jedno zdanie, dlaczego zły jest zły.
DESCRIPTION WORKFLOW · NOT A CHAT WINDOWproductattributesbrand rulesvoice, structuregeneratebatch of SKUhuman reviewapprove / editpublishstore + channelsevery edit teaches the rulesgeneration happens inside the platform, on your data, behind a review gate

Ostatni punkt jest najtańszy i najczęściej pomijany. Model trafia w intencję znacznie lepiej z jednego przykładu negatywnego niż z trzech akapitów wytycznych, bo przykład rozstrzyga przypadki brzegowe, których wytyczna nie przewidziała. Jak taki komplet reguł wygląda w całości, rozłożyliśmy w tekście o opisach produktów tworzonych z AI.

Atrybuty: czarny, black i BLK to trzy wartości

Weź eksport z ERP: kilka tysięcy wierszy i kolumna „kolor”, a w niej czarny, black, BLK, czerń i ciemny. Dla człowieka to jeden kolor. Dla filtra w sklepie, dla feedu i dla agenta to pięć osobnych wartości, dopóki ktoś nie zapisze, która jest kanoniczna i co zrobić z resztą.

Słownik wartości rozstrzyga trzy rzeczy naraz:

  • Wartość kanoniczna: do katalogu trafia „czarny” i tylko ta forma.
  • Synonimy: black, BLK i czerń mapują się na „czarny”, zamiast zakładać nową pozycję w filtrze.
  • Brak danych: pusta komórka zostaje pusta i trafia na listę do uzupełnienia, zamiast dostać kolor wywnioskowany z nazwy produktu.
CATALOG CSV · MESSY EXPORT TO CLEAN ROWSRAW EXPORTS,M,L in one cellEAN checksum?42cm / 0,42 mbroken encodingquotes, separatorsduplicates, gapsCLAUDE CODEsplit variantsvalidate GTINnormalize unitsfix encodinggenerate slugsflag dupes + gapsworks on the file, not a chatCLEAN CATALOGone row per variantvalid check digitsone unit formatclean UTF-8unique slugsflagged for reviewwork on a copy · review the diff before you save · no secrets in the file

Bez słownika agent zgadnie, i w większości wierszy zgadnie sensownie. To gorsze niż zgadnięcie źle wszędzie, bo błąd rozproszony po katalogu jest trudniejszy do zauważenia niż błąd konsekwentny. Dlaczego uporządkowane dane są warunkiem wstępnym każdej automatyzacji, opisujemy w rozdziale przewodnika o danych jako warunku wstępnym.

Feedy: napisz wprost, co robić z brakiem danych

Specyfikacja feedu to miejsce, w którym cicha awaria kosztuje najszybciej, bo dane idą prosto do kanału sprzedaży. Trzy rzeczy muszą być w niej zapisane wprost: limit długości tytułu, pola wymagane w danym kanale i postępowanie przy braku danych.

Ostatnie jest najważniejsze i najczęściej pominięte. Agent z poleceniem „uzupełnij brakujące dane” uzupełni je wartością, która brzmi prawdopodobnie, bo dokładnie o to został poproszony. Agent z poleceniem „braki oznacz jako BRAK, nigdy nie zgaduj” odda katalog z dziurami i listę do uzupełnienia. Druga wersja wygląda gorzej w raporcie i jest jedyną, która nie wprowadza klienta w błąd.

Różnicę między życzeniem a instrukcją widać najlepiej wierszami:

Zapis w briefieCo zrobi agentZapis, który działa
„Opis ma być zwięzły”Raz 200 znaków, raz 2000, zależnie od produktu„Od 400 do 600 znaków, trzy akapity”
„Uzupełnij brakujące dane”Wstawi wartość, która brzmi prawdopodobnie„Braki oznacz jako BRAK, nigdy nie zgaduj”
„Kolor jak w źródle”Przepisze czarny, black i BLK jako trzy wartości„Kolor wyłącznie ze słownika wartości”
„Tytuł ma być krótki”W części wierszy przekroczy limit kanału„Tytuł maks. 120 znaków, marka na początku”

Przymiotnik zostawia decyzję modelowi. Liczba i słownik zostawiają ją Tobie.

Efekt skali działa w obie strony

Praca ręczna produkuje błędy pojedyncze i losowe: człowiek myli się nieregularnie i za każdym razem trochę inaczej. Automat produkuje błędy systemowe: ten sam błąd w każdym wierszu, konsekwentnie i bez wyjątków. To jednocześnie największa zaleta automatyzacji i jej największe zagrożenie.

Dwie strony tej samej właściwości:

  • Zaleta: jedna poprawka reguły naprawia cały zbiór, bo błąd ma jedno źródło. Ręcznych pomyłek nie da się naprawić hurtem, trzeba je znaleźć po kolei.
  • Zagrożenie: do momentu poprawki ten sam błąd widzi każdy klient, na każdej karcie produktu i w każdym kanale, który zdążył zaciągnąć feed.

Dlatego przy automatyzacji opłaca się przenieść uwagę z pojedynczego wyniku na regułę, która go wyprodukowała, i na próbkę, którą ktoś obejrzy przed uruchomieniem całości. Jak liczyć oszczędność z takiego procesu, rozkładamy w anatomii oszczędności automatyzacji, a sam moment zatwierdzania opisujemy jako człowieka w pętli.

Instrukcja dla agenta to interfejs, nie notatka

Notatkę czyta się z dobrą wolą i resztę się domyśla. Interfejs wykonuje się dosłownie i zwraca dokładnie to, co w nim napisano. Instrukcja dla agenta należy do drugiej kategorii, więc pisze się ją jak kontrakt, a nie jak wiadomość do kolegi z zespołu, który zna kontekst.

Trzy rzeczy usuwają większość cichych defektów:

  • Zdefiniowany słownik: jedna nazwa, jedno znaczenie w całym procesie, a wartości pochodzą ze słownika, nie z głowy modelu.
  • Sprawdzalne kryterium zamiast przymiotnika: nie „ma być czytelne”, tylko liczba, którą policzysz skryptem: długość, liczba pól, dopuszczalne wartości.
  • Pomiar próbki, zanim uwierzysz, że działa: sto wierszy albo dwanaście tekstów wystarczy, żeby zobaczyć defekt systemowy. Bez tego nie wiesz, czy masz jakość, czy tylko brak zgłoszeń.

Uczciwie: to nie jest tekst o tym, że AI nie działa. Wąskim gardłem nie jest model, tylko precyzja tego, co mu dajesz. Dobra wiadomość jest taka, że precyzję da się poprawić w jedno popołudnie, a modelu nie.

Ten sam mechanizm opisywaliśmy wcześniej od strony kodu, gdzie wąskim gardłem jest weryfikacja, a nie pisanie. W danych produktowych działa identycznie, tylko defekt jest cichszy, bo dane nie mają typów ani testów, dopóki ktoś ich nie dopisze. U nas ta warstwa, czyli słowniki, reguły i kontrole na próbce, jest częścią etapu AI Automation i wchodzi do platformy razem z automatyzacją, którą pilnuje. Nie gwarantuje bezbłędności. Skraca czas między błędem a jego zauważeniem, i o to w tym rzemiośle chodzi.

FAQ

Skąd mam wiedzieć, że automatyzacja AI działa źle, skoro nie zgłasza błędu?

Policz próbkę. Weź od 50 do 100 wyników i sprawdź mierzalne cechy: długość, obecność wymaganych pól, wartości spoza słownika. Cichy defekt widać w zestawieniu, nigdy w pojedynczym wyniku.

Czy lepszy model rozwiąże ten problem?

Tylko częściowo. Mocniejszy model celniej zgaduje intencję, ale nadal zgaduje. Dwuznaczna reguła i jedna nazwa o trzech znaczeniach zostają dwuznaczne niezależnie od tego, kto je czyta.

Jak zapisać regułę, żeby agent jej nie nagiął?

Zamień przymiotnik na liczbę, wypisz dopuszczalne wartości i dodaj jeden przykład dobry oraz jeden zły. Potem napisz, co robić przy braku danych: oznaczyć jako BRAK, nigdy nie zgadywać.

Czy to znaczy, że każdą automatyzację trzeba sprawdzać ręcznie?

Nie każdą i nie zawsze. Próbkę sprawdzasz przy uruchomieniu i po każdej zmianie reguł, a kontrole stałe automatyzujesz: długość, słownik, braki. Człowiek zostaje tam, gdzie decyzja jest kosztowna albo nieodwracalna.

Dziennik

Szymon Żynda

Współzałożyciel Seedlight · platformy eCommerce, AI, SEO i GEO

Więcej od tego autora

Newsletter

Dziennik prosto na skrzynkę

Nowe wpisy i wnioski z realnych wdrożeń, co jakiś czas. Zero spamu, wypisujesz się jednym kliknięciem.