OpenAI uyumlu Toplu API
JSONL toplu girdi dosyalarını yükleyin ve OpenAI uyumlu toplu işleri Model Gate'in dayanıklı kuyruğu aracılığıyla işleyin.
OpenAI uyumlu Toplu API
Model Gate, OpenAI Files + Batch iş akışını uygular https://api.model-gate.com/v1. Bu bir uyumluluk katmanıdır: her JSONL öğesi normal Model Kapısı çıkarım yolu aracılığıyla yürütülür. Model Kapısı bunu yapar Olumsuz yukarı akış sağlayıcısına özgü bir OpenAI toplu işlemi gönderin.
Dosyalar/Toplu okuma/kontrol uç noktaları bir kontrol düzlemidir: aksi takdirde geçerli bir etkin API kimlik bilgisi, hesap bakiyesi şu anda sıfır olduğunda veya sıfırlanabilir harcama sınırı tükendiğinde bile mevcut kaynakları listeleyebilir/okuyabilir/indirebilir/iptal edebilir/silebilir. Depolama üreten işlemler farklıdır: POST /v1/files Ve POST /v1/batches Model Gate dosya/iş/öğe verilerini eklemeden önce yeni pozitif bakiye/harcama kabulü gerektirir. Bu nedenle sıfır bakiyeli bir anahtar JSONL'yi yükleyemez veya yeni toplu depolama oluşturamaz. Fiili parti öğeleri hâlâ işçi talep zamanında kabulü yeniden kontrol ediyor ve fonlar daha sonra tükenirse kuyrukta kalıyor. JSONL girişi artımlı olarak okunur ve satır satır doğrulanır/eklenir; Model Gate, bir toplu iş oluştururken 200 MB'lık girişin tamamını ve tüm istek gövdelerini işlem belleğinde tutmaz. Kullanıcı başına depolanan bayt/dosya/aktif iş/kuyruğa alınan öğe kotaları, bağımsız bir veritabanı kötüye kullanımı sınırı sağlar.
Bu sürümde desteklenen toplu uç noktalar şunlardır:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Yürütülen her öğe işaretlenir request_mode=batch, batch_protocol=openai, onunla batch_job_public_id Ve custom_id.
1. Bir JSONL giriş dosyası yükleyin
Boş olmayan her satır şunları içerir: custom_id, method, url, Ve body. URL, daha sonra sağlanan uç noktaya eşit olmalıdır /v1/batches.
Örnek 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."}}
Rica etmek
curl https://api.model-gate.com/v1/files \
-H "Authorization: Bearer mg_live_..." \
-F "purpose=batch" \
-F "[email protected]"
Yanıt — 200
{
"id": "file-01K...",
"object": "file",
"bytes": 322,
"created_at": 1786610000,
"filename": "batch.jsonl",
"purpose": "batch",
"status": "processed",
"status_details": null
}
2. Grubu oluşturun
completion_window olmalıdır 24h.
Rica etmek
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"}
}'
Yanıt — 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. Bir partiyi alın
Rica etmek
curl https://api.model-gate.com/v1/batches/batch_01K... \
-H "Authorization: Bearer mg_live_..."
Yanıt — tamamlandı
{
"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. Sonuçları indirin
Rica etmek
curl https://api.model-gate.com/v1/files/file-01KOUTPUT.../content \
-H "Authorization: Bearer mg_live_..."
Yanıt — 200
{"id":"batch_req_01K...","custom_id":"request-1","response":{"status_code":200,"request_id":"01K...","body":{"id":"resp_...","status":"completed"}},"error":null}
Başarısız olan, iptal edilen veya süresi dolan öğeler şu adrese yazılır: error_file_id JSONL kayıtları olarak response:null ve bir error nesne.
5. Grupları listeleyin
limit varsayılan olarak 20 ve nereli olmalı 1 ile 100. Kullanmak after imleç sayfalaması için.
Rica etmek
curl "https://api.model-gate.com/v1/batches?limit=20&after=batch_01K..." \
-H "Authorization: Bearer mg_live_..."
Yanıt — 200
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
Tamamlanan toplu iş nesneleri bir toplama içerebilir usage Yerleştirildiğinde nesne Model Geçidi istek muhasebesi kullanılabilir.
6. Bir partiyi iptal edin
İptal, sıraya alınmış öğelerin başlatılmasını engeller; halihazırda işlenmekte olan bir öğe tamamlanabilir.
Rica etmek
curl -X POST https://api.model-gate.com/v1/batches/batch_01K.../cancel \
-H "Authorization: Bearer mg_live_..."
Yanıt — 200
{
"id": "batch_01K...",
"object": "batch",
"status": "cancelling",
"request_counts": {
"total": 2,
"completed": 0,
"failed": 0
}
}
7. Dosya meta verileri, listelenmesi ve silinmesi
Meta verileri alın:
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
}
İsteğe bağlı olarak dosyaları listeleme purpose, after, Ve order=asc|desc; limit varsayılan olarak 10000 ve nereli olmalı 1 ile 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
}
Referans verilmeyen/süresi dolmuş uyumlu bir dosyayı silin:
curl -X DELETE https://api.model-gate.com/v1/files/file-01K... \
-H "Authorization: Bearer mg_live_..."
{
"id": "file-01K...",
"object": "file",
"deleted": true
}
Sınırlar ve kurtarma semantiği
Model Gate, 50.000'e kadar JSONL öğesi kabul eder ve yüklenen dosyayı yapılandırılanla sınırlar. OPENAI_BATCH_MAX_FILE_BYTES değer (varsayılan olarak 200 MiB). Her bir parti öğesi aynı zamanda Model Gate'in normaline de uymalıdır. MAX_REQUEST_BODY_BYTES Sınır. custom_id değerlerin benzersiz olması gerekir. Toplu öğeler kullanılamaz stream:true veya iç içe geçmiş async:true. Büyük JSONL dosyaları, tek bir büyük boyutlu SQL değeri yerine veritabanı parçaları olarak dahili olarak kalıcı hale getirilir.
Yürütme kurtarma en az bir kez, tam olarak bir kez değil. Bir çalışan, yukarı akış talebi kabul edildikten sonra ancak sonucu kalıcı olarak kaydedilmeden önce durursa, süresi dolmuş bir kira, aynı Model Geçidi istek kimliğinin yeniden denenmesine neden olabilir. Zaten tamamlanmış istek satırları için uzlaşma önemsiz kalır, ancak bir model tarafından başlatılan araç/harici yan etkilerin kendileri de önemsiz olmalıdır.
Her JSONL öğesi, bir çalışanın onu talep etmesinden hemen önce kabul edilir. Aksi takdirde geçerli öğeler, cari hesap bakiyesi pozitif olmadığında veya anahtar/grup sıfırlanabilir harcama limiti zaten tükendiğinde sırada kalır. Bu bekleme durumu bir denemeyi tüketmez veya bir hata kaydı oluşturmaz; daha sonra yapılan bir yükleme, kullanımın sıfırlanması veya limit artırımı, kalan öğeleri otomatik olarak uygun hale getirir. Model Gate teorik bir maksimum parti maliyeti ayırmaz. Halihazırda kabul edilen öğeler bu nedenle, eş zamanlı çalışma nihai bakiyeyi negatif hale getirse veya küçük bir harcama limiti aşımı oluştursa bile tamamen kapatılabilir ve bunun ardından yeni öğeler, hesap tekrar uygun hale gelinceye kadar sırada kalır.
Fiyatlandırma ve muhasebe
Toplu bağdaştırıcı, sağlayıcının yerel toplu yürütmesini kullanmaz. Her öğe normal Model Geçidi modeli yönlendirme ve yerleşiminden geçer ve ardından fiyatlandırma şablonunun bilgilerini alır. Toplu istek fiyat katsayısı. Varsayılan: 1.
Katsayı ise 0.5, normal Model Geçidi maliyeti olan bir öğe 0.02 olarak borçlandırılır 0.01. Resmi referans fiyatlandırma değişmeden kalır. Uygulanan katsayının anlık görüntüsü alınır ve denetim talebi üzerine saklanır.
Hatalar
{
"error": {
"message": "line 2 url must match batch endpoint /v1/responses",
"type": "invalid_request_error",
"param": null,
"code": "invalid_batch_file"
}
}