Пакетни АПИ компатибилан са ОпенАИ
Отпремите ЈСОНЛ пакетне улазне датотеке и обрадите пакете компатибилне са ОпенАИ-ом кроз издржљиви ред чекања Модел Гате-а.
Пакетни АПИ компатибилан са ОпенАИ
Модел Гате имплементира ОпенАИ Филес + Батцх радни ток https://api.model-gate.com/v1. Ово је слој компатибилности: свака ЈСОНЛ ставка се извршава кроз нормалну путању закључивања Модел Гате-а. Модел Гате ради не поднесите ОпенАИ пакет који је изворни провајдер.
Датотеке/Крајње тачке за групно читање/контролу су контролна раван: иначе важећи активни АПИ акредитиви могу да наведу/читају/преузму/откажу/бришу постојеће ресурсе чак и када је стање на рачуну тренутно нула или је ограничење потрошње које се може ресетовати исцрпљено. Операције складиштења су различите: POST /v1/files и POST /v1/batches захтевају нови пријем позитивног биланса/потрошње пре него што Модел Гате убаци податке о фајлу/послу/ставци. Кључ са нултим стањем стога не може да отпреми ЈСОНЛ или да креира ново складиште. Стварне серије и даље поново проверавају пријем у време захтева радника и остају у реду ако се средства касније потроше. ЈСОНЛ унос се чита постепено и потврђује/убацује ред по ред; Модел Гате не задржава комплетних 200 МБ улаза плус сва тела захтева у меморији процеса током креирања групе. Квоте за складиштени бајт/датотеку/активни посао/ставке у реду по кориснику обезбеђују независну границу злоупотребе базе података.
Подржане крајње тачке серије у овом издању су:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Свака извршена ставка је означена request_mode=batch, batch_protocol=openai, са својим batch_job_public_id и custom_id.
1. Отпремите ЈСОНЛ улазну датотеку
Сваки непразан ред садржи custom_id, method, url, и body. УРЛ мора бити једнак крајњој тачки која је касније достављена /v1/batches.
Пример 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."}}
Захтев
curl https://api.model-gate.com/v1/files \
-H "Authorization: Bearer mg_live_..." \
-F "purpose=batch" \
-F "[email protected]"
Одговор — 200
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"created_at": 1786610000,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"status_details": null
}
2. Креирајте серију
completion_window мора бити 24h.
Захтев
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"}
}'
Одговор — 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. Преузмите серију
Захтев
curl https://api.model-gate.com/v1/batches/batch_01K... \
-H "Authorization: Bearer mg_live_..."
Одговор — завршен
{
"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. Преузмите резултате
Захтев
curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
-H "Authorization: Bearer mg_live_..."
Одговор — 200
{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}
Неуспеле, отказане или истекле ставке се пишу на error_file_id као што ЈСОНЛ бележи са response:null и ан error објекат.
5. Наведите серије
limit подразумевано на 20 и мора бити из 1 да 100. Користите after за пагинацију курсора.
Захтев
curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
-H "Authorization: Bearer mg_live_..."
Одговор — 200
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
Завршени батцх објекти могу укључивати агрегат usage објекат када је доступно обрачунавање захтева за решени модел капије.
6. Откажите серију
Откажи спречава покретање ставки у реду чекања; ставка која се већ обрађује може завршити.
Захтев
curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
-H "Authorization: Bearer mg_live_..."
Одговор — 200
{
"id": "batch_01K...",
"object": "batch",
"status": "cancelling",
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
}
}
7. Метаподаци датотеке, листање и брисање
Преузми метаподатке:
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
}
Листа датотека са опционим purpose, after, и order=asc|desc; limit подразумевано на 10000 и мора бити из 1 да 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
}
Избришите нереференцирану / компатибилну датотеку са истеком:
curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"deleted": true
}
Ограничења и семантика опоравка
Модел Гате прихвата до 50.000 ЈСОНЛ ставки и ограничава отпремљену датотеку на конфигурисану OPENAI_BATCH_MAX_FILE_BYTES вредност (подразумевано 200 МиБ). Сваки појединачни артикал серије такође мора одговарати нормалном моделу капије MAX_REQUEST_BODY_BYTES лимит. custom_id вредности морају бити јединствене. Ставке серије се не могу користити stream:true или угнежђене async:true. Велике ЈСОНЛ датотеке се интерно чувају као делови базе података, а не као једна превелика СКЛ вредност.
Опоравак извршења је бар-једном, не баш једном. Ако радник стане након што је претходни захтев прихваћен, али пре него што је његов резултат трајно забележен, истекли закуп може да изазове поновни покушај са истим ИД захтева за модел капије. Поравнање остаје идемпотентно за већ завршене редове захтева, али алат/спољни нежељени ефекти које покреће модел треба да буду идемпотентни.
Свака ЈСОНЛ ставка се прихвата непосредно пре него што је радник затражи. У супротном, важеће ставке остају на чекању док стање на текућем рачуну није позитивно или је ограничење потрошње које може да се ресетује кључ/група већ исцрпљено. Ово стање чекања не троши покушај нити креира запис грешке; касније допуњавање, ресетовање коришћења или повећање ограничења аутоматски чини преостале ставке квалификованим. Модел Гате не резервише теоретски максимални трошак серије. Ставке које су већ примљене могу се стога у потпуности измирити чак и када истовремени рад учини коначни салдо негативним или доведе до малог прекорачења ограничења потрошње, након чега нове ставке остају на чекању док рачун поново не буде квалификован.
Цене и рачуноводство
Батцх адаптер не користи групно извршавање изворно од добављача. Свака ставка пролази кроз уобичајено усмеравање и поравнање модела Модел Гате, а затим добија шаблон за цене Коефицијент цене захтева серије. Подразумевано: 1.
Ако је коефицијент 0.5, артикал чија је уобичајена цена модела капије 0.02 се задужује као 0.01. Званичне референтне цене остају непромењене. Примењени коефицијент се снима и чува на захтеву за ревизију.
Грешке
{
"error": {
"message": "line 2 url must match batch endpoint /v1/responses",
"type": "invalid_request_error",
"param": null,
"code": "invalid_batch_file"
}
}