B2BB2B LLM

Claude Message Batches

Korzystaj z partii wiadomości zgodnych z Anthropic, podczas gdy Model Gate wykonuje każdy element poprzez swoją trwałą kolejkę wewnętrzną.

Claude Message Batches

Istniejące operacje odczytu/kontroli wsadowej pozostają dostępne przy saldzie zerowym dla ważnych, aktywnych danych uwierzytelniających, ale POST /v1/messages/batches wymaga przyjęcia świeżego dodatniego salda/wydatków przed zapisaniem jakichkolwiek wierszy zadań/przedmiotów. Dlatego klucz o zerowym saldzie nie może utworzyć nowej partii Claude ani wykorzystać pamięci retencyjnej MariaDB. Rzeczywiste pozycje są ponownie sprawdzane, gdy pracownicy je odbierają, i czekają w trwałej kolejce, jeśli fundusze zostaną później wyczerpane. Dane wejściowe są dekodowane przyrostowo, element po elemencie, a nie ładowane jako kompletny dokument JSON o wielkości 256 MB w pamięci, a limity aktywnego zadania/elementu w kolejce na użytkownika ograniczają nadużycie miejsca na dane niezależnie od rozliczeń.

Model Gate implementuje zgodny z Anthropic interfejs API Message Batches https://api.model-gate.com. Jest to warstwa kompatybilności: Model Gate trwale przechowuje partię i wykonuje każdy element poprzez normalną Model Gate /v1/messages ścieżka. To prawda nie przesłać natywną dla dostawcy partię Anthropic w górę łańcucha dostaw.

Użyj normalnego klucza API modelu (mg_live_...). Każdy przedmiot rozliczany jest na indywidualne zamówienie request_mode=batch, batch_protocol=claude, identyfikator partii i jej custom_id.

Przesyłanie strumieniowe nie jest obsługiwane w ramach partii. Aliasy modeli są rozwiązywane przed umieszczeniem elementu w kolejce.

Utwórz grupę wiadomości

Wniosek

curl https://api.model-gate.com/v1/messages/batches \
  -H "x-api-key: mg_live_..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "requests": [
      {
        "custom_id": "summary-1",
        "params": {
          "model": "ch-47",
          "max_tokens": 256,
          "messages": [{"role":"user","content":"Summarize this text."}]
        }
      }
    ]
  }'

Odpowiedź — 200

{
  "id": "msgbatch_01K...",
  "type": "message_batch",
  "processing_status": "in_progress",
  "request_counts": {
    "processing": 1,
    "succeeded": 0,
    "errored": 0,
    "canceled": 0,
    "expired": 0
  },
  "ended_at": null,
  "created_at": "2026-08-13T08:30:00Z",
  "expires_at": "2026-08-14T08:30:00Z",
  "cancel_initiated_at": null,
  "results_url": null
}

Odzyskaj partię

Wniosek

curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
  -H "x-api-key: mg_live_..."

Odpowiedź — zakończona

{
  "id": "msgbatch_01K...",
  "type": "message_batch",
  "processing_status": "ended",
  "request_counts": {
    "processing": 0,
    "succeeded": 1,
    "errored": 0,
    "canceled": 0,
    "expired": 0
  },
  "ended_at": "2026-08-13T08:30:04Z",
  "results_url": "https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results"
}

Przeczytaj wyniki

Wyniki są zwracane jako linie JSON. Nie zakładaj, że logika aplikacji zależy od pierwotnej kolejności wprowadzania danych; wyniki dopasowania według custom_id.

Wniosek

curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results \
  -H "x-api-key: mg_live_..."

Odpowiedź — 200

{"custom_id":"summary-1","result":{"type":"succeeded","message":{"id":"msg_...","type":"message","role":"assistant","content":[{"type":"text","text":"..."}]}}}

Lista partii

limit domyślnie 20 i musi pochodzić z 1 Do 100. Używać after_id Lub before_id do paginacji kursora; nie wysyłaj obu w jednym żądaniu.

