OpenAI-kompatibilis Batch API
Töltsön fel JSONL kötegelt bemeneti fájlokat, és dolgozza fel az OpenAI-kompatibilis kötegeket a Model Gate tartós során keresztül.
OpenAI-kompatibilis Batch API
A Model Gate az OpenAI Files + Batch munkafolyamatot valósítja meg https://api.model-gate.com/v1. Ez egy kompatibilitási réteg: minden JSONL-elem a normál Model Gate-következtetési útvonalon keresztül kerül végrehajtásra. Model Gate igen nem küldjön be egy upstream szolgáltató natív OpenAI köteget.
A fájlok/kötegelt olvasási/vezérlési végpontok egy vezérlősíkot jelentenek: az egyébként érvényes aktív API hitelesítő adatok listázhatják/olvashatják/letölthetik/törölhetik a meglévő erőforrásokat még akkor is, ha a számlaegyenleg jelenleg nulla, vagy egy visszaállítható költési korlát kimerült. A raktározási műveletek eltérőek: POST /v1/files és POST /v1/batches új pozitív egyenleg/ráfordítás engedélyezése szükséges, mielőtt a Model Gate beilleszti a fájl/munka/tétel adatait. A nulla egyenlegkulcs ezért nem tudja feltölteni a JSONL-t, és nem hozhat létre új kötegelt tárhelyet. A tényleges kötegelt tételek továbbra is újraellenőrzik a belépést a munkavállalói igénylés időpontjában, és sorban maradnak, ha a pénzeszközök később kimerülnek. A JSONL bemenetet fokozatosan olvassa be, és soronként érvényesítse/beszúrja; A Model Gate nem őrzi meg a teljes 200 MB-os bemenetet és az összes kéréstestet a folyamatmemóriában a köteg létrehozása során. A felhasználónkénti tárolt bájt/fájl/aktív munka/sorba sorolt elem kvóták független határt adnak az adatbázis-visszaélésnek.
Ebben a kiadásban a támogatott kötegelt végpontok a következők:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Minden végrehajtott elem meg van jelölve request_mode=batch, batch_protocol=openai, azzal batch_job_public_id és custom_id.
1. Töltsön fel egy JSONL bemeneti fájlt
Minden nem üres sor tartalmaz custom_id, method, url, és body. Az URL-nek meg kell egyeznie a később megadott végponttal /v1/batches.
Példa 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."}}
Kér
curl https://api.model-gate.com/v1/files \
-H "Authorization: Bearer mg_live_..." \
-F "purpose=batch" \
-F "[email protected]"
Válasz: 200
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"created_at": 1786610000,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"status_details": null
}
2. Hozza létre a köteget
completion_window kell lennie 24h.
Kér
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"}
}'
Válasz: 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. Vegyen le egy köteget
Kér
curl https://api.model-gate.com/v1/batches/batch_01K... \
-H "Authorization: Bearer mg_live_..."
Válasz – kész
{
"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. Eredmények letöltése
Kér
curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
-H "Authorization: Bearer mg_live_..."
Válasz: 200
{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}
A sikertelen, törölt vagy lejárt tételeket a rendszer ide írja error_file_id ahogy a JSONL rögzíti a response:null és egy error objektum.
5. Sorolja fel a tételeket
limit alapértelmezés szerint 20 és innen kell származnia 1 hogy 100. Használat after kurzor oldalszámozáshoz.
Kér
curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
-H "Authorization: Bearer mg_live_..."
Válasz: 200
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
A befejezett kötegobjektumok tartalmazhatnak egy aggregátumot usage objektumot, ha rendezve áll rendelkezésre a Model Gate kérés elszámolása.
6. Töröljön egy köteget
A Mégse funkció megakadályozza, hogy a sorban álló elemek elinduljanak; a már feldolgozott tétel befejeződhet.
Kér
curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
-H "Authorization: Bearer mg_live_..."
Válasz: 200
{
"id": "batch_01K...",
"object": "batch",
"status": "cancelling",
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
}
}
7. Fájl metaadatai, listázása és törlése
Metaadatok lekérése:
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
}
Fájlok listázása az opcionális lehetőséggel purpose, after, és order=asc|desc; limit alapértelmezés szerint 10000 és innen kell származnia 1 hogy 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
}
Hivatkozás nélküli/lejárt kompatibilis fájl törlése:
curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"deleted": true
}
Határértékek és helyreállítási szemantika
A Model Gate legfeljebb 50 000 JSONL elemet fogad el, és a feltöltött fájlt a konfigurált OPENAI_BATCH_MAX_FILE_BYTES érték (alapértelmezés szerint 200 MiB). Minden egyes tételnek meg kell felelnie a Model Gate normál értékének is MAX_REQUEST_BODY_BYTES határ. custom_id az értékeknek egyedinek kell lenniük. A kötegelt tételek nem használhatók stream:true vagy beágyazott async:true. A nagy JSONL-fájlok belsőleg adatbázis-darabokként vannak megőrizve, nem pedig egyetlen túlméretezett SQL-értékként.
A végrehajtás helyreállítása az legalább egyszer, nem pontosan egyszer. Ha egy dolgozó leáll egy felfelé irányuló kérés elfogadása után, de még azelőtt, hogy az eredmény tartósan rögzítésre kerülne, akkor a lejárt bérlet miatt ugyanaz a Model Gate kérésazonosító újra próbálkozhat. Az elszámolás idempotens marad a már befejezett kéréssorok esetében, de a modell által kezdeményezett eszköz/külső mellékhatásoknak maguknak idempotenseknek kell lenniük.
Minden JSONL-elem közvetlenül azelőtt bekerül, mielőtt egy dolgozó igényt tartana rá. Az egyébként érvényes tételek sorban maradnak, amíg a folyószámla egyenlege nem pozitív, vagy a kulcs/csoport visszaállítható költési limit már kimerült. Ez a várakozási állapot nem vesz igénybe kísérletet, és nem hoz létre hibarekordot; egy későbbi feltöltés, használat visszaállítása vagy limitemelés automatikusan jogosulttá teszi a fennmaradó tételeket. A Model Gate nem tart fenn elméleti maximális tételköltséget. A már bevitt tételek ezért még akkor is teljes egészében kiegyenlíthetők, ha az egyidejű munkavégzés negatívvá teszi a végső egyenleget, vagy kismértékben túllépi a költési korlátot, ami után az új tételek sorban maradnak, amíg a fiók újra jogosulttá válik.
Árképzés és könyvelés
A kötegelt adapter nem használja a szolgáltató natív kötegelt végrehajtását. Minden cikk átmegy a normál Model Gate modell útválasztáson és elszámoláson, majd megkapja az árképzési sablont Batch kérés ár együttható. Alapértelmezett: 1.
Ha az együttható 0.5, egy olyan elem, amelynek normál Model Gate költsége 0.02 néven van megterhelve 0.01. A hivatalos referenciaárak változatlanok maradnak. Az alkalmazott együttható pillanatképet készít, és az ellenőrzési kérelemben tárolja.
Hibák
{
"error": {
"message": "line 2 url must match batch endpoint /v1/responses",
"type": "invalid_request_error",
"param": null,
"code": "invalid_batch_file"
}
}