Claude Message Batches
Utilizați loturi de mesaje compatibile cu Antropic în timp ce Model Gate execută fiecare articol prin coada sa internă durabilă.
Claude Message Batches
Operațiunile existente de citire/control în lot rămân disponibile la sold zero pentru o acreditare activă altfel validă, dar POST /v1/messages/batches necesită o nouă admitere a soldului pozitiv/cheltuielilor înainte ca orice rând de locuri de muncă/articol să fie stocat. Prin urmare, o cheie de echilibru zero nu poate crea un nou lot Claude sau consuma stocarea de retenție MariaDB. Articolele reale verifică din nou admiterea atunci când lucrătorii le revendică și așteaptă în coada durabilă dacă fondurile se epuizează ulterior. Intrarea este decodificată în mod incremental element cu articol, mai degrabă decât încărcată ca un document JSON complet de 256 MB în memorie, iar cotele de job activ/articol aflat în coadă per utilizator limitează abuzul de stocare independent de facturare.
Model Gate implementează un API Message Batches compatibil cu Antropic https://api.model-gate.com. Este un strat de compatibilitate: Model Gate stochează lotul în mod durabil și execută fiecare articol prin Model Gate normal /v1/messages cale. Da nu trimiteți în amonte un lot antropic nativ de furnizor.
Utilizați o cheie API de model normală (mg_live_...). Fiecare articol este contabilizat ca o cerere individuală cu request_mode=batch, batch_protocol=claude, ID-ul lotului și acesta custom_id.
Streamingul nu este acceptat în cadrul unui lot. Aliasurile de model sunt rezolvate înainte ca elementul să fie pus în coadă.
Creați un lot de mesaje
Cerere
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."}]
}
}
]
}'
Răspuns - 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
}
Preluați un lot
Cerere
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Răspuns - încheiat
{
"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"
}
Citiți rezultatele
Rezultatele sunt returnate ca linii JSON. Nu presupuneți că logica aplicației depinde de ordinea inițială de introducere; rezultate meci de custom_id.
Cerere
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results \
-H "x-api-key: mg_live_..."
Răspuns - 200
{"custom_id":"summary-1","result":{"type":"succeeded","message":{"id":"msg_...","type":"message","role":"assistant","content":[{"type":"text","text":"..."}]}}}
Listați loturile
limit implicit la 20 și trebuie să fie de la 1 la 100. Utilizare after_id sau before_id pentru paginarea cursorului; nu trimiteți ambele într-o singură cerere.
Cerere
curl "https://api.model-gate.com/v1/messages/batches?limit=20&after_id=msgbatch_01K..." \
-H "x-api-key: mg_live_..."
Răspuns - 200
{
"data": [],
"has_more": false,
"first_id": null,
"last_id": null
}
Anulați un lot
Anulare oprește revendicarea articolelor aflate în coadă. Este posibil ca un articol deja procesat.
Cerere
curl -X POST https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../cancel \
-H "x-api-key: mg_live_..."
Răspuns - 200
{
"id": "msgbatch_01K...",
"type": "message_batch",
"processing_status": "canceling",
"request_counts": {
"processing": 1,
"succeeded": 0,
"errored": 0,
"canceled": 0,
"expired": 0
}
}
Ștergeți un lot încheiat
Ștergerea este acceptată numai după ce lotul a ajuns la o stare terminală.
Cerere
curl -X DELETE https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Răspuns - 200
{
"id": "msgbatch_01K...",
"type": "message_batch_deleted"
}
Semantica de recuperare
Elementele lot utilizează aceeași coadă durabilă ca și cererile native asincrone. Recuperarea este măcar-o dată, nu exact o dată: după un accident de lucrător, un contract de închiriere abandonat poate fi revendicat și un articol poate fi trimis din nou în amonte dacă primul răspuns din amonte nu a fost stocat în mod durabil. ID-ul cererii Model Gate rămâne stabil pe parcursul reîncercării, iar gardienii de decontare împiedică un al doilea debit de cont pentru o solicitare deja finalizată.
Fiecare articol este admis imediat înainte ca un lucrător să-l revendice. În caz contrar, articolele valide rămân în coadă în timp ce soldul contului curent este nepozitiv sau limita de cheltuieli resetabilă cheie/grup este deja epuizată; așteptarea fondurilor nu consumă o încercare sau marchează elementul eșuat. O reîncărcare ulterioară, o resetare a utilizării sau o creștere a limitei reia automat articolele eligibile din coadă. Model Gate nu rezervă un cost de lot în cel mai rău caz, astfel încât articolele admise concomitent se pot termina cu un sold final negativ sau o depășire mică a limitei de cheltuieli; sunt păstrate numai articolele noi ulterioare.
Prețuri și contabilitate
Fiecare articol de lot folosește același model de rutare, contabilitate token, instantaneu de preț, evaluarea utilizării, limite de cheie API/grup și logică de decontare ca o solicitare normală Model Gate. Un administrator poate configura un Coeficient de preț cerere lot pe șablonul de preț al contului. Valoarea implicită este 1.
De exemplu, cu costul normal Model Gate 0.02 și coeficientul de lot 0.5, debitul real al contului este 0.01. Suma de referință oficial-furnizor salvată nu este înmulțită cu acest coeficient de lot Model Gate. Solicitări native folosind "async": true nici nu sunt afectate.
Dacă coeficientul diferă de 1, este afișat pe pagina Prețuri model și în /v1/models ca batch_pricing plus eficienta batch_cost ratele.
Erori
Invalid sau duplicat custom_id, un model necunoscut, stream:true, imbricat async:true, o solicitare supradimensionată sau un corp nevalid returnează un răspuns de eroare normal în stil antropic.
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "summary-1: stream=true is not supported inside a batch"
}
}