Wniosek

curl "https://api.model-gate.com/v1/messages/batches?limit=20&after_id=msgbatch_01K..." \
  -H "x-api-key: mg_live_..."

Odpowiedź — 200

{
  "data": [],
  "has_more": false,
  "first_id": null,
  "last_id": null
}

Anuluj partię

Anuluj zatrzymuje odebranie elementów znajdujących się w kolejce. Przedmiot, który jest już przetwarzany, może zostać zakończony.

Wniosek

curl -X POST https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../cancel \
  -H "x-api-key: mg_live_..."

Odpowiedź — 200

{
  "id": "msgbatch_01K...",
  "type": "message_batch",
  "processing_status": "canceling",
  "request_counts": {
    "processing": 1,
    "succeeded": 0,
    "errored": 0,
    "canceled": 0,
    "expired": 0
  }
}

Usuń zakończoną partię

Usunięcie jest akceptowane dopiero po osiągnięciu przez partię stanu końcowego.

Wniosek

curl -X DELETE https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
  -H "x-api-key: mg_live_..."

Odpowiedź — 200

{
  "id": "msgbatch_01K...",
  "type": "message_batch_deleted"
}

Semantyka odzyskiwania

Elementy wsadowe korzystają z tej samej trwałej kolejki, co natywne żądania asynchroniczne. Regeneracja jest przynajmniej raz, nie dokładnie raz: po awarii pracownika można odzyskać porzuconą dzierżawę, a przedmiot może zostać ponownie wysłany w górę łańcucha dostaw, jeśli pierwsza odpowiedź w górę łańcucha dostaw nie została trwale zapisana. Identyfikator żądania Model Gate pozostaje stabilny podczas ponownych prób, a zabezpieczenia rozliczeniowe zapobiegają drugiemu obciążeniu konta w przypadku już zakończonego żądania.

Każdy przedmiot jest przyjmowany bezpośrednio przed odebraniem go przez pracownika. W przeciwnym razie ważne pozycje pozostają w kolejce, dopóki saldo rachunku bieżącego nie jest dodatnie lub limit wydatków możliwy do zresetowania dla klucza/grupy został już wyczerpany; oczekiwanie na środki nie powoduje podjęcia próby ani oznaczenia przedmiotu jako nieudanego. Późniejsze doładowanie, zresetowanie użycia lub zwiększenie limitu automatycznie wznawia kwalifikujące się pozycje w kolejce. Model Gate nie rezerwuje kosztów partii w najgorszym przypadku, więc jednocześnie przyjęte pozycje mogą zakończyć się ujemnym saldem końcowym lub niewielkim przekroczeniem limitu wydatków; utrzymywane są jedynie kolejne nowe pozycje.

Cennik i księgowość

Każdy element wsadowy wykorzystuje ten sam routing modelu, księgowanie tokenów, migawkę cen, wycenę użycia, limity klucza/grupy API i logikę rozliczeń, co normalne żądanie Model Gate. Administrator może skonfigurować: Współczynnik ceny żądania partii w szablonie wyceny konta. Wartość domyślna to 1.

Na przykład przy normalnym koszcie Model Gate 0.02 i współczynnik partii 0.5, rzeczywiste obciążenie konta wynosi 0.01. Zapisana kwota referencyjna oficjalnego dostawcy nie jest mnożona przez współczynnik partii Model Gate. Używanie żądań natywnych "async": true również nie mają na to wpływu.

Jeżeli współczynnik różni się od 1, jest to pokazane na stronie Ceny modeli i w /v1/models Jak batch_pricing plus skuteczne batch_cost stawki.

Błędy

Nieprawidłowy lub duplikat custom_id, nieznany model, stream:true, zagnieżdżony async:true, zbyt duże żądanie lub nieprawidłowa treść zwraca normalną odpowiedź na błąd w stylu antropicznym.

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "summary-1: stream=true is not supported inside a batch"
  }
}