Przewodniki8 min czytania

Przetwarzanie wsadowe AI: jak zaprojektować batch bez utraty przypadków, duplikatów i kontroli błędów

Jak projektować przetwarzanie wsadowe AI: kolejki, identyfikatory, błędy, częściowe wyniki i testy. Praktyczny przewodnik batch dla małego zespołu.

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

Batch kończy się komunikatem „gotowe”, więc raport trafia dalej. Dopiero później okazuje się, że część linii zwróciła błąd, wyniki są w innej kolejności, a kilka dokumentów przetworzono dwa razy. Technicznie zadanie zostało wykonane. Dane mówią co innego.

Przetwarzanie wsadowe nadaje się do niezależnych zadań bez natychmiastowego wyniku. Nie zastępuje kolejki odbioru ani kontroli skutku. Trzeba zachować identyfikatory, stany i częściowe błędy.

Sprawdź, czy batch pasuje do zadania

Wybierz pracę, która może czekać: ewaluacje, klasyfikacja historii, embeddingi, analiza katalogu. Nie używaj go do pilnego zgłoszenia lub interakcji wymagającej odpowiedzi od razu. OpenAI opisuje Batch API jako pracę asynchroniczną z oknem wykonania, nie gwarancją natychmiastowego wyniku.

Zapisz niezależność przypadków. Jeżeli wynik jednego wpływa na drugi, prosty batch może nie wystarczyć. Potrzebujesz sekwencji lub reguł współdzielonego stanu. Nie ukrywaj zależności w nazwie pliku.

Oceń koszt i czas odbioru. Niższa cena za żądanie nie zawsze oznacza niższy koszt procesu. Wyniki nadal wymagają walidacji i naprawy błędów.

Jeśli dokumenty muszą być analizowane w określonej kolejności, rozdziel je na etapy i uruchom następny dopiero po odbiorze poprzedniego.

Każdy rekord potrzebuje identyfikatora

Zachowaj stabilny custom_id lub odpowiednik własnego systemu. Nie opieraj się na kolejności linii, bo wynik może być zwrócony inaczej. Identyfikator powinien prowadzić do źródła i wersji przypadku.

Nie używaj danych osobowych ani poufnych w kluczu. Losowy identyfikator lub bezpieczny ID zdarzenia wystarcza. Mapa powinna być przechowana z ograniczonym dostępem.

Przy ponowieniu zachowaj ten sam identyfikator dla tej samej logicznej operacji. Nowy plik nie powinien zmieniać tożsamości przypadku. To pomaga odróżnić wznowienie od nowej pracy i połączyć wynik ze źródłem, lecz samo custom_id nie zapobiega ponownemu zapisowi, wysłaniu maila ani publikacji. Te skutki wymagają osobnej ochrony w systemie docelowym.

Waliduj wejście przed wysłaniem

Sprawdź format, model, endpoint, wymagane pola, rozmiar i dozwolone źródła. Zasady walidacji sprawdź u konkretnego dostawcy: błąd rekordu może zostać zwrócony osobno albo spowodować odrzucenie partii na etapie walidacji. Zaplanuj oba stany i nie ignoruj błędu.

Zapisz liczbę rekordów i sumy kontrolne. Ile dokumentów, ile stron, ile pustych pól, ile unikalnych ID? Po wyniku porównasz, czy nic nie zniknęło. To prostsze niż późniejsza archeologia logów.

Nie przesyłaj danych wrażliwych bez oceny kanału i retencji. Plik wsadowy jest kolejną kopią. Ogranicz zakres i dostęp zgodnie z procesem.

Projektuj stany, nie tylko status partii

Partia może być przyjęta, w trakcie, zakończona lub błędna. Każdy rekord potrzebuje własnego stanu: oczekuje, przetwarzany, gotowy, błąd, do odbioru, odrzucony. Bez tego nie wiesz, co „gotowe” oznacza.

Zapisz wynik i błąd przy rekordzie. Nie przenoś statusu partii na wszystkie elementy. Częściowy sukces wymaga raportu, a nie cichego uznania pełnego wykonania.

Przy wznowieniu wybierz tylko niewykonane lub błędne przypadki zgodnie z regułą. Nie uruchamiaj całej partii od nowa, jeżeli skutki już istnieją.

Obsługuj częściowe wyniki

Przy timeout lub wygaśnięciu część odpowiedzi może istnieć. Pobierz ją i zachowaj błędy. Nie przedstawiaj raportu jako kompletnego bez porównania liczby wejść i wyjść.

Nie uzupełniaj braków przez model. Oznacz przypadki jako niewykonane i przypisz kolejny krok. Dokumentacja Batch API opisuje możliwość częściowych rezultatów i błędów po okresie wykonania, więc proces musi je akceptować.

