Przewodnik i wgląd

Ujednolicone zadania wsadowe za pośrednictwem bramy API AI: trwałe kolejki, adaptery dostawców i rozliczenia na poziomie dzierżawy

Praktyczna architektura do uruchamiania obciążeń AI odpornych na opóźnienia za pośrednictwem jednego wielomodelowego interfejsu API: trwałe rekordy zadań, adaptery wsadowe dostawców, idempotentne pozyskiwanie wyników, rezerwacja budżetu i analityka na poziomie dzierżawy.

Przetwarzania wsadowego nie należy traktować jako bocznych drzwi do bramy AI API. Jeśli zadania ewaluacji, wzbogacania dokumentów, ekstrakcji, przeglądania moderacji lub osadzania opuszczą ścieżkę żądań synchronicznych, nadal będą potrzebować kontroli dzierżawy, przypisania kosztów, ponownych prób, możliwości audytu i analizy użycia.

Wzorzec implementacji polega na tym, aby wykonywanie wsadowe było pierwszorzędnym podsystemem bramy. Brama powinna udostępniać jedną umowę o pracę neutralną dla dostawcy, dostosowując się za kulisami do OpenAI, Anthropic, Gemini i interfejsów API wsadowych przyszłych dostawców.

Problem czytelnika: interfejsy API wsadowe mają podobne przeznaczenie, różnią się działaniem

Obciążenia odporne na opóźnienia w naturalny sposób nadają się do wykonywania wsadowego. Najtrudniejszą częścią nie jest podjęcie decyzji, czy praca może poczekać. Najtrudniejszą częścią jest spójna praca wsadowa u różnych dostawców.

Potwierdzone fakty: interfejs API Batch OpenAI jest asynchroniczny, odczytuje żądania z przesłanego pliku, zapisuje odpowiedzi do pliku wyjściowego i obecnie wykorzystuje 24-godzinne okno przetwarzania. OpenAI wyświetla statusy takie jak sprawdzanie, nie powiodło się, w toku, finalizowanie, ukończono, wygasło, anulowanie i anulowano. Interfejs Message Batches API firmy Anthropic przetwarza wiele żądań Messages asynchronicznie, obsługuje każde żądanie niezależnie, wymaga odpytywania i zwraca wyniki po zakończeniu przetwarzania. Anthropic zaleca również znaczące wartości custom_id, ponieważ nie gwarantuje się kolejności wyników. Interfejs API Batch firmy Gemini udostępnia długotrwałe metody operacyjne, takie jak metody list, anulowania, usuwania i aktualizacji, a jego operację anulowania określa się jako najlepszą.

Te różnice mają znaczenie po dodaniu rzeczywistych wymagań biznesowych:

  • Który najemca, klient, projekt lub klucz API jest właścicielem każdego elementu?
  • Czy budżet został zarezerwowany, zanim zadanie opuściło bramę?
  • Które ukończone elementy będą rozliczane po wygaśnięciu partii? lub zostaje anulowane?
  • W jaki sposób ponawia się częściowe awarie bez powielania pomyślnej pracy?
  • Jak długo można pobierać pliki wynikowe i co powinna przechowywać brama?
  • Czy partner może zbudować przetwarzanie wsadowe dostosowane do klienta bez ujawniania danych uwierzytelniających dostawcy nadrzędnego?

Odpowiedzią nie jest ukrywanie różnic między dostawcami. Odpowiedzią jest normalizacja umowy operacyjnej przy jednoczesnym zachowaniu metadanych natywnych dostawcy na potrzeby debugowania, uzgadniania i wsparcia.

Zalecany publiczny interfejs API: oddziel zadania wsadowe od synchronicznych uzupełnień

Zalecenie: udostępniaj zadania wsadowe jako ich własną powierzchnię API, a nie jako specjalną flagę przy zakończeniach czatu. Żądanie synchroniczne i asynchroniczne zadanie wsadowe mają inny cykl życia, rozliczenia, ponowne próby i semantykę pobierania wyników.

