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"
}
}