Raport powinien pokazywać gotowe, błędne, niewykonane i odrzucone osobno. Suma ma się zgadzać z wejściem. Procent sukcesu bez mianownika ukrywa skalę.

Idempotencja przy zapisie skutku

Model może przetworzyć ten sam przypadek ponownie, ale zapis do CRM, mail lub publikacja nie powinny powielić skutku. Jeżeli system docelowy obsługuje klucz idempotencji, użyj go zgodnie z jego zasadami i przetestuj ponowienia. Stripe opisuje takie klucze dla własnego API. Gdy usługa nie oferuje tej ochrony, przygotuj uzgadnianie niepewnego wyniku; sam lokalny klucz nie gwarantuje braku duplikatu.

Nie zakładaj, że identyfikator partii wystarcza dla wszystkich operacji. Każdy rekord i każdy typ działania może wymagać osobnego klucza. Zapisz je przed pierwszą próbą.

Przy nieznanym stanie sprawdź zasób przed ponowieniem. Timeout nie oznacza porażki ani sukcesu. Zasady opisuje przewodnik o ponowieniach integracji AI.

Limit i backoff bez burzy

Ustal równoległość, limity dostawcy i sposób reakcji na 429. Nie twórz wielu partii jednocześnie tylko dla szybkości. Możesz przenieść problem z jednego systemu na drugi.

Przy błędach tymczasowych stosuj rosnące odstępy i losowe rozproszenie. Respektuj Retry-After. Nie ponawiaj błędów walidacji ani uprawnień bez zmiany konfiguracji.

Zapisz maksymalny czas i liczbę prób. Proces powinien zatrzymać się po przekroczeniu, a nie wysyłać zadań w tle bez końca. To jest kontrola kosztu i bezpieczeństwa.

Wynik przechodzi walidację jak każdy inny

Sprawdź strukturę, typy, źródła i reguły biznesowe. Poprawny format pliku nie oznacza poprawnych danych. Batch zwiększa skalę ewentualnego błędu, więc odbiór nie może kończyć się na eksporcie.

Przy odpowiedziach modelu stosuj schemat i przypadki krytyczne. Artykuł o JSON Schema AI opisuje kontrakt. Nie przepisuj wszystkich wyników bez próbki i reguł.

Przy publikacji lub zapisie dodaj odbiór człowieka dla przypadków ryzykownych. Batch może przygotować propozycje, a nie zatwierdzać je automatycznie.

Przykład: klasyfikacja starego katalogu

Wysyłasz tysiąc produktów z identyfikatorami i wersjami. Część zwraca kategorię „inne”, kilka błędów formatu i kilka niejednoznacznych wariantów. Raport nie powinien przypisywać „innych” do kategorii domyślnej.

Najpierw porównujesz liczbę rekordów i błędy. Potem odbierasz nietypowe i próbkę poprawnych. Dopiero potem zapisujesz zatwierdzone wyniki z kluczem idempotencji. Pozostałe wracają do źródła lub właściciela.

Przy katalogu pomocny jest przewodnik o porządkowaniu produktów AI. Proces batch nie zastępuje reguł tożsamości produktu.

Przykład: ewaluacja modeli

Uruchamiasz te same przypadki na dwóch modelach. Wyniki łączysz po custom_id, nie kolejności. Porównujesz rubrykę, koszt i błędy. Nie uznajesz partii bez wyników jako niższej jakości modelu bez sprawdzenia przyczyny.

Zachowaj wersję promptu, modelu i źródeł. Przy błędach częściowych raportuj zakres oceny. Nie uśredniaj wyniku na podstawie różnych mianowników bez jawnego opisu.

Przy porównaniu pomocny jest artykuł o modelach na własnych danych. Batch jest sposobem uruchomienia testu, nie jego dowodem.

Test przed dużą partią

Zacznij od kilku rekordów poprawnych, błędnych i nietypowych. Sprawdź, czy system łączy wyniki, obsługuje częściowy błąd i zachowuje idempotencję. Dodaj restart i ponowienie.

Wykonaj przypadek z duplikatem wejścia. Powinien zostać wykryty przed skutkiem lub obsłużony zgodnie z regułą. Nie zakładaj, że źródło zawsze jest czyste.

Po teście sprawdź sumy i docelowy system. Nie wystarczy poprawny plik wyniku. Potwierdź brak duplikatów i obecność wszystkich oczekiwanych stanów.

Kiedy zatrzymać partię

Zatrzymaj przy błędzie wspólnej reguły, niezgodności wersji, wycieku danych, dużym odsetku błędów i nieznanym stanie skutku. Nie czekaj na koniec tylko dlatego, że większość jest przetworzona. Może zwiększać koszt naprawy.

Zachowaj wyniki i stan przed zatrzymaniem. Nie usuwaj ich przy awarii. Właściciel powinien zdecydować o korekcie lub wznowieniu.