Praktyczna umowa bramy obejmuje następujące operacje:

  • create_job: utwórz wersję roboczą zadania należącą do dzierżawcy, projektu, klucza lub klienta partnera.
  • append_items lub upload_manifest: dodaj indywidualne żądania ze stabilnym elementem identyfikatory.
  • submit: zatwierdź, zarezerwuj budżet, wybierz dostawcę, wyślij i zablokuj przesłany manifest.
  • get_status: zwróć znormalizowaną liczbę zadań i elementów.
  • list_results: przeglądaj wyniki, błędy i wykorzystanie znormalizowanych elementów.
  • cancel: prośba o anulowanie bez obietnicy natychmiastowego zakończenie.
  • export_usage: eksport rekordów kosztów na poziomie zadania i elementu do systemów analitycznych lub rozliczeniowych.

Przykładowy obiekt zadania publicznego:

{
  "job_id": "job_01j7...",
  "ident_dzierżawcy": "dom_dzierżawcy",
  "customer_id": "cust_123",
  "endpoint": "zakończenia czatu",
  "model": "analiza-duża",
  „status”: „działa”,
  „liczy”: {
    „przesłano”: 50000,
    „ukończone”: 31240,
    „nie powiodło się”: 180,
    „wygasł”: 0
  },
  „koszt”: {
    "szacunkowy": "184,20",
    "zarezerwowane": "205,00",
    "rozliczone": "117,43",
    "waluta": "USD"
  },
  "created_at": "2026-08-19T10:00:00Z",
  "submitted_at": "2026-08-19T10:05:00Z",
  "retrieval_deadline": "2026-09-17T10:00:00Z"

Obiekt publiczny nie powinien domyślnie ujawniać identyfikatorów plików dostawców, nazw operacji ani nieprzetworzonych błędów przesyłania danych. Należą one do metadanych dostępnych dla operatora.

Używaj trwałych rekordów zadań jako źródła prawdy

Warstwa wsadowa należąca do bramy wymaga trwałego stanu, zanim cokolwiek zostanie przesłane w górę łańcucha dostaw. Nie polegaj na rekordach partii dostawców jako jedynym sklepie stanowym. Rekordy dostawców są niezbędne, ale nie znają hierarchii najemców, rezerwacji budżetu, aliasów modeli wewnętrznych, klientów partnerów ani wymagań analitycznych.

Minimalny model bazy danych

Przydatny schemat ma trzy poziomy:

1. Zadanie wsadowe

batch_jobs
- identyfikator_pracy
- identyfikator_dzierżawcy
- identyfikator_projektu
- id_klienta dopuszcza wartość null- api_key_id
- punkt końcowy
- żądany_model
- rozwiązany_dostawca
- rozwiązany_model_dostawcy
- stan
- liczba_przedmiotów
- szacowane_tokeny_wejściowe
- szacowane_tokeny_wyjściowe
- zarezerwowana_kwota
- rozliczona_kwota
- utworzony_at
- przesłane_at
- ukończono_at
- wygasa o godz
- termin_pobrania
- anulowanie_requested_at

2. Element zbiorczy

batch_items
- identyfikator_pracy
- identyfikator_przedmiotu
- niestandardowy identyfikator
- klucz_idempotencji
- żądanie_hash
- stan
- Provider_request_index dopuszcza wartość null
- szacowane_tokeny
- current_input_tokens dopuszcza wartość null
- current_output_tokens dopuszcza wartość null
- rozliczana_kwota dopuszczająca wartość null
- wskaźnik_wyniku dopuszczający wartość null
- kod_błędu dopuszczający wartość null
- retry_of_item_id dopuszcza wartość null
- utworzony_at
- rozliczane_at

3. Metadane dostawcy

batch_provider_metadata
- identyfikator_pracy
- dostawca
- Provider_batch_id dopuszcza wartość null
- identyfikator_pliku_wejściowego dopuszcza wartość null
- identyfikator_pliku_wyjściowego dopuszcza wartość null
- identyfikator pliku_błędu dopuszczający wartość null
- nazwa_operacji dopuszczająca wartość null
- punkt końcowy
- region dopuszczający wartość null
- stan_natywny
- native_request_counts jsonb
- last_polled_at
- raw_error_pointer nullable

Oddzielenie metadanych dostawcy od publicznej umowy o pracę pozwala bramie rozwijać adaptery dostawców bez zakłócania interfejsów API dostępnych dla dzierżawców.

Wymagaj stabilnych identyfikatorów elementów przed wysyłką

Zalecenie: wygeneruj job_id bramy i wymagaj custom_id dla każdego elementu lub klucza idempotencji przed wysłaniem. Nigdy nie uzgadniaj wyników według kolejności.

Anthropic wyraźnie ostrzega, że ​​kolejność wyników nie jest gwarantowana i zaleca znaczące wartości custom_id. Nawet jeśli wydaje się, że dostawca pilnuje porządku, brama nie powinna od niego zależeć. Zadania są dzielone na kawałki, ponawiane, anulowane, częściowo ukończone i ponownie przetwarzane. Założenia dotyczące zamawiania w końcu zawiodą.

Format bezpiecznego identyfikatora produktu jest opisowy, ale nie wrażliwy:

tenantA.invoice_extraction.2026-08-19.row_000381

Unikaj umieszczania w identyfikatorach surowych e-maili, nazwisk, tytułów dokumentów i tajemnic klientów. Przechowuj poufne dane korelacji we własnej bazie danych dzierżawy, a nie w identyfikatorach widocznych dla dostawcy.

Normalizuj stany bez usuwania szczegółów dostawcy

Wsadowe interfejsy API dostawców udostępniają różne cykle życia. Brama powinna znormalizować je w małą wewnętrzną maszynę stanu, zrozumiałą dla pulpitów nawigacyjnych, rozliczeń i automatyzacji.

Zalecany znormalizowany cykl życia:

  • wersja robocza: zadanie istnieje, ale nadal można je edytować.
  • walidacja: trwa sprawdzanie poprawności bramy lub dostawcy.
  • w kolejce: zaakceptowane, ale jeszcze nie przetwarzanie.
  • uruchomione: dostawca przetwarza elementy.
  • finalizowanie: dostawca zakończył obliczenia i przygotowuje artefakty wyników.
  • ukończono: wszystkie zaakceptowane elementy osiągnęły końcowy sukces.
  • completed_with_errors: niektóre elementy zakończyły się pomyślnie, a inne nie.
  • wygasło: okno dostawcy zakończyło się przed wszystkimi pracami zakończone.
  • cancel_requested: najemca został poproszony o anulowanie, ale końcowa rozliczana praca nie została rozliczona.
  • anulowane: anulowanie zakończone.
  • nie powiodło się: awaria na poziomie zadania uniemożliwiła użyteczną realizację.

Nie zwijaj błędów dostawcy natywnego w ogólne etykiety zbyt wcześnie. Operatorzy nadal potrzebują dostępu do statusów natywnych, błędów walidacji, liczby żądań, identyfikatorów plików i nazw operacji podczas debugowania.

Przed przesłaniem sprawdź matrycę możliwości

Zalecenie: przeprowadź weryfikację wstępną przed rezerwacją budżetu i wysyłką dostawcy. Tryb wsadowy to nie tylko tryb synchroniczny z opóźnieniem. Niektóre modele, punkty końcowe, funkcje żądań, regiony i konfiguracje narzędzi mogą nie być obsługiwane przez wsadowy interfejs API dostawcy.

W wewnętrznej macierzy możliwości należy sprawdzić:

  • Obsługiwany punkt końcowy: czat, wiadomości, osadzanie, moderowanie lub generowanie.
  • Kwalifikowalność modelu do trybu wsadowego.
  • Maksymalny rozmiar zadania, liczba elementów, rozmiar żądania i rozmiar przesłanego pliku.
  • Czy przesyłanie strumieniowe jest włączone. zabronione.
  • Obsługa używania narzędzi i wywoływania funkcji.
  • Wyjście strukturalne lub obsługa schematu JSON.
  • Obsługa obrazu, dźwięku lub wprowadzania multimodalnego.
  • Ograniczenia regionalne i miejsca zamieszkania.
  • Okna przechowywania dostawców i pobierania wyników.
  • Limity szybkości i limity kolejek specyficzne dla partii.
  • Anulowanie semantyka.

Dobra reakcja przed inspekcją jest specyficzna:

{
  "error": "batch_capability_not_supported",
  "message": "Wybrany adapter wsadowy dostawcy nie obsługuje odpowiedzi przesyłanych strumieniowo. Usuń strumień=true lub wybierz synchroniczny punkt końcowy.",
  "field": "elementy[*].request.stream"

Jest to bardziej przydatne niż akceptacja zadania i niezaliczenie go po przejściu walidacji nadrzędnej.

Zarezerwuj budżet najemcy, a następnie rozlicz rzeczywiste wykorzystanie

Wykonywanie wsadowe komplikuje rozliczenia, ponieważ brama może utracić synchroniczny dostęp do dokładnego wykorzystania do czasu udostępnienia plików wynikowych. Bezpieczny wzorzec to wycenianie, rezerwowanie, przesyłanie, przetwarzanie, rozliczanie i uzgadnianie.

Potwierdzone fakty: OpenAI stwierdza, że ​​ceny Batch API są oferowane z rabatem w porównaniu z synchronicznymi API, a wygasłe lub anulowane partie mogą nadal zwracać ukończoną pracę, która jest płatna. Anthropic zauważa, że ​​wysokoprzepustowe przetwarzanie wsadowe może nieznacznie przekroczyć limit wydatków obszaru roboczego, co sprawia, że ​​rezerwacja po stronie bramy i dokonanie rozliczenia są ważne.

Zalecenie: zarezerwuj budżet najemcy przed przesłaniem, korzystając z szacunkowych tokenów, zasad cen wybranych dostawców i marginesu bezpieczeństwa. Po przejęciu wyników rozlicz rzeczywiste wykorzystanie na poziomie elementu. Jeśli kosztorys był zbyt wysoki, zwolnij niewykorzystaną rezerwację. Jeśli było za niskie, zastosuj skonfigurowaną przez najemcę politykę nadwyżek.

Praktyczne zdarzenia w księdze:

batch.estimated
partia.zarezerwowana
partia.przesłana
partia.element.rozliczony
partia.przedmiot.zwrócony
partia.cancel_requested
partia.wygasłaBatch.reconciled

Księga na poziomie pozycji jest niezbędna. Jeśli ukończono 45 000 elementów, a 5000 wygasło, dzierżawca powinien zostać obciążony opłatą za ukończoną pracę dostawcy, a nie za oryginalny manifest w postaci pojedynczego, niezróżnicowanego obiektu blob.

Twórz adaptery dostawców jako tłumacze, a nie właściciele logiki biznesowej

Każdy adapter dostawcy powinien wiedzieć, jak przekształcić zadanie bramy w format wsadowy dostawcy, przesłać je, odpytywać lub pobierać stan, pobierać wyniki i mapować wyniki natywne z powrotem do znormalizowanych rekordy.

Trzymaj zasady dzierżawy poza adapterem. Adapter nie powinien decydować, czy klient ma wystarczający budżet, czy klient partnerski jest zawieszony lub czy można przechowywać podpowiedzi. To są decyzje dotyczące bramy.

Obowiązki adaptera

  • Renderuj manifesty żądań specyficzne dla dostawcy.
  • Prześlij pliki wejściowe lub utwórz operacje dostawcy.
  • Przechowuj identyfikatory dostawcy w metadanych.
  • Odwzoruj stan natywny na stan znormalizowany.
  • Pobierz dane wyjściowe i artefakty błędów.
  • Przeanalizuj wyniki na poziomie elementu.
  • Zwróć natywne rekordy użycia, gdy dostępne.
  • Możliwość ponawiania prób w porównaniu z błędami terminala.

Obowiązki bramy

  • Uwierzytelnij najemcę i klucz interfejsu API.
  • Zastosuj kontrolę zespołu, projektu i klienta.
  • Rozwiąż aliasy modeli i zasady routingu dostawców.
  • Sprawdź możliwości wsadowe.
  • Rezerwuj i rozliczaj budżet.
  • Utrzymuj zadanie i element stan.
  • Egzekwuj zasady przechowywania.
  • Udostępnij analizy i eksporty.

To oddzielenie ułatwia dodanie nowego dostawcy bez konieczności przepisywania rozliczeń, analiz lub zarządzania dzierżawą.

Idempotentne pozyskiwanie wyników

Przyjmowanie wyników ma miejsce wtedy, gdy wiele systemów wsadowych przypadkowo powiela opłaty lub traci częściową pracę. Traktuj spożycie jako proces powtarzalny. Dwukrotne pobranie tego samego pliku wyjściowego, dwukrotne przetworzenie operacji tego samego dostawcy lub dwukrotne odtworzenie tego samego zdarzenia webhooka powinno być bezpieczne.

Zalecenie: używaj kluczy idempotencji na poziomie elementu i ograniczeń unikalności księgi. Wynik dla job_id + niestandardowe_id powinien zostać ustalony dokładnie raz, nawet jeśli przetwarzanie zostanie ponowione.

Sprawny przepływ przetwarzania:

  1. Uzyskaj krótkotrwałą blokadę dla artefaktu zadania lub wyniku.
  2. Pobierz dane wyjściowe dostawcy i artefakty błędów.
  3. Przeanalizuj rekordy w znormalizowane zdarzenia wynikowe elementu.
  4. Dopasuj każdy rekord według custom_id lub identyfikator elementu bramy.
  5. Zapisz metadane wyników i wykorzystanie w transakcji.
  6. Utwórz zdarzenie rozliczenia księgi tylko wtedy, gdy jeszcze takie nie istnieje.
  7. Aktualizuj liczbę zadań na podstawie stanów pozycji, a nie założeń.
  8. Zwolnij niewykorzystaną rezerwację budżetu, gdy znane są wszystkie stany terminali.

Jeśli dostępne są webhooki, zweryfikuj podpisy i chroń przed ponownym odtworzeniem. Jeśli wymagane jest odpytywanie, użyj odpytywania adaptacyjnego: odpytuj często w pobliżu oczekiwanego zakończenia, wycofuj się w długotrwałych okresach i zatrzymuj po rozliczeniu terminala.

Próbuj ponownie elementy, a nie całe zadania

Zalecenie: ponawiaj próby na poziomie elementu, jeśli to możliwe. Ponowne próby całego zadania są proste, ale zwiększają ryzyko powielenia pracy i utrudniają rozliczenia.

Klasuj błędy przed ponowną próbą:

  • Błędy sprawdzania poprawności: zwykle kończą się do czasu naprawienia żądania.
  • Błędy 5xx dostawcy: często można ponowić próbę z wycofywaniem.
  • Błędy przydziału lub limitu szybkości: spróbuj ponownie dopiero po wyczerpaniu się pojemności dostępne.
  • Blokady bezpieczeństwa: nie próbuj na ślepo ponownie; droga do obsługi polisy.
  • Elementy, które wygasły: można ponowić w ramach nowego zadania, jeśli najemca nadal chce, aby praca była możliwa i pozwala na to budżet.

Ponowna próba powinna utworzyć nowy przedmiot powiązany z oryginałem:

{
  "item_id": "item_retry_002",
  "retry_of_item_id": "item_001",
  "custom_id": "dzierżawaA.eval.row_901.retry_1"

Nie przesyłaj ponownie ukończonych elementów tylko dlatego, że były częścią zadania, które zakończyło się jako completed_with_errors lub expired.

Zdecyduj, co przechowywać: surowe wyniki, wskaźniki czy skróty

Systemy wsadowe to kuszące miejsca do gromadzenia podpowiedzi i wyników. Może to być przydatne przy eksportowaniu i debugowaniu, ale zwiększa odpowiedzialność za przechowywanie danych.

Zalecenie: umożliwienie konfigurowania zasad przechowywania przez najemcę. W przypadku wrażliwych obciążeń przechowuj metadane, skróty, wskaźniki użycia i wyników, a nie nieprzetworzone monity i dane wyjściowe.W przypadku mniej wrażliwych obciążeń dopuszczalne może być znormalizowane przechowywanie wyników, jeśli okna przechowywania, kontrola dostępu i przepływy pracy usuwania są jasne.

Śledź co najmniej:

  • Czy przechowywano nieprzetworzone dane wejściowe.
  • Czy przechowywano surowe dane wyjściowe.
  • Gdzie znajdują się artefakty wyników dostawcy.
  • Termin pobrania dostawcy.
  • Termin usunięcia bramy.
  • Hash of Gateway. żądanie i odpowiedź w sprawie audytu bez ujawniania treści.

Potwierdzony fakt: Wyniki partii stanów antropicznych są dostępne przez 29 dni od utworzenia i izolowane w obszarze roboczym. Ten rodzaj okna pobierania specyficznego dla dostawcy powinien znaleźć odzwierciedlenie w metadanych bramy i eksportach skierowanych do dzierżawców.

Udostępniaj analizy pasujące do sposobu działania zespołów

Analizy wsadowe powinny istnieć zarówno na poziomie zadania, jak i elementu. Właściciel produktu chce wiedzieć, czy nocne wzbogacanie zostało zakończone. Administrator finansów chce poznać koszty według dzierżawy, modelu i klienta. Inżynier chce wiedzieć, którą klasę awarii należy powtórzyć.

Przydatne wskaźniki obejmują:

  • Liczba elementów przesłanych, ukończonych, zakończonych niepowodzeniem, wygasłych i anulowanych.
  • Szacowany koszt w porównaniu z ustalonym kosztem.
  • Zarezerwowany budżet nadal jest utrzymywany.
  • Tokeny wejściowe i wyjściowe według dostawcy i modelu.
  • Wskaźniki trafień w pamięci podręcznej, gdy dostawcy je udostępniają.
  • Spróbuj ponownie. zliczanie i współczynnik powodzenia ponownych prób.
  • Średni czas w stanie kolejkowania, działania i finalizacji.
  • Najczęstsze błędy walidacji według punktu końcowego i modelu.
  • Przypisanie klienta partnera.

W przypadku użytkowników Partner API eksponuj zadania wsadowe jako zasoby o zasięgu klienta. Dzięki temu agencje i twórcy SaaS mogą oferować przetwarzanie sztucznej inteligencji w trybie offline, zachowując jednocześnie dane uwierzytelniające dostawcy nadrzędnego, uzgadnianie rozliczeń i obsługę limitów stawek wewnątrz bramy.

Wyraźne kompromisy

Abstrakcja bramy a możliwości specyficzne dla dostawcy: ujednolicona umowa upraszcza integrację, ale nie może sprawić, że funkcje każdego dostawcy będą identyczne. Wyraźnie informuj o błędach w zakresie możliwości.

Rezerwacja budżetu a dokładność szacunków: rezerwacja chroni najemców przed niekontrolowanymi ofertami pracy, ale szacunki mogą być błędne. Księga musi obsługiwać korekty, zwroty kosztów i obsługę nadwyżek.

Odpytywanie a webhook: odpytywanie jest proste i niezawodne, ale może marnować wywołania API i opóźniać zakończenie. Webhooki są szybsze, ale wymagają weryfikacji podpisu, ochrony przed ponownym odtwarzaniem i monitorowania.

Przechowywanie surowych wyników a minimalizacja przechowywania: przechowywanie znormalizowanych wyników poprawia eksport i analitykę, ale zwiększa obciążenie związane z przestrzeganiem przepisów. Wrażliwi najemcy mogą preferować wskaźniki i skróty.

Duże partie zamiast partii podzielonych na porcje: ogromne partie mogą poprawić wydajność po stronie dostawcy, ale mniejsze porcje zmniejszają promień wybuchu i ułatwiają ponowne próby.

Lista kontrolna implementacji

  • Utwórz osobną powierzchnię API zadania wsadowego.
  • Utrzymuj rekordy zadań i elementów przed przesłaniem przez dostawcę.
  • Wymagaj identyfikatorów zadań bramy i niestandardowe identyfikatory dla każdego elementu.
  • Normalizuj stany podczas przechowywania metadanych dostawcy natywnego.
  • Utwórz macierz możliwości dla każdego adaptera wsadowego dostawcy.
  • Weryfikuj manifesty przed zarezerwowaniem budżetu.
  • Zarezerwuj budżet dzierżawcy przed wysyłką.
  • Rozlicz rzeczywiste wykorzystanie na poziomie elementu po przetworzeniu.
  • Ustaw przetwarzanie wyników w sposób idempotentny.
  • Ponów próbę elementów, które zakończyły się niepowodzeniem, selektywnie, a nie całe zadania na ślepo.
  • Śledź terminy pobierania dostawców i zasady przechowywania bramek.
  • Udostępnij analizę zleceń i elementów najemcom i klientom partnerskim.

Przewidywania: dokąd zmierza ten wzorzec

Przewidywanie: wykonywanie wsadowe stanie się normalną częścią infrastruktury automatyzacji sztucznej inteligencji, a nie tylko mechanizmem rabatowym. W miarę wykonywania większej liczby zadań ewaluacyjnych, zadań czyszczenia danych, przeglądów bezpieczeństwa i potoków wzbogacania zespoły będą oczekiwać, że asynchroniczne obciążenia będą miały takie same zasady zarządzania jak synchroniczne wywołania interfejsu API.

Przewidywanie: wsadowe interfejsy API dostawców będą nadal różnić się w użyteczny sposób. Niektóre będą optymalizować pod kątem plików, inne pod kątem długotrwałych operacji, a jeszcze inne pod kątem zarządzanych zestawów danych lub wywołań zwrotnych zdarzeń. Warstwa adaptera bramy stanie się bardziej wartościowa, a nie mniejsza, ponieważ umowa operacyjna nad adapterami może pozostać stabilna.

Wniosek, który można zastosować

Nie przypisuj przetwarzania wsadowego do bramy AI API jako klapy ratunkowej specyficznej dla dostawcy. Zbuduj go jako trwały podsystem z własnymi rekordami zadań, identyfikatorami pozycji, modelem stanu, adapterami dostawców, rezerwacją budżetu, idempotentnym pozyskiwaniem i analityką.

Najważniejszym wyborem projektowym jest księgowanie na poziomie pozycji. Gdy każde żądanie w partii ma stabilną tożsamość, brama może uzgodnić nieuporządkowane wyniki, ponowić tylko nieudane prace, wystawić fakturę tylko za wykonaną pracę dostawcy i pokazać najemcom, co się stało.Na tym polega różnica między wysyłaniem plików do dostawcy a obsługą niezawodnego, wielomodelowego interfejsu API do obsługi asynchronicznych obciążeń.

Powiązane lektury

FAQ

Często zadawane pytania

Czy brama powinna bezpośrednio udostępniać natywne interfejsy API wsadowe dostawcy?
Zwykle nie. Ujawnienie natywnych interfejsów API bezpośrednio daje programistom dostęp do funkcji dostawcy, ale osłabia rozliczenia na poziomie dzierżawy, analizy, ponowne próby i zarządzanie. Lepszym wzorcem jest umowa o pracę neutralna dla dostawcy, zawierająca metadane specyficzne dla dostawcy dostępne dla operatorów.
Dlaczego wymagany jest identyfikator niestandardowy dla każdego elementu?
Wyniki partii nie mogą zostać zwrócone w tej samej kolejności, w jakiej zostały przesłane. Stabilny identyfikator poszczególnych pozycji umożliwia bramie uzgadnianie wyników, rozliczanie użycia, ponawianie prób nieudanych pozycji i unikanie podwójnych opłat.
W jaki sposób należy rozliczać partie anulowane lub wygasłe?
Rachunek wyłącznie za ukończoną pracę dostawcy po przyjęciu i uzgodnieniu wyników. Anulowane lub wygasłe zadania mogą nadal zawierać ukończone elementy, więc sam status na poziomie zadania nie wystarczy do dokładnego rozliczenia.
Czy brama powinna przechowywać nieprzetworzone monity i dane wyjściowe z zadań wsadowych?
Nie domyślnie dla wrażliwych dzierżawców. Przechowuj metadane, skróty, wskaźniki użycia i wyników, chyba że dzierżawca jawnie włączy przechowywanie nieprzetworzonych wyników z jasnymi zasadami przechowywania.