Zyski:
- Określa, dla jakich obciążeń odpowiednie jest przetwarzanie wsadowe
- Rozumie kompromis koszt/opóźnienie pomiędzy przetwarzaniem synchronicznym, asynchronicznym i wsadowym
- Projektuje solidny przepływ pracy wsadowy, który dopasowuje identyfikator_standardowy do wyników
Większość integracji LLM koncentruje się na scenariuszach „na żywo”, w których użytkownik czeka na odpowiedź przed ekranem. Jednak większość zadań zawodowych nie jest wykonywana w rzeczywistości: oznaczanie tysięcy dokumentów w ciągu jednego dnia, podsumowanie całego zestawu danych, klasyfikacja całych nagrań rozmów w archiwum. W tych sprawach nikt nie oczekuje natychmiastowej odpowiedzi; Ważne jest, aby zakończyć pracę tanio i solidnie. Batch jest dokładnie przeznaczony dla tych obciążeń. W tej części poznasz różnicę między przetwarzaniem synchronicznym, asynchronicznym i wsadowym, gdy właściwym wyborem będzie wsad, oraz solidnym przepływem, który z pewnością dopasuje identyfikator_niestandardowy i wyniki.
Trzy tryby pracy
tryb
Jak to działa?
opóźnienie
Typowy koszt
odpowiednia praca
synchroniczny
Składasz wniosek i czekasz na odpowiedź
sekundy
Standardowe
Czat na żywo, natychmiastowy asystent
asynchroniczny
Ustawiasz zadanie w kolejce i otrzymujesz powiadomienie, gdy zostanie ukończone.
Sekundy – minuty
Standardowe
Zadania w tle, kroki automatyzacji
Partia
Wysyła tysiące żądań w jednym pakiecie, a następnie otrzymuje wyniki
Minuty – godziny
Zwykle ze zniżką
Zadania o dużej objętości i odporne na opóźnienia
Przetwarzanie wsadowe polega na tym, że wysyłasz setki/tysiące żądań jako pojedyncze „zadanie” do dostawcy; Dostawca przetwarza je we własnym tempie i po zakończeniu zwraca wszystkie wyniki zbiorczo. W zamian otrzymujesz dwie rzeczy: (1) ogólnie niższy koszt jednostkowy, (2) możliwość przemieszczania dużych ilości towarów bez konieczności radzenia sobie z ograniczeniami prędkości. Ceną jest to, że rezultaty nie pojawiają się od razu, ale po pewnym czasie.
Kiedy grupować, kiedy nie?
Decyzja sprowadza się do jednego pytania: czy użytkownik czeka teraz na wynik?
- Nie, mogę to potrzymać → kandydat wsadowy. Nocne tagowanie, podsumowanie partii, klasyfikacja archiwum, wzbogacanie danych, wykonanie oceny (eval).
- Tak, czekam na ekranie → synchronizacja. Czat na żywo, błyskawiczne porady, pomoc przy wypełnianiu formularzy.
Wskazówka: w tym samym produkcie mogą współistnieć dwa tryby. Użytkownik pracuje synchronicznie na czacie na żywo; Wieczorem przekazujesz wszystkie rozmowy tego dnia grupie w celu analizy jakości. Oddzielenie „potrzeby życiowej” od „potrzeby zbiorowej” jest pierwszą decyzją architektury.
Anatomia solidnego przepływu wsadowego
Najważniejszą zasadą techniczną przetwarzania wsadowego jest dopasowywanie wyników.
- Nadaj każdemu żądaniu unikalny „custom_id”. To jest wygenerowany identyfikator identyfikujący żądanie (np. faktura-2026-07-18-000431).
- Prześlij pracę. Wszystkie wnioski trafiają w jednym pakiecie; każdy z własnym niestandardowym identyfikatorem.
- Sonduj sytuację. Co jakiś czas pytasz o status, aż zadanie zostanie „ukończone”.
- Dopasuj wyniki do „custom_id”. Wyniki mogą zostać przesłane w innej kolejności niż kolejność zgłoszeń; więc nigdy nie dopasowuj według pozycji, ale według niestandardowego identyfikatora, który przenosi każdy wynik.
- Sprawdź typ każdego wyniku. Jedno żądanie może się powieść, drugie może się nie udać, a jedno może wygasnąć. Proces oparty na sukcesie/porażce.
{ "requests": [ { "custom_id": "invoice-000431", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasyfikuj fakturę. Zwróć tylko JSON.", "messages": [{ "role": "user", "content": "{{invoice_text}}" }] } }, { "custom_id": "invoice-000432", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasyfikuj fakturę. Zwróć tylko JSON.", "messages": [{ "role": "user", "content": "{{invoice_text_2}}" }] } } ]}
Uwaga: dopasowywanie wyników na podstawie kolejności zgłoszeń jest błędem numer jeden podczas grupowania. Kolejka nie jest zachowana. Bez niestandardowego identyfikatora nie możesz mieć pewności, który wynik należy do którego dokumentu — nieprawidłowe dopasowanie po cichu prowadzi do błędnych danych.
Szablony do kopiowania
# reguła generowania niestandardowego identyfikatora (unikalna i identyfikowalna)Format: <istura>-<data>-<sekwencja>. Przykład: request-20260718-000431Reguła: nigdy nie powtarzaj w pracy; Osadź w nim identyfikator rekordu zasobu.
# Karta pracy wsadowej (szablon harmonogramu)Nazwa zadania: .............Ilość rekordów: .............Model: ............. (zlecenie proste → model szybki)Max_tokens na żądanie: .............Oczekiwana tolerancja czasu dostawy: ..............godzinKlucz dopasowania wyniku: niestandardowy_idW przypadku błędu: ponowna próba / kolejka / raport
# Pojedynczy monit o żądanie wsadowo (krótki i schematyczny) Klasyfikuj ten dokument. Po prostu zwróć ten JSON, komentując:{"category":"...""urgency":"low|medium|high"}Dokument: """{{document}}"""
# Pseudokod przetwarzania wyników dla każdego wyniku: ifresult.status == "success": record = find(custom_id) save(record,result.output) w przeciwnym razie: add_to_fail(custom_id,result.error) # następnie spróbuj ponownie
Słaby monit/silny monit (projekt zadania wsadowego)
# SŁABY (delikatny projekt) Wyślij 10 000 dokumentów w kolejności z mocnym modelem, zapisz zwrócone wyniki w kolejności, w jakiej przychodzą.
# STRONG (trwała konstrukcja) Szybki model umożliwia wysyłanie 10 000 dokumentów w jednej partii. Nadaj każdemu dokumentowi unikalny identyfikator_niestandardowy zawierający identyfikator rekordu źródłowego. Dopasuj wyniki do niestandardowego identyfikatora; ustaw w kolejce te, które się nie powiodły i spróbuj ponownie. Uruchom w nocnym oknie; Tolerancja dostawy 6 godzin.
Potężna wersja; Wstępnie definiuje wybór modelu, pasujący klucz, obsługę błędów i synchronizację. Na tym polega różnica w bezpiecznym przetwarzaniu dziesiątek tysięcy rekordów.
Trzy mini etui
Przypadek 1 – Nocne znakowanie. Zespół ds. handlu elektronicznego posortowałby 200 000 recenzji produktów na znaczniki nastrojów. Synchroniczne przesyłanie strumieniowe na żywo podlegało ograniczeniom prędkości i było kosztowne. Pracę przenieśli w nocy w partii z szybkim modelem; Koszt jednostkowy spadł, rano cały zestaw był gotowy i nie było problemów z ograniczeniami prędkości.
Przypadek 2 – Zamieszanie porządkowe. Partia zespołu badawczego zebrała 5000 artykułów, ale wyniki zapisał w plikach w kolejności, w jakiej nadeszły. Ponieważ wyniki zostały przesłane w innej kolejności, około 900 z 5000 streszczeń zostało powiązanych z niewłaściwym artykułem. Zmapowali go na custom_id; problem został rozwiązany i to doświadczenie stało się stałą zasadą: „Zawsze niestandardowe_id wsadowo”.
Przypadek 3 — Tryb gotowości na żywo w złym trybie. Zespół wsparcia próbował przekazać wsadowo odpowiedzi na żywo, jakich użytkownik oczekiwał na ekranie; Użytkownicy porzucili, ponieważ wyniki pojawiły się kilka minut później. Przesunęli zadanie na żywo z powrotem do synchronizacji, pozostawiając w partii jedynie nocną analizę jakości. Lekcja: partia nie jest przeznaczona do trybu gotowości na żywo.
Typowe błędy
- Dopasowywanie wyników według pozycji: Kolejność nie jest zachowana; Użyj niestandardowego id.
- Przesyłanie bieżącego zadania do partii: użytkownik nie może czekać minut; partia jest przeznaczona do zadań tolerujących opóźnienia.
- Brak obsługi przypadków błędów: niektóre żądania mogą zwrócić błąd/wygasnąć; Umieść go w osobnej kolejce i spróbuj ponownie.
- Silny odruch użycia modelu w trybie wsadowym: Szybki model + wsad to najtańsza kombinacja w prostych zadaniach.
- Brak możliwości śledzenia niestandardowego identyfikatora: jeśli w identyfikatorze nie jest osadzony żaden rekord źródłowy, trudno jest ponownie powiązać wynik.
- Zapominanie o zbadaniu sytuacji: Oczekiwanie wyników przed zakończeniem pracy; Sprawdź status ukończenia.
Deeper: Monitorowanie partii i zarządzanie częściowymi awariami
Najbardziej dojrzałym aspektem przetwarzania wsadowego jest to, że wymaga ono innego sposobu myślenia niż wywołania indywidualne: zadanie wsadowe to „proces”, a nie „zdarzenie”. Założenie, że dziesiątki tysięcy żądań zakończy się sukcesem, jest kruche; Realistyczny projekt od początku akceptuje częściową awarię. Status każdego wyniku może być inny: udany, nieudany (np. nieprawidłowe dane wejściowe), anulowany lub wygasły. Solidny przepływ przetwarza status każdego wyniku oddzielnie podczas jego przejścia, umieszcza błędy w osobnej „kolejce ponawiania prób” i uruchamia tę kolejkę osobno.
Drugą praktyką jest projektowanie pod kątem idempotencji (dwukrotne uruchomienie tego samego zadania nie powoduje żadnych szkód). Jeśli partia zostanie przerwana i wznowisz ją, nie powinieneś ponownie przetwarzać i zapisywać dwukrotnie już przetworzonych rekordów. Powiązanie niestandardowego identyfikatora z rekordem źródłowym działa również tutaj: „czy ten rekord został już przetworzony?” przed zapisaniem wyniku. Sprawdzanie zapobiega podwójnemu wpisywaniu.
Trzeci punkt polega na rozłożeniu transmisji na żywo w trybie wsadowym. Niektóre zadania mają zarówno wymiary bieżące, jak i wsadowe: gdy użytkownik ładuje dokument, przesyłasz mu szybkie wstępne podsumowanie (synchronicznie) i ponownie przetwarzasz ten sam dokument w celu głębszej analizy w nocy (wsadowo). Świadome oddzielenie tych dwóch trybów optymalizuje zarówno wygodę użytkownika, jak i koszty.
Wreszcie, grupowanie jest również sposobem radzenia sobie z ograniczeniami prędkości (część 8). Wysyłanie dużych wolumenów w synchronicznym przepływie na żywo generuje stałą liczbę 429, podczas gdy wysyłanie tego samego wolumenu do transferów wsadowych ogranicza presję na własny harmonogram dostawcy i sprawia, że zadanie jest bardziej przewidywalne.
Podsumowując
Przetwarzanie wsadowe jest na ogół tańszym i bardziej niezawodnym trybem w przypadku obciążeń odpornych na opóźnienia i dużych objętości. Jego decyzja brzmiała: „Czy użytkownik czeka teraz na wynik?” określa pytanie. Najważniejszą zasadą techniczną jest nadanie każdemu żądaniu unikalnego identyfikatora niestandardowego, dopasowywanie wyników według identyfikatora, a nie lokalizacji, i oddzielne traktowanie każdego wyniku.
Zadanie aplikacji
Wybierz zadanie o dużej objętości (np. klasyfikacja archiwalna). (1) Zdecyduj, czy jest to utwór na żywo czy zbiorowy, i uzasadnij to. (2) Zaprojektuj format niestandardowego identyfikatora (uwzględnij rekord zasobu). (3) Wypełnij kartę zadania wsadowego (model, max_tokens, tolerancja, polityka błędów). (4) Zapisz pseudokod przetwarzania wyniku, aby uwzględnić nieudane żądania.
lista kontrolna
- [ ] Potrafię rozróżnić tryby synchroniczny, asynchroniczny i wsadowy na osi koszt/opóźnienie.
- [ ] Mogę zdecydować, czy stanowisko nadaje się do wykonania wsadowego, czy nie, zadając właściwe pytanie.
- [ ] Każdemu żądaniu nadaję unikalny identyfikator niestandardowy i dopasowuję wyniki według identyfikatora.
- [ ] Mogę oddzielnie obsługiwać nieudane/wygasłe wyniki.
- [ ] Znam korzyści wynikające z wyboru szybkiego modelu w prostych zadaniach wsadowych.