Jedinica 7 / 11

Batch i asinhrona radna opterećenja

Dobici:

  • Određuje za koja je radna opterećenja grupna obrada prikladna
  • Razumije kompromis između cijene i kašnjenja između sinhrone, asinhrone i batch obrade
  • Dizajnira robustan skupni radni tok koji usklađuje custom_id sa rezultatima

Većina LLM integracija fokusira se na „žive“ scenarije u kojima korisnik čeka odgovor ispred ekrana. Ali većina profesionalnih poslova zapravo nije aktivna: označavanje hiljada dokumenata preko noći, sažimanje čitavog skupa podataka, klasifikovanje čitavih snimaka poziva u arhivu. U ovim pitanjima niko ne očekuje trenutni odgovor; Važno je da posao završite jeftino i pouzdano. Batch je upravo za ova radna opterećenja. U ovoj jedinici naučit ćete razliku između sinkrone, asinhrone i grupne obrade, kada je serija pravi izbor, i robusnog toka koji pouzdano odgovara custom_id-u i rezultatima.

Tri režima rada

način rada

Kako to funkcionira

kašnjenje

Uobičajeni trošak

odgovarajući posao

sinhroni

Podnesete zahtjev i čekate odgovor

sekundi

Standard

Live chat, instant asistent

asinhroni

Stavljate posao u red čekanja i dobijate obavijest kada se završi.

Sekunde–minuti

Standard

Pozadinski zadaci, koraci automatizacije

Batch

Šalje hiljade zahteva u jednom paketu, a zatim dobija rezultate

Minute–sati

Obično sniženo

Poslovi velikog obima, tolerantni na kašnjenje

Batch obrada je sledeća: šaljete stotine/hiljade zahteva kao jedan "posao" dobavljaču; Dobavljač ih obrađuje vlastitim tempom i vraća sve rezultate na veliko kada se završi. Zauzvrat dobijate dve stvari: (1) generalno nižu jediničnu cenu, (2) mogućnost pomeranja velikog obima bez potrebe da se nosite sa ograničenjima brzine. Cijena je što rezultati ne dolaze odmah, već nakon nekog vremena.

Kada skupiti, a kada ne?

Odluka se svodi na jedno pitanje: Da li korisnik sada čeka rezultat?

  • Ne, mogu ga zadržati → kandidat za grupu. Noćno označavanje, sažimanje serije, klasifikacija arhive, obogaćivanje podataka, izvršenje evaluacije (eval).
  • Da, čeka se na ekranu → sinhronizacija. Chat uživo, trenutni savjeti, pomoć pri popunjavanju obrazaca.
Savjet: Dva načina rada mogu koegzistirati u istom proizvodu. Korisnik radi sinhrono u live chatu; Noću sve razgovore tog dana dajete grupi na kvalitetnu analizu. Razdvajanje "životne potrebe" od "kolektivne potrebe" prva je odluka arhitekture.

Anatomija robusnog šaržnog toka

Najvažnije tehničko pravilo grupne obrade je podudaranje rezultata.

  1. Dajte svakom zahtjevu jedinstveni `custom_id`. Ovo je vaš generirani ID koji identificira zahtjev (npr. faktura-2026-07-18-000431).
  2. Pošaljite posao. Svi zahtjevi idu u jednom paketu; svaki sa svojim custom_id.
  3. Ispitajte situaciju. Tražite status u intervalima dok posao nije "gotov".
  4. Uskladite rezultate sa `custom_id`. Rezultati se mogu vratiti drugačijim redoslijedom od redoslijeda za podnošenje; tako da se nikada ne podudarajte po poziciji već po custom_id-u koji svaki rezultat nosi.
  5. Provjerite vrstu svakog rezultata. Jedan zahtjev može uspjeti, jedan propasti, jedan može isteći. Proces zasnovan na uspjehu/neuspjehu.

