OpenAI-kompatibel Batch API
Last opp JSONL batch-inndatafiler og behandle OpenAI-kompatible batcher gjennom Model Gates holdbare kø.
OpenAI-kompatibel Batch API
Model Gate implementerer OpenAI Files + Batch-arbeidsflyten på https://api.model-gate.com/v1. Dette er et kompatibilitetslag: hvert JSONL-element kjøres gjennom den normale Model Gate-inferensbanen. Model Gate gjør det ikke send inn en oppstrøms leverandørbasert OpenAI-batch.
Filer/Batch lese-/kontrollendepunkter er et kontrollplan: en ellers gyldig aktiv API-legitimasjon kan liste/lese/laste ned/avbryte/slette eksisterende ressurser selv når kontosaldoen for øyeblikket er null eller en tilbakestillbar forbruksgrense er oppbrukt. Lagerproduserende operasjoner er forskjellige: POST /v1/files og POST /v1/batches krever ny positiv saldo/forbruksopptak før Model Gate setter inn fil-/jobb-/varedata. En nullbalansenøkkel kan derfor ikke laste opp JSONL eller opprette ny batchlagring. Faktiske batchvarer kontrollerer fortsatt innleggelsen på nytt ved kravtidspunktet og står i kø hvis midlene senere er oppbrukt. JSONL-inndata leses inkrementelt og valideres/settes inn linje for linje; Model Gate beholder ikke hele 200 MB-inndata pluss alle forespørselselementer i prosessminnet mens du oppretter en batch. Per-bruker lagret-byte/fil/aktiv-jobb/kø-elementkvoter gir en uavhengig grense for databasemisbruk.
Støttede batchendepunkter i denne utgivelsen er:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Hvert utførte element er merket request_mode=batch, batch_protocol=openai, med sin batch_job_public_id og custom_id.
1. Last opp en JSONL-inndatafil
Hver ikke-tom linje inneholder custom_id, method, url, og body. URL-en må være lik endepunktet som senere ble levert til /v1/batches.
Eksempel batch.jsonl:
{"custom_id":"request-1","method":"POST","url":"/v1/responses","body":{"model":"gpt-5.4","input":"Summarize this text."}}
{"custom_id":"request-2","method":"POST","url":"/v1/responses","body":{"model":"gpt-5.4","input":"Classify this text."}}
Forespørsel
curl https://api.model-gate.com/v1/files \
-H "Authorization: Bearer mg_live_..." \
-F "purpose=batch" \
-F "[email protected]"
Svar - 200
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"created_at": 1786610000,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"status_details": null
}
2. Opprett batchen
completion_window må være 24h.
Forespørsel
curl https://api.model-gate.com/v1/batches \
-H "Authorization: Bearer mg_live_..." \
-H "Content-Type: application/json" \
-d '{
"input_file_id":"file-01K...",
"endpoint":"/v1/responses",
"completion_window":"24h",
"metadata":{"job":"nightly-evaluation"}
}'
Svar - 200
{
"id": "batch_01K...",
"object": "batch",
"endpoint": "/v1/responses",
"input_file_id": "file-01K...",
"completion_window": "24h",
"status": "in_progress",
"output_file_id": null,
"error_file_id": null,
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
},
"metadata": {
"job": "nightly-evaluation"
}
}
3. Hent en batch
Forespørsel
curl https://api.model-gate.com/v1/batches/batch_01K... \
-H "Authorization: Bearer mg_live_..."
Svar — fullført
{
"id": "batch_01K...",
"object": "batch",
"endpoint": "/v1/responses",
"status": "completed",
"output_file_id": "file-01KOUTPUT...",
"error_file_id": null,
"request_counts": {
"total": 2,
"completed": 2,
"failed": 0
},
"usage": {
"input_tokens": 240,
"input_tokens_details": {"cached_tokens": 0},
"output_tokens": 90,
"output_tokens_details": {"reasoning_tokens": 0},
"total_tokens": 330
}
}
4. Last ned resultater
Forespørsel
curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
-H "Authorization: Bearer mg_live_..."
Svar - 200
{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}
Mislykkede, kansellerte eller utløpte varer skrives til error_file_id som JSONL registrerer med response:null og en error gjenstand.
5. List batcher
limit standard til 20 og må være fra 1 til 100. Bruk after for markørpaginering.
Forespørsel
curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
-H "Authorization: Bearer mg_live_..."
Svar - 200
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
Fullførte batchobjekter kan inkludere et aggregat usage objekt når avgjort Model Gate-forespørselsregnskap er tilgjengelig.
6. Avbryt en batch
Avbryt hindrer elementer i kø fra å starte; et element som allerede er under behandling, kan fullføres.
Forespørsel
curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
-H "Authorization: Bearer mg_live_..."
Svar - 200
{
"id": "batch_01K...",
"object": "batch",
"status": "cancelling",
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
}
}
7. Filmetadata, oppføring og sletting
Hent metadata:
curl https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"expires_at": 1789202000
}
Liste filer med valgfrie purpose, after, og order=asc|desc; limit standard til 10000 og må være fra 1 til 10000:
curl "https://api.model-gate.com/v1/files?purpose=batch&order=desc&limit=100" \
-H "Authorization: Bearer mg_live_..."
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
Slett en ikke-referert/utløpt-kompatibel fil:
curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"deleted": true
}
Grenser og gjenopprettingssemantikk
Model Gate godtar opptil 50 000 JSONL-elementer og begrenser den opplastede filen til den konfigurerte OPENAI_BATCH_MAX_FILE_BYTES verdi (200 MiB som standard). Hver enkelt batchvare må også passe til Model Gates normal MAX_REQUEST_BODY_BYTES begrense. custom_id verdier må være unike. Batch-elementer kan ikke brukes stream:true eller nestet async:true. Store JSONL-filer vedvares internt som databasebiter i stedet for én overdimensjonert SQL-verdi.
Utførelsesgjenoppretting er minst én gang, ikke akkurat-en gang. Hvis en arbeider stopper etter at en oppstrømsforespørsel ble akseptert, men før resultatet er varig registrert, kan en utløpt leieavtale føre til at samme Model Gate-forespørsels-ID prøves på nytt. Oppgjør forblir idempotent for allerede ferdige forespørselsrader, men verktøy/eksterne bivirkninger initiert av en modell bør i seg selv være idempotente.
Hver JSONL-vare tas opp umiddelbart før en arbeider gjør krav på den. Ellers gyldige varer står i kø mens gjeldende kontosaldo er ikke-positiv eller den tilbakestillelige forbruksgrensen for nøkkel/gruppe allerede er oppbrukt. Denne ventetilstanden bruker ikke et forsøk eller oppretter en feilpost; en senere påfylling, tilbakestilling av bruk eller grenseøkning gjør automatisk de resterende elementene kvalifisert. Model Gate reserverer ikke en teoretisk maksimal batchkostnad. Elementer som allerede er innrømmet kan derfor gjøres opp i sin helhet selv når samtidig arbeid gjør den endelige saldoen negativ eller gir en liten forbruksgrenseoverskridelse, hvoretter nye varer står i kø til kontoen er kvalifisert igjen.
Prising og regnskap
Batchadapteren bruker ikke leverandørbasert batchkjøring. Hver vare går gjennom normal Model Gate-modellruting og oppgjør, og mottar deretter prismalens Batch forespørsel pris koeffisient. Misligholde: 1.
Hvis koeffisienten er 0.5, en vare hvis normale Model Gate-kostnad er 0.02 debiteres som 0.01. Offisiell referanseprising forblir uendret. Den anvendte koeffisienten er snapshottet og lagret på forespørselen om revisjon.
Feil
{
"error": {
"message": "line 2 url must match batch endpoint /v1/responses",
"type": "invalid_request_error",
"param": null,
"code": "invalid_batch_file"
}
}