Ar OpenAI saderīgs Batch API
Augšupielādējiet JSONL pakešu ievades failus un apstrādājiet ar OpenAI saderīgas partijas, izmantojot Model Gate ilgstošo rindu.
Ar OpenAI saderīgs Batch API
Model Gate ievieš OpenAI Files + Batch darbplūsmu https://api.model-gate.com/v1. Šis ir saderības slānis: katrs JSONL vienums tiek izpildīts, izmantojot parasto Model Gate secinājuma ceļu. Modelis Gate dara nē iesniedziet augšupējo pakalpojumu sniedzēja vietējo OpenAI partiju.
Failu/pakešu lasīšanas/vadības galapunkti ir vadības plakne: citādi derīgs aktīvais API akreditācijas dati var uzskaitīt/lasīt/lejupielādēt/atcelt/dzēst esošos resursus pat tad, ja konta atlikums pašlaik ir nulle vai ir izsmelts atiestatāmais tēriņu ierobežojums. Uzglabāšanas ražošanas darbības ir dažādas: POST /v1/files un POST /v1/batches pirms Model Gate ievietošanas faila/darba/preces datus, nepieciešama jauna pozitīva bilance/tēriņu piekrišana. Tāpēc nulles bilances atslēga nevar augšupielādēt JSONL vai izveidot jaunu pakešu krātuvi. Faktiskās partijas preces joprojām atkārtoti pārbauda uzņemšanu darbinieka pieprasījuma iesniegšanas brīdī un paliek rindā, ja līdzekļi vēlāk tiek iztērēti. JSONL ievade tiek nolasīta pakāpeniski un apstiprināta/ievietota rindu pa rindiņai; Modeļa vārti nesaglabā pilnu 200 MB ievadi, kā arī visus pieprasījuma korpusus procesa atmiņā, veidojot partiju. Katra lietotāja saglabāto baitu/failu/aktīvo darbu/rindas vienumu kvotas nodrošina neatkarīgu datu bāzes ļaunprātīgas izmantošanas robežu.
Šajā laidienā atbalstītie pakešu galapunkti ir:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Katrs izpildītais vienums ir atzīmēts request_mode=batch, batch_protocol=openai, ar to batch_job_public_id un custom_id.
1. Augšupielādējiet JSONL ievades failu
Katra netukša rinda satur custom_id, method, url, un body. Vietrādim URL ir jābūt vienādam ar galapunktu, kas vēlāk tika piegādāts /v1/batches.
Piemērs 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."}}
Pieprasīt
curl https://api.model-gate.com/v1/files \
-H "Authorization: Bearer mg_live_..." \
-F "purpose=batch" \
-F "[email protected]"
Atbilde — 200
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"created_at": 1786610000,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"status_details": null
}
2. Izveidojiet partiju
completion_window jābūt 24h.
Pieprasīt
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"}
}'
Atbilde — 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. Paņemiet partiju
Pieprasīt
curl https://api.model-gate.com/v1/batches/batch_01K... \
-H "Authorization: Bearer mg_live_..."
Atbilde — pabeigta
{
"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. Lejupielādējiet rezultātus
Pieprasīt
curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
-H "Authorization: Bearer mg_live_..."
Atbilde — 200
{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}
Neveiksmīgi, atcelti vai beidzies vienumi tiek rakstīti uz error_file_id kā JSONL ieraksta ar response:null un an error objektu.
5. Uzskaitiet partijas
limit pēc noklusējuma uz 20 un tam jābūt no 1 uz 100. Izmantot after kursora lapināšanai.
Pieprasīt
curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
-H "Authorization: Bearer mg_live_..."
Atbilde — 200
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
Pabeigtie pakešu objekti var ietvert apkopojumu usage objekts, kad ir nokārtots Model Gate pieprasījuma uzskaite.
6. Atceliet partiju
Atcelt neļauj rindā ievietotos vienumus sākt; var tikt pabeigta jau apstrādāta prece.
Pieprasīt
curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
-H "Authorization: Bearer mg_live_..."
Atbilde — 200
{
"id": "batch_01K...",
"object": "batch",
"status": "cancelling",
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
}
}
7. Faila metadati, saraksts un dzēšana
Izgūt metadatus:
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
}
Failu saraksts ar neobligātu purpose, after, un order=asc|desc; limit pēc noklusējuma uz 10000 un tam jābūt no 1 uz 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
}
Dzēst failu bez atsauces/kura derīguma termiņš ir beidzies:
curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"deleted": true
}
Ierobežojumi un atkopšanas semantika
Model Gate pieņem līdz 50 000 JSONL vienumu un ierobežo augšupielādēto failu līdz konfigurētajam OPENAI_BATCH_MAX_FILE_BYTES vērtība (200 MiB pēc noklusējuma). Katrai atsevišķai partijas vienībai ir jāatbilst arī Model Gate parastajam MAX_REQUEST_BODY_BYTES ierobežojums. custom_id vērtībām jābūt unikālām. Partijas vienumus nevar izmantot stream:true vai ligzdotas async:true. Lieli JSONL faili tiek saglabāti iekšēji kā datu bāzes gabali, nevis viena liela SQL vērtība.
Izpildes atgūšana ir vismaz vienu reizi, ne tieši vienreiz. Ja darbinieks apstājas pēc tam, kad tika pieņemts augšējais pieprasījums, bet pirms tā rezultāts ir ilgstoši reģistrēts, nomas līguma termiņš var izraisīt tā paša modeļa vārtu pieprasījuma ID atkārtotu mēģinājumu. Izlīgums paliek idempotens attiecībā uz jau pabeigtajām pieprasījuma rindām, bet modeļa ierosinātajām rīka/ārējām blakusparādībām pašām jābūt idempotentām.
Katrs JSONL vienums tiek pieņemts tieši pirms darbinieks to pieprasa. Pretējā gadījumā derīgie vienumi paliek rindā, kamēr pašreizējā konta atlikums nav pozitīvs vai atslēgas/grupas atiestatāmais tēriņu ierobežojums jau ir izsmelts. Šis gaidīšanas stāvoklis nepatērē mēģinājumu un neizveido kļūdas ierakstu; vēlāka papildināšana, lietojuma atiestatīšana vai ierobežojuma palielināšana automātiski padara atlikušos vienumus piemērotus. Model Gate nerezervē teorētiskās maksimālās partijas izmaksas. Tāpēc jau pieņemtie vienumi var pilnībā norēķināties pat tad, ja vienlaicīga darba rezultātā gala bilance ir negatīva vai tiek radīts neliels tēriņu ierobežojuma pārsniegums, pēc kura jaunas preces paliek rindā, līdz konts atkal ir piemērots.
Cenu noteikšana un grāmatvedība
Pakešu adapteris neizmanto nodrošinātāja vietējo pakešu izpildi. Katra prece iziet caur parasto Model Gate modeļa maršrutēšanu un norēķinu, pēc tam saņem cenu veidnes Partijas pieprasījuma cenas koeficients. Noklusējums: 1.
Ja koeficients ir 0.5, vienums, kura parastā Model Gate cena ir 0.02 tiek debetēts kā 0.01. Oficiālā atsauces cena paliek nemainīga. Piemērotais koeficients tiek momentuzņēmums un saglabāts audita pieprasījumā.
Kļūdas
{
"error": {
"message": "line 2 url must match batch endpoint /v1/responses",
"type": "invalid_request_error",
"param": null,
"code": "invalid_batch_file"
}
}