Automatyzacje8 min czytania

Kolejka zadań AI: jak ustawić priorytety, limity i ponowienia, żeby automatyzacja nie robiła sobie korka

Jak projektować kolejkę zadań AI: priorytety, limity, backoff, ponowienia i odbiór. Praktyczny przewodnik bez pętli i kosztownych korków.

Białe krążki i jeden czerwony krążek na ciemnej planszy z rowkami
Białe krążki i jeden czerwony krążek na ciemnej planszy z rowkamiIlustracja koncepcyjna: Aeneia

Codziennie o 9:00 system wysyła raporty, analizuje skrzynkę i przelicza leady. O 9:01 dostaje limit, więc wszystkie zadania ponawia jednocześnie. O 9:02 limit jest znowu przekroczony, ale za to w pełni zautomatyzowany. Kolejka ma zapobiegać takiemu korkowi, a nie tylko ładnie go wizualizować.

Dobra kolejka wie, co jest pilne, ile pracy można wykonać i kiedy przestać ponawiać. Zachowuje identyfikator zadania, stan i skutek. AI jest jednym z zależnych zasobów, a nie magicznym pracownikiem, którego można wołać w nieskończoność.

Opisz zadanie przed uruchomieniem

Zapisz wejście, oczekiwany wynik, właściciela, skutek i termin. „Przeanalizuj dokument” jest za ogólne. Może oznaczać streszczenie do odczytu albo decyzję zapisującą pola w CRM. Oba przypadki wymagają innego priorytetu i odbioru.

Nadaj identyfikator zadania i identyfikator operacji biznesowej. Ponowienie nie tworzy nowej decyzji. Dzięki temu możesz sprawdzić, czy dany dokument już przetworzono i czy skutek się nie powtórzy.

Dodaj wersję źródła, promptu i modelu. Kolejka bez wersji potrafi wykonać poprawną pracę na starych danych i zwrócić wynik z właściwym statusem. To niewiele lepsze niż szybka pomyłka.

Priorytet wynika ze skutku opóźnienia

Nie pozwól, aby każdy proces miał priorytet „najwyższy”. Zapytaj, co stanie się po kwadransie, dniu i tygodniu opóźnienia. Potwierdzenie przyjęcia zgłoszenia może być pilne, kwartalna analiza archiwum raczej poczeka.

Przypisz klasy: interaktywne, operacyjne, wsadowe i eksperymentalne. Każda ma własny limit równoległej pracy i czas oczekiwania. Eksperyment nie powinien blokować obsługi klienta, nawet jeżeli właśnie odkrył bardzo ciekawy prompt.

Przy przeciążeniu ogranicz najpierw zadania odroczone. Nie zmieniaj jakości krytycznych odpowiedzi bez decyzji. Wolniejszy raport jest często lepszy niż szybki fallback, który zgaduje źródło.

Limity mają kilka wymiarów

Dostawca może ograniczać liczbę żądań, tokenów, obrazów lub pracy w kolejce. Limity mogą dotyczyć organizacji, projektu, modelu i wspólnej rodziny modeli. Aktualne zasady sprawdzaj w dokumentacji oraz panelu, bo różnią się zależnie od konfiguracji.

Nie planuj wyłącznie żądań na minutę. Dziesięć krótkich zapytań i dziesięć ogromnych dokumentów to różne obciążenie. Zapisz wielkość wejścia, przewidywany wynik i liczbę prób. Limit kosztu jest osobnym zabezpieczeniem od limitu przepustowości.

Rozdziel budżety dla procesów. Jeśli wszystkie korzystają z jednego projektu, raport może zjeść zasoby potrzebne do zgłoszeń. Wspólny limit dostawcy nie zawsze da się podzielić idealnie, ale własne ograniczenia aplikacji pozwalają zachować priorytet.

Backoff zamiast natychmiastowego ponowienia

Po błędzie czasowym odczekaj zgodnie z odpowiedzią dostawcy i regułą procesu. Jeżeli odpowiedź zawiera wskazany czas ponowienia, nie traktuj go jako dekoracyjnej sugestii. Dodaj losowe rozproszenie, żeby setka zadań nie wróciła w tej samej sekundzie.

Ustal maksymalną liczbę prób i całkowity budżet czasu. Bez nich zadanie może żyć dłużej niż człowiek, który je zlecił. Po przekroczeniu przenieś je do kolejki błędów z powodem i właścicielem.

Nie ponawiaj błędów walidacji, autoryzacji i niezgodnego schematu jako awarii czasowej. One wymagają poprawy danych lub konfiguracji. Ponawianie ich jest uprzejmym sposobem na marnowanie pieniędzy.

Idempotencja przy nieznanym wyniku

Timeout nie mówi, czy operacja została wykonana. Przed ponowieniem sprawdź identyfikator i stan. Jeśli system docelowy obsługuje idempotencję, użyj tego samego klucza. Nie generuj nowego przy każdej próbie.

