Przejdź do treści
Koszyk: 1 pakiet w niewysłanym zamówieniu – dokończ zamówienie
ArtykułyAutomatyzacjaAIProces sprzedaży

Jak nie budować agenta AI. Fakap przy pierwszym agencie: cztery wpadki i 43 904 przebiegi bez jednego trafienia

Reguła, która przez 43 904 przebiegi nie doszła do głosu. Liczba zawyżona prawie dwukrotnie. Cztery wpadki techniczne z budowy agenta i jedna redakcyjna.

Zespół Partnerzy IT

Programista przy trzech monitorach: edytor kodu, schemat automatyzacji z węzłem błędu i terminal z logami
Zdjęcie wygenerowane przez AI

W pierwszej części opisaliśmy, jak działa nasz agent prowadzący wywiad z klientem. To była wersja na wywiad do gazety. Ta jest wersją z zaplecza: cztery błędy techniczne, które popełniliśmy po drodze, i jeden, który techniczny nie jest. Każdy z nich przez jakiś czas udawał poprawnie działający system – i robił to przekonująco.

Piszemy o nich, bo wszystkie są przenośne: nie dotyczą naszego kreatora, tylko każdego procesu, w którym reguły spotykają się z modelem językowym.

1. Reguła, która przez 43 904 przebiegi nie doszła do głosu

Agent wybiera kolejne pytanie z katalogu, sortując otwarte „luki” po priorytecie. W fazie drążenia problemu obowiązuje sufit liczby pytań, żeby rozmowa nie zamieniła się w przesłuchanie.

Reguła o najniższym priorytecie w tej fazie (pytanie „co już próbowaliście z tym zrobić”) nie padła ani razu w 43 904 symulowanych przebiegach. Od razu uspokajamy: nikt z nas nie klikał tego 43 904 razy. Przebiegi puszcza skrypt, nie człowiek. Przy 43 904 przebiegach zero trafień nie mogło być pechem.

Reguła nie była źle napisana. Po prostu nigdy nie dostawała kolejki. Licznik obejmował także wymianę otwierającą fazę. Reguły w tej fazie były cztery, sufit też wynosił cztery: otwarcie zjadało jeden slot i na ostatnią regułę nigdy nie starczało miejsca. Jak czwarta osoba w trzyosobowej windzie: stoi grzecznie przy drzwiach, a winda odjeżdża za każdym razem.

To nie był błąd kolejności. To był głód. Przestawianie priorytetów tylko przesuwa problem na inną regułę – wtedy przy drzwiach windy stoi ktoś inny. Naprawa polegała na uznaniu, że sufit musi wynosić liczba reguł danej fazy + 1 (dziś pięć) i na zapisaniu tego jako zasady przy samej stałej, żeby następna dołożona reguła nie zagłodziła kolejnej.

Wniosek: jeśli w systemie regułowym jakaś gałąź nigdy nie jest wybierana, nie zakładaj, że warunki są za wąskie. Policz, czy w ogóle ma szansę zostać osiągnięta.

2. Logika, której nie widział żaden test, myliła się do dnia naprawy

Rozmowa zaczyna się od pytania o zgodę. Odpowiedź trzeba zinterpretować: „jasne, pytaj” to zgoda, „dziękuję, wolę nie” to odmowa. Funkcję, która to rozstrzygała, napisaliśmy w komponencie interfejsu, czyli tam, gdzie akurat była potrzebna. Wydawało się to rozsądne.

I tam była poza zasięgiem obu naszych testów naraz: jeden chodzi po przeglądarce i nie zna funkcji, drugi testuje reguły i nie importuje komponentu. Żaden z nich jej nie sprawdzał. Efekt: od pierwszego dnia działania bramy do naprawy 24 sierpnia 2026 myliła się w obie strony. „Nie ma sprawy, pytaj” kończyło rozmowę. „Dziękuję, kończymy” jej nie kończyło. Agent kończył rozmowę, gdy klient chciał ją prowadzić, i ciągnął ją po jawnej odmowie.

Przeniesienie tej jednej funkcji do modułu z czystymi regułami (bez interfejsu, bez stanu) od razu ujawniło oba przypadki, bo dało się je opisać trzema linijkami testu.