Po naprawie uruchom mały przypadek zależny przed wznowieniem reszty. To ogranicza powtarzanie błędu na setkach rekordów.

Raport operacyjny po zakończeniu

Zapisz wejście, gotowe, błędy, niewykonane, odrzucone, koszt, czas i wersję. Dodaj właściciela kolejnego kroku. Nie przedstawiaj samego statusu „zakończone”.

Przy błędach pogrupuj przyczyny i właścicieli. Format, źródło, uprawnienie, limit i reguła wymagają różnych działań. Nie generuj jednej rekomendacji „popraw AI”.

Kiedy dzielić pracę na mniejsze partie

Rozdziel zadania według wersji źródła, modelu, typu dokumentu i odbiorcy uprawnień. Nie mieszaj ich tylko dla jednego raportu. Mniejsza partia ogranicza zakres błędu i ułatwia wznowienie. Nie musi być mała za wszelką cenę; ma mieć wspólną regułę odbioru.

Przy nowej wersji nie uruchamiaj jej na całej historii. Zacznij od małej partii kontrolnej i porównaj wynik. Dopiero po odbiorze przełącz resztę. To ogranicza ryzyko regresji i koszt ponowień.

Zapisz zależności między partiami. Jeżeli wspólna konfiguracja jest błędna, zatrzymaj wszystkie zależne. Nie pozwól, by jedna błędna reguła przeszła jako osobny problem każdej partii.

Dane operacyjne bez poufnych kopii

Przechowuj identyfikatory, statusy i wyniki wymagane do wznowienia, ale ogranicz pełne treści. Nie każdy system raportowania musi zawierać dokumenty źródłowe. Link do zabezpieczonego źródła jest często wystarczający.

Plik wejściowy i wynikowy powinny mieć właściciela, dostęp i retencję. Po zakończeniu usuń zbędne kopie zgodnie z procesem. Batch nie jest powodem do tworzenia wiecznego archiwum promptów.

Przy debugowaniu używaj bezpiecznych identyfikatorów i małych fragmentów. Pełny błąd może być analizowany w źródle przez uprawnioną rolę.

Odbiór przez osobę odpowiedzialną za skutek

Pokaż raport partii z przypadkami błędnymi i nietypowymi. Właściciel powinien zobaczyć, czy zachowanie jest akceptowalne i czy można zapisać wynik. Nie odbieraj tylko technicznego statusu kolejki.

Przy dużym wolumenie użyj próbki według ryzyka i wszystkich błędów krytycznych. Zapisz ograniczenie próbki. Wynik „wszystko sprawdzone” nie jest prawdziwy przy losowym przeglądzie.

Po akceptacji sprawdź jeden pełny zapis do docelowego systemu. To ogranicza ryzyko, że dobry plik wyniku zostanie błędnie zmapowany przy imporcie.

Przy wznowieniu po awarii porównaj stan przed i po. Nie uruchamiaj wszystkich rekordów tylko dlatego, że raport był stary. Zachowaj poprzednie wyniki i identyfikatory. Jeżeli źródło zmieniło się, oceń, czy wymagane jest nowe przetworzenie zamiast ponowienia.

Przy powtarzalnych błędach dodaj przypadki do zestawu przed kolejną partią. Nie przepisuj całego procesu dla jednego nieznanego formatu. Ogranicz go lub przypisz osobną ścieżkę.

Po zakończeniu oceń koszt odbioru i poprawek. Niższa cena Batch API może być korzystna dopiero przy określonej jakości i wolumenie. Zapisz decyzję, a nie tylko zużycie.

Przy zmianie właściciela przekaż mapę stanów i listę otwartych błędów. Nowa osoba nie powinna zgadywać, które rekordy są gotowe do zapisu.

Przy kolejnych partiach zachowaj identyfikatory wersji i źródeł. Raport powinien pozwalać porównać ten sam przypadek z poprzednim wynikiem. Nie przenoś samego statusu bez wersji.

Jeżeli odbiór pokazuje zbyt wiele podobnych błędów, ogranicz zakres i popraw regułę przed zwiększeniem wolumenu. Batch nie powinien służyć do masowego potwierdzania problemu.

Zachowaj sposób zatrzymania kolejki i przypisanie nowej osoby. To jest część odporności procesu, a nie tylko funkcja techniczna.

Aeneia Audit pomaga zmapować proces i skutki. Przy większej liczbie zadań pomocny jest przewodnik Aeneia Signal o workflow.

Po wznowieniu partii porównaj identyfikatory i stany sprzed awarii z wynikiem końcowym. Osoba odbierająca powinna zobaczyć zarówno brakujące rekordy, jak i przypadki wymagające ręcznej decyzji.

Ź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