Przy wysyłce i publikacji zachowaj osobno przyjęcie, wykonanie i potwierdzenie skutku. Wynik nieznany powinien trafić do rekonsyliacji, a nie automatycznie do drugiej wiadomości. Zasady opisuje artykuł o ponowieniach integracji AI.

Test musi symulować przerwę przed odpowiedzią i po zapisie. To dwa różne stany. Bez nich kolejka działa świetnie tylko w świecie, w którym sieć zawsze odpowiada na czas.

Kolejka błędów nie jest śmietnikiem

Przenoś tam zadania po wyczerpaniu prób, z nieznanym formatem, konfliktem źródeł lub wymaganym odbiorem. Zapisz powód, ostatni bezpieczny stan i właściciela. Nie doklejaj pełnych danych poufnych do notatki diagnostycznej.

Ustaw termin przeglądu. Jeżeli kolejka stale rośnie, proces nie jest stabilny. Nowe zadania powinny zostać ograniczone, zanim stara praca zdominuje cały system. Alarm ma pokazywać wiek najstarszego elementu, nie tylko liczbę rekordów.

Po naprawie wybierz kilka przypadków i uruchom je kontrolowanie. Nie klikaj „ponów wszystko”, zanim nie znasz przyczyny. Tysiąc powtórzonych błędów to wciąż tysiąc błędów, tyle że z nową datą.

Głód zadania i sprawiedliwość

Priorytety mogą sprawić, że zadania niskiej wagi nigdy nie dostaną zasobów. Dodaj starzenie priorytetu albo osobny mały budżet dla pracy odroczonej. Raport tygodniowy nie powinien czekać miesiąc, bo zawsze znajdzie się pilniejszy eksperyment.

Mierz czas od dodania do rozpoczęcia i od rozpoczęcia do skutku. Jeżeli pierwszy rośnie, problem jest w kolejce. Jeżeli drugi, sprawdź model, narzędzia i ponowienia. Jeden czas wykonania nie rozdziela tych przyczyn.

Przy małej firmie wystarczy kilka klas i prosty raport. Nie potrzebujesz systemu do sprawiedliwości godnego banku centralnego. Potrzebujesz reguły, która nie pozwala jednemu procesowi zjadać całego dnia.

Kiedy przetwarzanie wsadowe jest lepsze

Przy dużej liczbie zadań bez natychmiastowego terminu oceń tryb wsadowy. Może uprościć rozliczenie i ograniczyć presję na limity interaktywne. Nie przenoś tam zgłoszeń wymagających szybkiej reakcji.

Zachowaj mapę identyfikatorów wejścia i wyniku. Wsad nie zdejmuje obowiązku walidacji, odbioru i obsługi braków. Praktyczny wybór opisuje artykuł o przetwarzaniu wsadowym AI.

Przy imporcie podziel pracę na partie z możliwością wznowienia. Zapisz ostatni poprawny punkt. Po awarii nie powinieneś zaczynać całej nocy od początku, bo system nie pamięta, co już zrobił.

Odbiór przez użytkownika i operatora

Użytkownik powinien widzieć zrozumiały stan: przyjęte, w toku, wymaga działania, gotowe lub błąd. Nie pokazuj technicznego „running” przez trzy dni. Jeżeli termin jest znany, podaj go bez gwarantowania wyniku.

Operator potrzebuje identyfikatora, liczby prób, wersji, błędu i możliwości zatrzymania. Nie musi widzieć pełnego promptu. Link do bezpiecznego raportu powinien działać zgodnie z rolą.

Przy zakończeniu sprawdź rzeczywisty skutek. Rekord w CRM, publiczny adres lub wiadomość muszą być zgodne z zadaniem. Status „done” w kolejce jest tylko początkiem odbioru.

Ćwiczenie z korkiem

Uruchom na danych testowych dwadzieścia zadań z małym limitem, kilkoma błędnymi polami i jednym timeoutem. Dodaj zadanie pilne oraz eksperyment. Sprawdź, czy pilne przechodzi, błędne nie ponawiają się bez końca, a eksperyment nie zużywa całego budżetu.

Następnie zatrzymaj pracownika kolejki i uruchom go ponownie. Porównaj liczbę skutków przed i po. Nie mogą pojawić się duplikaty. Wiek zadań i powody błędów powinny być czytelne bez otwierania surowych logów.

Po teście popraw jedną regułę i powtórz zależny scenariusz. Nie zwiększaj od razu wszystkich limitów. Kolejka ma uczyć proces oszczędności i odpowiedzialności, a nie tylko pompować większy ruch w ten sam korek.

Koszt jednego ukończonego zadania

Licz wszystkie próby, fallbacki, pracę odbioru i ponowne uruchomienia. Koszt samego pierwszego wywołania modelu jest zbyt optymistyczny. Zadanie z pięcioma ponowieniami i ręczną naprawą powinno być widoczne w raporcie.

Ustaw alert przy wzroście liczby prób i kosztu bez wzrostu skutku. Przy procesach budżetowych pomocny jest artykuł o alertach kosztu AI. Limit ma zatrzymywać niekontrolowaną pracę przed rachunkiem, nie opisywać ją po miesiącu.