Przy okazji ustaliliśmy zasadę na wypadek odpowiedzi niejednoznacznej: przy wątpliwości przyjmujemy, że wolno zadać kolejne pytanie. Nie ma to nic wspólnego ze zgodami na przetwarzanie danych – te zbiera osobny krok kreatora i osobne oświadczenie. Koszt pomyłki jest tu asymetryczny: nadmiarowe pytanie kosztuje jedno kliknięcie, ucięta rozmowa kosztuje cały wywiad. Granicy pilnuje npm run test:rozmowa: jawna odmowa kończy rozmowę niezależnie od tego, co rozpozna wzorzec.

Wniosek: logika, od której zależy przebieg procesu, nie powinna mieszkać w warstwie prezentacji. Nie z powodów estetycznych, tylko dlatego, że w komponencie nie da się jej przetestować niczym poza przeglądarką – a testy przeglądarkowe sprawdzają to, co widać, nie to, co rozstrzyga.

3. „12 stanowisk” jako rozjechany magazyn

Klient może opisać swój problem własnymi słowami. Rozpoznajemy w tym tekście typowe bolączki po rdzeniach słów: „zamknięcie miesiąca”, „przestój”, „przepisywanie”.

Jeden z rdzeni brzmiał stan i miał łapać rozjechane stany magazynowe. Był bardzo pracowity. Łapał także:

  • „sprzęt potrafi stanąć”, czyli awarię, nie magazyn,
  • „12 stanowisk”, czyli liczbę pracowników,
  • „stan konta”, czyli finanse, nie magazyn.

Każde takie trafienie obniżało ocenę obszaru „Dane”. Klient dostawał gorszy wynik za to, że napisał, ilu ma pracowników. Dopóki rozpoznawanie tekstu służyło tylko do dobierania pytań, fałszywe trafienie kosztowało jedno nietrafione zdanie. Od chwili, gdy zaczęło zasilać ocenę, ta sama pomyłka zaczęła kosztować wynik. Rdzenie musiały zwęzić się do form, które nie mają innego znaczenia. Każdy nowy rdzeń dokładamy dziś razem z przypadkiem testowym.

Wniosek: dopasowanie po fragmencie słowa jest wygodne dokładnie do momentu, w którym jego wynik zaczyna na coś wpływać. Zmiana zastosowania reguły jest zmianą wymagań wobec jej precyzji, nawet jeśli sama reguła się nie zmieniła.

4. Liczba zgadnięta „z zapasem w górę” była zawyżona prawie dwukrotnie

Na końcu pokazujemy klientowi, ile kosztowało nas przeprowadzenie jego wywiadu. To jest sedno całego narzędzia: dowód, że automatyzacja tego procesu jest tania, a nie deklaracja, że jest.

Koszt odczytu strony stał tam przez jakiś czas jako 25 groszy: wartość wpisana z głowy, „z zapasem w górę”, zanim ktokolwiek ją zmierzył. Zapas w górę wydawał się bezpieczny: lepiej zawyżyć niż zaniżyć. Tak przynajmniej mówi intuicja, która, jak się okazało, nie miała dostępu do cennika.

Pomiar dał 13,4 grosza. Zgadywanka była zawyżona prawie dwukrotnie. Narzędzie, które miało dowodzić, że automatyzacja jest tania, pokazywało więc, że jest droższa, niż jest. Trudno o zgrabniejszy strzał we własną stopę.

Przy liczbie podawanej jako dowód kierunek odchylenia nie ma żadnego znaczenia. Zawyżona liczba nie jest ostrożna. Jest po prostu nieprawdziwa, tylko w drugą stronę. Dziś obie kwoty pochodzą z konkretnych wykonań workflow, z datą pomiaru i identyfikatorem przebiegu. Koszt odczytu strony ma przy sobie także numery pojedynczych wykonań. Przy stałych stoi notatka, że zmiana modelu albo cennika unieważnia wynik.

Wniosek: w materiale sprzedażowym oszacowanie i pomiar wyglądają identycznie. Różnią się dopiero wtedy, gdy ktoś zapyta, skąd ta liczba.

Piąta, najtrudniejsza: czyj to jest cytat

