B2BB2B LLM

OpenAI-ga ühilduv Batch API

Laadige üles JSONL-i partii sisendfailid ja töödelge OpenAI-ga ühilduvaid partiisid Model Gate'i püsiva järjekorra kaudu.

OpenAI-ga ühilduv Batch API

Model Gate juurutab OpenAI Files + Batch töövoo https://api.model-gate.com/v1. See on ühilduvuskiht: iga JSONL-i üksus käivitatakse tavalise mudelivärava järeldustee kaudu. Model Gate teeb mitte esitama ülesvoolu pakkuja-native OpenAI partii.

Failid/partii lugemise/juhtimise lõpp-punktid on juhttasand: muidu kehtiv aktiivne API mandaat võib loetleda/lugeda/alla laadida/tühistada/kustutada olemasolevaid ressursse isegi siis, kui konto saldo on praegu null või lähtestatav kululimiit on ammendatud. Ladustamistoimingud on erinevad: POST /v1/files ja POST /v1/batches nõuda värske positiivse saldo/kulu lubamist, enne kui Model Gate sisestab faili/töö/üksuse andmed. Seetõttu ei saa nullbilansi võti JSONL-i üles laadida ega uut pakkmälu luua. Tegelikud partiiartiklid kontrollivad endiselt töötaja taotluste esitamise ajal vastuvõttu ja jäävad järjekorda, kui raha on hiljem ammendunud. JSONL-i sisendit loetakse järk-järgult ja valideeritakse/sisestatakse ridahaaval; Model Gate ei säilita kogu 200 MB sisendit ja kõiki päringu kehasid protsessimälus partii loomise ajal. Kasutajapõhised salvestatud baidi/faili/aktiivse töö/järjekorraüksuse kvoodid pakuvad sõltumatut andmebaasi kuritarvitamise piiri.

Selles versioonis toetatud partii lõpp-punktid on järgmised:

  • /v1/responses
  • /v1/chat/completions
  • /v1/embeddings
  • /v1/images/generations

Iga teostatud üksus on märgistatud request_mode=batch, batch_protocol=openai, selle batch_job_public_id ja custom_id.

1. Laadige üles JSONL-i sisendfail

Iga mittetühi rida sisaldab custom_id, method, urlja body. URL peab võrduma lõpp-punktiga, millele hiljem edastati /v1/batches.

Näide 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."}}

Taotlus

curl https://api.model-gate.com/v1/files \
  -H "Authorization: Bearer mg_live_..." \
  -F "purpose=batch" \
  -F "[email protected]"

Vastus - 200

{
  "id": "file-01K...",
  "object": "file",
  "bytes": 322,
  "created_at": 1786610000,
  "filename": "batch.jsonl",
  "purpose": "batch",
  "status": "processed",
  "status_details": null
}

2. Loo partii

completion_window peab olema 24h.

Taotlus

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"}
  }'

Vastus - 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. Võtke partii välja

Taotlus

curl https://api.model-gate.com/v1/batches/batch_01K... \
  -H "Authorization: Bearer mg_live_..."

Vastus – täidetud

{
  "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. Laadige alla tulemused

Taotlus

curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
  -H "Authorization: Bearer mg_live_..."

Vastus - 200

{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}

Ebaõnnestunud, tühistatud või aegunud üksused kirjutatakse aadressile error_file_id nagu JSONL salvestab response:null ja an error objektiks.

5. Loetlege partiid

limit vaikimisi 20 ja peab olema pärit 1 juurde 100. Kasuta after kursori lehekülgede muutmiseks.

Taotlus

curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
  -H "Authorization: Bearer mg_live_..."

Vastus - 200

{
  "object": "list",
  "data": [],
  "first_id": null,
  "last_id": null,
  "has_more": false
}

Lõpetatud partiiobjektid võivad sisaldada agregaati usage objekti, kui arveldatud Model Gate päringu arvestus on saadaval.

6. Tühista partii

Tühista takistab järjekorras olevate üksuste käivitamist; juba töödeldud üksus võib lõppeda.

Taotlus

curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
  -H "Authorization: Bearer mg_live_..."

Vastus - 200

{
  "id": "batch_01K...",
  "object": "batch",
  "status": "cancelling",
  "request_counts": {
    "total": 2,
    "completed": 0,
    "failed": 0
  }
}

7. Faili metaandmed, loend ja kustutamine

Metaandmete toomine:

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
}

Failide loend koos valikulise valikuga purpose, afterja order=asc|desc; limit vaikimisi 10000 ja peab olema pärit 1 juurde 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
}

Viiteta/aegunud ühilduva faili kustutamine:

curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
  -H "Authorization: Bearer mg_live_..."
{
  "id": "file-01K...",
  "object": "file",
  "deleted": true
}

Piirid ja taastamise semantika

Model Gate aktsepteerib kuni 50 000 JSONL-i üksust ja piirab üleslaaditud faili konfigureeritud OPENAI_BATCH_MAX_FILE_BYTES väärtus (vaikimisi 200 MiB). Iga partii üksus peab sobima ka Model Gate'i tavapärasega MAX_REQUEST_BODY_BYTES piir. custom_id väärtused peavad olema kordumatud. Partiikaupu ei saa kasutada stream:true või pesastatud async:true. Suuri JSONL-faile säilitatakse sisemiselt andmebaasi tükkidena, mitte ühe suure SQL-väärtusena.

Täitmise taastamine on vähemalt üks kord, mitte täpselt üks kord. Kui töötaja peatub pärast ülesvoolu päringu vastuvõtmist, kuid enne selle tulemuse püsivat salvestamist, võib aegunud rendileping põhjustada sama mudelivärava päringu ID uuesti proovimise. Arveldus jääb juba lõpetatud päringuridade puhul idempotentseks, kuid mudeli algatatud tööriista/välised kõrvalmõjud peaksid ise olema idempotentsed.

Iga JSONL-i üksus võetakse vastu vahetult enne, kui töötaja selle omaks võtab. Muidu kehtivad kaubad jäävad järjekorda, kuni jooksevkonto saldo pole positiivne või kui võtme/grupi lähtestatav kululimiit on juba ammendatud. See ooteolek ei kasuta katset ega loo veakirjet; hilisem täiendamine, kasutuse lähtestamine või limiidi suurendamine muudab ülejäänud kaubad automaatselt abikõlblikuks. Model Gate ei reserveeri teoreetilist maksimaalset partii maksumust. Juba vastuvõetud kaubad võivad seetõttu täielikult arveldada isegi siis, kui samaaegne töö muudab lõppsaldo negatiivseks või tekitab väikese kululimiidi ületamise, misjärel jäävad uued kaubad järjekorda, kuni konto on taas sobilik.

Hinnakujundus ja raamatupidamine

Pakettadapter ei kasuta teenusepakkuja pakettkäivitust. Iga üksus läbib tavalise Model Gate'i mudeli marsruutimise ja arveldamise ning seejärel saab hinnakujunduse malli Partiipäringu hinnakoefitsient. Vaikimisi: 1.

Kui koefitsient on 0.5, üksus, mille tavaline Model Gate maksumus on 0.02 debiteeritakse kui 0.01. Ametlik võrdlushind jääb muutumatuks. Rakendatud koefitsient tehakse hetktõmmis ja salvestatakse audititaotlusele.

Vead

{
  "error": {
    "message": "line 2 url must match batch endpoint /v1/responses",
    "type": "invalid_request_error",
    "param": null,
    "code": "invalid_batch_file"
  }
}