{ "requests": [ { "custom_id": "invoice-000431", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasifikujte fakturu. Vrati samo JSON.", "messages": "{ "sero": "{ "sero "{{invoice_text}}" }] }, { "custom_id": "invoice-000432", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasifikujte fakturu.", "Vrati samo JSONages", [{ "Vrati samo JSONages":" "content": "{{invoice_text_2}}" }] } } ]}

Oprez: Usklađivanje rezultata zasnovanih na redoslijedu za podnošenje je greška broj jedan u grupiranju. Red se ne čuva. Bez custom_id ne možete pouzdano znati koji rezultat pripada kojem dokumentu — pogrešno podudaranje tiho vodi do pogrešnih podataka.

Copiable Templates

# pravilo generiranja custom_id (jedinstveno i sljedljivo)Format: <isture>-<datum>-<sekvenca>. Primjer: zahtjev-20260718-000431Pravilo: nikad ne ponavljati u radu; U njega ugradite ID zapisa resursa.

# Kartica paketnog posla (šablon rasporeda) Naziv posla: .............Broj zapisa: .............Model: ............. (jednostavan posao → brzi model)Maksimalni_tokeni po zahtjevu: .............Očekivano tolerancija vremena isporuke: ......... sati Ključ podudaranja rezultata: custom_idU slučaju greške: ponovni pokušaj / red / izvještaj

# Podatak o jednom zahtjevu u grupi (kratki i shematski) Klasificirajte ovaj dokument. Samo vratite ovaj JSON, komentarišući:{"category":"...","urgency":"low|medium|high"}Dokument: """{{document}}"""

# Obrada pseudo koda rezultata za svaki rezultat: if result.status == "uspjeh": record = find(custom_id) save(record, result.output) inače: add_to_fail(custom_id, result.error) # zatim pokušajte ponovo

Slaba prompt / Jaka prompt (batch dizajn posla)

# SLABO (lomljiv dizajn)Pošaljite 10.000 dokumenata po redu sa jakim modelom, sačuvajte vraćene rezultate onim redom kojim stižu.

# STRONG (izdržljiv dizajn) Pošaljite 10.000 dokumenata u jednoj seriji sa brzim modelom. Dajte svakom dokumentu jedinstveni custom_id koji sadrži ID izvornog zapisa. Uskladite rezultate sa custom_id; stavite neuspješne u red i pokušajte ponovo. Pokreni u noćnom prozoru; Tolerancija isporuke 6 sati.

Moćna verzija; On unaprijed definira odabir modela, odgovarajući ključ, rukovanje greškama i vrijeme. To je razlika u sigurnoj obradi desetina hiljada zapisa.

Tri mini futrole

Slučaj 1 — Noćno označavanje. Tim za e-trgovinu bi sortirao 200.000 recenzija proizvoda u oznake sentimenta. Sinhroni prijenos uživo podlijegao je ograničenjima brzine i bio je skup. Nosili su posao u noć kao serija sa brzim modelom; Jedinični trošak je pao, cijeli set je bio spreman ujutro, a nije bilo problema s ograničenjem brzine.

Slučaj 2 — Zabuna naloga. Grupa istraživačkog tima je apstrahovala 5.000 članaka, ali je rezultate zapisala u fajlove redosledom kojim su stigli. Budući da su rezultati vraćeni drugačijim redoslijedom, otprilike 900 od 5.000 sažetaka je povezano s pogrešnim člankom. Premapirali su ga na custom_id; problem je riješen i ovo iskustvo je postalo trajno pravilo: "Uvijek custom_id u grupi."

Slučaj 3 — Stanje pripravnosti uživo u pogrešnom režimu. Tim za podršku pokušao je dati niz odgovora uživo koje je korisnik očekivao na ekranu; Korisnici su odustali jer su rezultati stigli nekoliko minuta kasnije. Vratili su posao uživo na sinhronizaciju, ostavljajući samo noćnu analizu kvaliteta u grupi. Lekcija: serija nije za live standby.

