B2BB2B LLM

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