Συμβατό με OpenAI Batch API
Ανεβάστε αρχεία εισόδου παρτίδας JSONL και επεξεργαστείτε παρτίδες συμβατές με OpenAI μέσω της ανθεκτικής ουράς του Model Gate.
Συμβατό με OpenAI Batch API
Το Model Gate υλοποιεί τη ροή εργασίας OpenAI Files + Batch https://api.model-gate.com/v1. Αυτό είναι ένα επίπεδο συμβατότητας: κάθε στοιχείο JSONL εκτελείται μέσω της κανονικής διαδρομής συμπερασμάτων Model Gate. Το Model Gate κάνει δεν υποβάλετε μια παρτίδα OpenAI εγγενούς παρόχου.
Τα αρχεία/Τα τελικά σημεία ανάγνωσης/ομαδικού ελέγχου είναι ένα επίπεδο ελέγχου: ένα κατά τα άλλα έγκυρο ενεργό διαπιστευτήριο API μπορεί να παραθέτει/ανάγνωση/λήξει/ακυρώσει/διαγράψει υπάρχοντες πόρους ακόμη και όταν το υπόλοιπο του λογαριασμού είναι επί του παρόντος μηδενικό ή έχει εξαντληθεί ένα όριο δαπανών με δυνατότητα επαναφοράς. Οι λειτουργίες αποθήκευσης-παραγωγής είναι διαφορετικές: POST /v1/files και POST /v1/batches απαιτούν νέα αποδοχή θετικού υπολοίπου/δαπανών προτού το Model Gate εισαγάγει δεδομένα αρχείου/εργασίας/αντικειμένου. Επομένως, ένα κλειδί μηδενικού ισοζυγίου δεν μπορεί να μεταφορτώσει JSONL ή να δημιουργήσει νέα δέσμη αποθήκευσης. Οι πραγματικές παρτίδες εξακολουθούν να ελέγχουν ξανά την αποδοχή κατά την ώρα της αξίωσης των εργαζομένων και παραμένουν στην ουρά εάν τα χρήματα εξαντληθούν αργότερα. Η είσοδος JSONL διαβάζεται σταδιακά και επικυρώνεται/εισάγεται γραμμή προς γραμμή. Το Model Gate δεν διατηρεί την πλήρη είσοδο 200 MB συν όλα τα σώματα αιτημάτων στη μνήμη διεργασίας κατά τη δημιουργία μιας παρτίδας. Τα όρια αποθήκευσης-byte/file/active-job/item σε ουρά ανά χρήστη παρέχουν ένα ανεξάρτητο όριο κατάχρησης βάσης δεδομένων.
Τα υποστηριζόμενα τελικά σημεία παρτίδας σε αυτήν την έκδοση είναι:
/v1/responses/v1/chat/completions/v1/embeddings/v1/images/generations
Κάθε αντικείμενο που εκτελείται επισημαίνεται request_mode=batch, batch_protocol=openai, με το batch_job_public_id και custom_id.
1. Ανεβάστε ένα αρχείο εισόδου JSONL
Κάθε μη κενή γραμμή περιέχει custom_id, method, url, και body. Η διεύθυνση URL πρέπει να ισούται με το τελικό σημείο που παρέχεται αργότερα /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 όπως η JSONL καταγράφει με 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 αντικείμενο όταν διευθετηθεί η λογιστική αίτησης Model Gate είναι διαθέσιμη.
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
}
Όρια και σημασιολογία ανάκτησης
Το Model Gate δέχεται έως και 50.000 στοιχεία JSONL και περιορίζει το μεταφορτωμένο αρχείο στα διαμορφωμένα OPENAI_BATCH_MAX_FILE_BYTES τιμή (200 MiB από προεπιλογή). Κάθε μεμονωμένη παρτίδα πρέπει επίσης να ταιριάζει στο κανονικό μοντέλο της Πύλης MAX_REQUEST_BODY_BYTES όριο. custom_id οι αξίες πρέπει να είναι μοναδικές. Τα στοιχεία παρτίδας δεν μπορούν να χρησιμοποιηθούν stream:true ή φωλιασμένο async:true. Τα μεγάλα αρχεία JSONL διατηρούνται εσωτερικά ως κομμάτια βάσης δεδομένων αντί για μια υπερμεγέθη τιμή SQL.
Η ανάκτηση εκτέλεσης είναι τουλάχιστον μια φορά, όχι ακριβώς μια φορά. Εάν ένας εργαζόμενος σταματήσει μετά την αποδοχή ενός αιτήματος ανάντη αλλά προτού το αποτέλεσμά του καταγραφεί μόνιμα, μια μίσθωση που έχει λήξει μπορεί να προκαλέσει την εκ νέου δοκιμή του ίδιου αναγνωριστικού αιτήματος Πύλης Μοντέλου. Η διευθέτηση παραμένει ανίκανη για ήδη ολοκληρωμένες σειρές αιτημάτων, αλλά το εργαλείο/εξωτερικές παρενέργειες που ξεκινούν από ένα μοντέλο θα πρέπει να είναι αδύναμες.
Κάθε στοιχείο JSONL γίνεται δεκτό αμέσως πριν το διεκδικήσει ένας εργαζόμενος. Διαφορετικά, τα έγκυρα στοιχεία παραμένουν στην ουρά ενώ το υπόλοιπο του τρεχούμενου λογαριασμού δεν είναι θετικό ή το όριο δαπανών με δυνατότητα επαναφοράς κλειδιού/ομάδας έχει ήδη εξαντληθεί. Αυτή η κατάσταση αναμονής δεν καταναλώνει μια προσπάθεια ή δεν δημιουργεί μια εγγραφή σφάλματος. μια μεταγενέστερη ανανέωση, επαναφορά χρήσης ή αύξηση ορίου καθιστά αυτόματα τα υπόλοιπα στοιχεία κατάλληλα. Το Model Gate δεν επιφυλάσσει θεωρητικό μέγιστο κόστος παρτίδας. Ως εκ τούτου, τα στοιχεία που έχουν ήδη γίνει δεκτά ενδέχεται να διευθετηθούν πλήρως ακόμη και όταν η ταυτόχρονη εργασία καθιστά το τελικό υπόλοιπο αρνητικό ή προκαλεί μια μικρή υπέρβαση ορίου δαπανών, μετά την οποία τα νέα στοιχεία παραμένουν στην ουρά μέχρι ο λογαριασμός να είναι ξανά κατάλληλος.
Τιμολόγηση και λογιστική
Ο προσαρμογέας παρτίδας δεν χρησιμοποιεί εκτέλεση παρτίδας εγγενούς παροχής. Κάθε στοιχείο περνά από την κανονική δρομολόγηση και τακτοποίηση του μοντέλου Πύλης Μοντέλων και, στη συνέχεια, λαμβάνει το πρότυπο τιμολόγησης Συντελεστής τιμής αιτήματος παρτίδας. Αθέτηση: 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"
}
}