Uobičajene greške

  • Usklađivanje rezultata po poziciji: Redoslijed nije sačuvan; Koristite custom_id.
  • Prijenos živog posla u paket: Korisnik ne može čekati nekoliko minuta; serija je za poslove tolerantne na kašnjenje.
  • Ne obrađuje slučajeve greške: Neki zahtjevi mogu vratiti neuspjeli/istekli; Stavite ga u poseban red čekanja i pokušajte ponovo.
  • Snažan refleks upotrebe modela u seriji: Brzi model + serija je najjeftinija kombinacija u jednostavnim poslovima.
  • Ne omogućava praćenje custom_id: Ako nijedan izvorni zapis nije ugrađen u ID, postaje teško povezati rezultat nazad.
  • Zaboravljanje da se ispita situacija: Očekivanje rezultata prije nego što se posao završi; Provjerite status završetka.

Dublje: Nadgledanje serije i upravljanje djelomičnim kvarom

Najzreliji aspekt grupne obrade je da zahtijeva drugačiji način razmišljanja od pojedinačnih poziva: skupni posao je "proces", a ne "događaj". Pretpostavka da će desetine hiljada zahtjeva svi uspjeti je krhka; Realističan dizajn prihvaća djelomični kvar od samog početka. Status svakog rezultata može biti različit: uspješan, neuspješan (npr. nevažeći unos), otkazan ili istekao. Robustan tok obrađuje status svakog rezultata posebno dok putuje kroz njega, stavlja greške u poseban "red za ponovni pokušaj" i pokreće taj red odvojeno.

Druga praksa je dizajniranje za idempotenciju (da pokretanje istog posla dvaput ne uzrokuje nikakvu štetu). Ako je serija prekinuta i ponovo je pokrenete, ne biste trebali ponovo obraditi i pisati dvaput već obrađene zapise. Vezivanje custom_id za vaš izvorni zapis radi i ovdje: "je li ovaj zapis već obrađen?" prije pohranjivanja rezultata. Provjera sprječava dvostruko kucanje.

Treća stvar je razvrstavanje prijenosa uživo s paketom. Neki poslovi imaju i živu i skupnu dimenziju: kada korisnik učita dokument, dajete mu brzi preliminarni sažetak (sinhroni) i ponovo obrađujete isti dokument za dublju analizu noću (batch). Svjesno razdvajanje ova dva načina optimizira i korisničko iskustvo i troškove.

Konačno, doziranje je također način rješavanja ograničenja brzine (jedinica 8). Slanje velike količine u sinhronom toku uživo proizvodi konstantno 429, dok slanje istog volumena u paket prenosi granični pritisak na vlastito zakazivanje provajdera i čini posao predvidljivijim.

Ukratko

Batch obrada je općenito jeftiniji i robusniji način za radna opterećenja koja su tolerantna na kašnjenje i velike količine posla. Njegova odluka je bila "da li korisnik sada čeka rezultat?" određuje pitanje. Najkritičnije tehničko pravilo je dati svakom zahtjevu jedinstveni custom_id, podudarati rezultate prema ID-u, a ne lokaciji, i tretirati uspjeh/neuspjeh svakog rezultata zasebno.

Zadatak aplikacije

Odaberite posao velikog obima (npr. klasifikacija arhive). (1) Odlučite da li je ovo djelo uživo ili kolektivno i opravdajte ga. (2) Dizajnirajte custom_id format (uključite zapis resursa). (3) Popunite karticu skupnog posla (model, max_tokens, tolerancija, politika greške). (4) Napišite pseudokod obrade rezultata koji uključuje neuspjele zahtjeve.

kontrolna lista

  • [ ] Mogu razlikovati sinhroni, asinhroni i paketni način rada na osi cijene/kašnjenja.
  • [ ] Mogu odlučiti da li je posao prikladan za skupni rad ili ne postavljanjem pravog pitanja.
  • [ ] Svakom zahtjevu dajem jedinstveni custom_id i podudaram rezultate po ID-u.
  • [ ] Mogu odvojeno rukovati neuspjelim/isteklim rezultatima.
  • [ ] Znam prednosti odabira brzog modela u jednostavnim grupnim poslovima.