Przeglądaj przypadki najdroższe i najczęściej ponawiane. Czasem wystarczy mniejsze wejście, poprawiony schemat albo koniec jednej integracji. Nie zaczynaj od zakupu większego limitu, jeżeli przyczyną jest błąd formularza.

Przykład: import katalogu blokuje obsługę

W hipotetycznym przykładzie w piątek uruchamiasz analizę pięciu tysięcy produktów. W tym samym projekcie działa odpowiedź na zgłoszenia. Import zużywa limit tokenów, a klienci dostają coraz wolniejsze odpowiedzi. Zwiększenie liczby pracowników pogarsza sprawę, bo więcej zadań ponawia jednocześnie.

Po wdrożeniu klas import dostaje osobny limit i pracę wsadową, zgłoszenia zachowują mały zarezerwowany budżet, a ponowienia są rozłożone w czasie. Raport pokazuje wiek kolejki i koszt ukończonych zadań. Import kończy się później, ale klient nie musi finansować katalogu własnym czekaniem.

Przy takim scenariuszu porównaj wynik przed i po na tym samym wolumenie. Nie przypisuj poprawy samej nazwie nowej kolejki. Zmiana dotyczy limitów, priorytetów i ponowień razem. Zapisz, które reguły były decydujące, żeby przy kolejnym imporcie nie zaczynać od zgadywania.

Pojedyncze zadanie nie powinno mnożyć pracowników

Ogranicz równoległe próby tej samej operacji. Jeżeli dwie reguły widzą nowe zgłoszenie i obie uruchamiają model, wspólny klucz może pomóc rozpoznać tę samą operację, ale wymaga atomowej obsługi lub idempotentnego skutku w systemie docelowym. Sam klucz nie gwarantuje pojedynczego wykonania. Inaczej kolejka zwiększa koszt i tworzy konflikt wyników nawet bez awarii dostawcy.

Zapisz blokadę lub wynik w trwałym magazynie, nie tylko w pamięci jednego procesu. Po restarcie inny pracownik musi zobaczyć ten sam stan. Przy krótkim czasie blokady uwzględnij zadania długie i możliwość odzyskania po awarii. Nie przedłużaj jej bez końca, bo zatrzymany proces zablokuje pracę na zawsze.

Test uruchamia dwa żądania niemal jednocześnie i sprawdza jeden skutek. To prosty przypadek, który wykrywa duplikaty zanim zaczną pojawiać się przy produkcyjnym ruchu. Model nie musi być w tym wcale winny; czasem cała winna jest nadgorliwość dwóch bardzo pracowitych robotów.

Przegląd parametrów po zmianie procesu

Nowa wersja dokumentu, większy obraz albo dodatkowe narzędzie mogą zmienić zużycie zasobów bez zmiany liczby zadań. Przed wdrożeniem porównaj wielkość wejścia, czas i liczbę prób na małej próbce. Nie opieraj limitów wyłącznie na zeszłomiesięcznej średniej.

Jeżeli zadania zaczynają przekraczać termin, oceń, czy zwiększyć zasoby, zmniejszyć kontekst, czy ograniczyć równoległość. Każda decyzja ma inny koszt i skutek. Zapisz właściciela oraz datę kolejnego przeglądu. Limit nie jest ustawieniem wiecznym, ale też nie powinien zmieniać się codziennie bez dowodów.

Po zakończeniu kampanii lub importu przywróć standardowy budżet. Tymczasowo podniesiony limit lubi zostać na stałe i pojawiać się później na rachunku jako „nieoczekiwany wzrost”. Kolejka ma pamiętać decyzje lepiej niż ludzie pamiętają tymczasowe ustawienia.

Aeneia Audit pomaga uporządkować priorytety, koszty i odpowiedzialność. Przy awarii pomocny jest plan ciągłości Aeneia Signal.

Gdy kolejka rośnie, najpierw ustal, które zadania mogą poczekać, a które wymagają reakcji człowieka. Sprawdź również, czy ponowienie nie wykona po raz drugi operacji już przyjętej przez system docelowy. Limity i priorytety mają sens wtedy, gdy operator potrafi zobaczyć stan zadania oraz bezpiecznie rozwiązać wyjątek.

Źródła i dalsza lektura

Sprawdź nas. To zdrowe.

Temat zmienia się szybko. Linki prowadzą do źródeł pierwotnych i stron, na których możesz zweryfikować kontekst.

Doszłaś / Doszedłeś do końca. My też jesteśmy pod wrażeniem.Masz uwagę albo lepszy przykład? Napisz

Marki, dla których tworzyliśmy rozwiązania w Aeneia

Przewijaj w bok
  • L'Oréal
  • Garnier
  • Netflix
  • Carrefour
  • Warner Bros. Discovery
  • Biedronka
  • HBO Max
  • Wolt
  • Żabka
  • COSRX
  • Mixa
  • Ambasada Chin w Polsce

Narzędzia i technologie, z których korzystamy

Przewijaj w bok
  • Google
  • OpenAI
  • Microsoft
  • Stripe
  • Anthropic
  • Linear