Piąty błąd nie jest techniczny i żaden test go nie wykryje.

Zdanie o tym, czym firma się zajmuje, układa model na podstawie treści jej strony. Przez pewien czas pokazywaliśmy je w cudzysłowie, pod nagłówkiem „Tak nazwadomeny.pl opisuje Waszą firmę”. Formalnie prawie prawda, bo treść pochodziła ze strony. Praktycznie: wypowiedź modelu podawaliśmy jako wypowiedź cudzej witryny. Różnica przestaje być akademicka, gdy model streści slogan i zabrzmi to jak przechwałka. Wtedy w cudzysłowie stoi zdanie, którego nikt nie napisał, przypisane komuś, kto go nie powiedział.

Dziś ten blok mówi „Tak to zrozumieliśmy”, a tekst stoi w zwykłym akapicie. Cudzysłów zarezerwowaliśmy dla prawdziwych cytatów i wtedy jest podpisany źródłem.

Wspólny mianownik

Wszystkie pięć błędów łączy jedno: system działał. Nie rzucał wyjątkiem, nie zapalał się na czerwono, przechodził testy. Mylił się cicho i z pełnym przekonaniem. A cichy błąd w procesie, który rozmawia z klientami, może działać bardzo długo, zanim ktokolwiek zauważy.

Dlatego jedyną odpowiedzią, jaką znaleźliśmy, jest wyprowadzanie każdej decyzji do miejsca, w którym daje się ją sprawdzić osobno – i mierzenie każdej liczby, którą pokazujemy komuś na ekranie. Także tych, które „na pewno są z zapasem”.

Artykuły

Porozmawiajmy o Twoim IT

Bezpłatna konsultacja: 30 minut rozmowy o tym, co dziś boli najbardziej albo co chcesz zmienić w Twojej infrastrukturze, systemie ERP lub procesach. Bez prezentacji sprzedażowej, za to z konkretnymi rekomendacjami, co możemy poprawić…

Pytania do tego wpisu

Czy te błędy dotyczą wyłącznie systemów z AI?

Nie. Cztery z pięciu zdarzyłyby się bez modelu: zagłodzona gałąź, logika ukryta w warstwie prezentacji, dopasowanie po fragmencie słowa i liczba zgadnięta zamiast policzonej. Model sprawia jedynie, że skutek trudniej zauważyć, bo odpowiedź zawsze wygląda sensownie, także wtedy, gdy powstała na złych danych.

Jak wykryć regułę, która nigdy nie odpala?

Policzyć, czy w ogóle ma szansę zostać osiągnięta, zamiast szukać błędu w jej warunkach. U nas sufit fazy równał się liczbie reguł, a licznik obejmował dodatkowo wymianę otwierającą – więc ostatnia reguła nie miała dokąd wejść. To jest głód, a nie zła kolejność, i przestawianie priorytetów tylko przesuwa go na inną regułę.

Dlaczego ostrożne zawyżenie liczby jest błędem?

Bo przy liczbie podawanej jako dowód kierunek odchylenia nie ma znaczenia. Zawyżona wartość nie jest ostrożna, tylko nieprawdziwa w drugą stronę. Nasza zgadywanka wynosiła 25 groszy, a pomiar 13,4 grosza, czyli prawie dwa razy mniej.

Gdzie przebiega granica między wypowiedzią modelu a cytatem?

Cudzysłów zostawiliśmy dla prawdziwych cytatów, podpisanych źródłem. Zdanie ułożone przez model stoi w zwykłym akapicie, pod nagłówkiem mówiącym, że tak to zrozumieliśmy. Różnica przestaje być akademicka wtedy, gdy model streści slogan i zabrzmi to jak przechwałka.

Skąd pewność, że dziś takich błędów już nie ma?

Nie ma takiej pewności i nie twierdzimy inaczej. Wszystkie pięć wpadek łączy to, że system działał: nie rzucał wyjątkiem i przechodził testy. Jedyną odpowiedzią, jaką znaleźliśmy, jest wyprowadzanie każdej decyzji do miejsca, w którym da się ją sprawdzić osobno, i mierzenie każdej liczby pokazywanej na ekranie.

Zadzwoń: +48 61 200 21 2130 min. bezpłatna konsultacja