{
  "aboutHtml": "<p>Το GPT-4.1 είναι το μοντέλο της OpenAI χωρίς ξεχωριστό στάδιο συλλογισμού για τήρηση οδηγιών και κλήσεις εργαλείων, με ευρεία γνώση σε πολλούς τομείς. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο χωρίς ειδικό βήμα συλλογισμού. Τα μεγάλα συμφραζόμενά του το καθιστούν χρήσιμο όταν η εργασία είναι σαφώς καθορισμένη, αλλά το σχετικό υλικό εκτείνεται σε εκτενή έγγραφα ή κώδικα. Δηλώστε τη λειτουργία που θέλετε, το αρχικό υλικό στο οποίο εφαρμόζεται και τη μορφή του τελικού αποτελέσματος.</p><p>Για επεξεργασία εγγράφων, διαχωρίστε τις οδηγίες από το υλικό με επικεφαλίδες ή άλλα σαφή όρια. Επισημάνετε τα έγγραφα και διατηρήστε αναγνωριστικά στα οποία χρειάζεται να αναφέρεται η απάντηση. Ορίστε τα πεδία εξαγωγής, τα κριτήρια σύγκρισης ή το κοινό και την έκταση μιας αναδιατύπωσης. Μια ενδεικτική έξοδος μπορεί να είναι πίνακας απαιτήσεων με τις θέσεις τους στις πηγές, σύνοψη οργανωμένη βάσει καθορισμένου συνόλου ερωτημάτων ή δομημένη εγγραφή που διακρίνει τις πληροφορίες που λείπουν από μια ρητή τιμή.</p><p>Για προγραμματισμό, δώστε τα σχετικά αρχεία, τη ζητούμενη αλλαγή και τη συμπεριφορά που πρέπει να παραμείνει άθικτη. Ζητήστε το πραγματικό παραδοτέο που χρειάζεστε: αναθεωρημένη συνάρτηση, πλήρες αρχείο, προτεινόμενα ορίσματα εργαλείου ή εξήγηση της επηρεαζόμενης λογικής. Τα παραδείγματα μπορούν να διευκρινίζουν έναν κανόνα μορφοποίησης ή μια οριακή περίπτωση, αλλά πρέπει να ακολουθούν τις ίδιες απαιτήσεις με την πραγματική εργασία. Οι κατευθύνσεις της OpenAI για τη σύνταξη οδηγιών δίνουν έμφαση σε άμεσες οδηγίες, ρόλους, όρια πηγών και αντιπροσωπευτικά παραδείγματα, αντί να θεωρούν ότι ένα μεγάλο αίτημα είναι αυτόματα ακριβές.</p><p>Η ακριβής προδιαγραφή του GPT-4.1 αναφέρει παράθυρο συμφραζομένων 1.047.576 tokens, μέγιστη έξοδο 32.768 tokens και όριο γνώσεων την 1η Ιουνίου 2024. Τα μεγάλα συμφραζόμενα εισόδου δεν συνεπάγονται εξίσου μεγάλη έξοδο, επομένως ένα αίτημα αναδιατύπωσης εκτενούς υλικού πρέπει να προσδιορίζει το απαιτούμενο μέρος και τελικό παραδοτέο. Διατηρήστε αρκετό χώρο για την απάντηση και δώστε τρέχουσες πληροφορίες όταν η εργασία εξαρτάται από πραγματικά στοιχεία μετά το όριο γνώσεων. Ο τεκμηριωμένος τύπος μοντέλου του GPT-4.1 είναι chat· οι ρυθμίσεις προσπάθειας συλλογισμού από νεότερα μοντέλα συλλογισμού δεν αποτελούν μέρος αυτού του προφίλ.</p><p>Η OpenAI τεκμηριώνει διεπαφές Chat Completions, Responses, Assistants, Batch και περαιτέρω εκπαίδευσης για το GPT-4.1. Οι αναφερόμενες λειτουργίες περιλαμβάνουν συνεχή ροή, Structured Outputs, κλήσεις συναρτήσεων, μεταφορτώσεις αρχείων, είσοδο εικόνων, αναζήτηση στον ιστό και σε αρχεία, περαιτέρω εκπαίδευση και προσωρινή αποθήκευση εισόδου. Τα εργαλεία του περιλαμβάνουν ερμηνεία κώδικα, δημιουργία εικόνων και συνδέσεις MCP, καθώς και αναζήτηση και συναρτήσεις. Η έξοδος του ίδιου του μοντέλου είναι κείμενο, ενώ ένα εργαλείο μπορεί να επιστρέφει ξεχωριστό παραδοτέο ή παρατήρηση. Ορίστε τον σκοπό και τα ορίσματα μιας λειτουργίας εφαρμογής και χρησιμοποιήστε το πραγματικό επιστρεφόμενο αποτέλεσμά της· ένα αίτημα που παράγει το μοντέλο δεν επιβεβαιώνει ότι ολοκληρώθηκε μια εξωτερική λειτουργία.</p><p>Μια ιδιαίτερη λειτουργία είναι τα Predicted Outputs στη διεπαφή Chat Completions της OpenAI. Όταν το μεγαλύτερο μέρος ενός επιθυμητού αποτελέσματος κειμένου ή κώδικα είναι ήδη γνωστό, το υπάρχον περιεχόμενο μπορεί να δοθεί ως πρόβλεψη για να βοηθήσει στην αναπαραγωγή του πλήρους αποτελέσματος με μικρή αλλαγή. Για παράδειγμα, δώστε ένα τρέχον αρχείο και ζητήστε μετονομασία μιας στενά καθορισμένης ιδιότητας, διατηρώντας τον περιβάλλοντα κώδικα. Η πρόβλεψη είναι αναμενόμενο περιεχόμενο εξόδου, όχι οδηγία ή εγγύηση ότι τα αμετάβλητα μέρη θα παραμείνουν σωστά. Εξετάστε το αναπαραγόμενο παραδοτέο έναντι της ζητούμενης τροποποίησης και του αρχικού υλικού.</p><p>Τα Predicted Outputs έχουν δικά τους όρια συμβατότητας. Η OpenAI τεκμηριώνει χρήση μόνο κειμένου, χωρίς εισόδους ή εξόδους ήχου και χωρίς κλήσεις συναρτήσεων σε αυτό το αίτημα. Δεν υποστηρίζουν πολλαπλές επιλογές με n μεγαλύτερο από 1, λογαριθμικές πιθανότητες, θετικές ποινές παρουσίας ή συχνότητας ή την παράμετρο max_completion_tokens. Διατηρήστε αυτήν τη ροή αναπαραγωγής χωριστή από μια εργασία που χρειάζεται κλήσεις εργαλείων. Το κείμενο πρόβλεψης μπορεί να ταιριάζει με μέρη της εξόδου και ο πάροχος αναφέρει αποδεκτά και απορριφθέντα tokens πρόβλεψης· μια ακατάλληλη πρόβλεψη μπορεί να μείνει εν μέρει αχρησιμοποίητη, επομένως η λειτουργία δεν εγγυάται συγκεκριμένη επιτάχυνση ή αποτέλεσμα.</p><p>Για συνηθισμένες εργασίες τήρησης οδηγιών, ένα χρήσιμο αποτέλεσμα GPT-4.1 είναι ένα παραδοτέο εγγράφου ή κώδικα που ακολουθεί καθορισμένη προδιαγραφή, μια εξαγωγή στοιχείων με ρητά πεδία ή ένα αίτημα εργαλείου του οποίου τα ορίσματα ταιριάζουν στη δοσμένη λειτουργία. Για μικρή αλλαγή σε ένα κυρίως αμετάβλητο αρχείο, η ροή προβλεπόμενης εξόδου προσφέρει πιο συγκεκριμένο τρόπο προετοιμασίας του αναμενόμενου αποτελέσματος. Και στις δύο περιπτώσεις, διατηρήστε το αρχικό υλικό που χρειάζεται για τον έλεγχο της απάντησης και δηλώστε ρητά την ασάφεια. Η χωρητικότητα συμφραζομένων και τα εργαλεία του μοντέλου υποστηρίζουν τη ροή· η περιγραφή της εργασίας εξακολουθεί να καθορίζει τι περιέχει μια πλήρης, χρηστική απάντηση.</p>",
  "aboutText": "Το GPT-4.1 είναι το μοντέλο της OpenAI χωρίς ξεχωριστό στάδιο συλλογισμού για τήρηση οδηγιών και κλήσεις εργαλείων, με ευρεία γνώση σε πολλούς τομείς. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο χωρίς ειδικό βήμα συλλογισμού. Τα μεγάλα συμφραζόμενά του το καθιστούν χρήσιμο όταν η εργασία είναι σαφώς καθορισμένη, αλλά το σχετικό υλικό εκτείνεται σε εκτενή έγγραφα ή κώδικα. Δηλώστε τη λειτουργία που θέλετε, το αρχικό υλικό στο οποίο εφαρμόζεται και τη μορφή του τελικού αποτελέσματος.\n\nΓια επεξεργασία εγγράφων, διαχωρίστε τις οδηγίες από το υλικό με επικεφαλίδες ή άλλα σαφή όρια. Επισημάνετε τα έγγραφα και διατηρήστε αναγνωριστικά στα οποία χρειάζεται να αναφέρεται η απάντηση. Ορίστε τα πεδία εξαγωγής, τα κριτήρια σύγκρισης ή το κοινό και την έκταση μιας αναδιατύπωσης. Μια ενδεικτική έξοδος μπορεί να είναι πίνακας απαιτήσεων με τις θέσεις τους στις πηγές, σύνοψη οργανωμένη βάσει καθορισμένου συνόλου ερωτημάτων ή δομημένη εγγραφή που διακρίνει τις πληροφορίες που λείπουν από μια ρητή τιμή.\n\nΓια προγραμματισμό, δώστε τα σχετικά αρχεία, τη ζητούμενη αλλαγή και τη συμπεριφορά που πρέπει να παραμείνει άθικτη. Ζητήστε το πραγματικό παραδοτέο που χρειάζεστε: αναθεωρημένη συνάρτηση, πλήρες αρχείο, προτεινόμενα ορίσματα εργαλείου ή εξήγηση της επηρεαζόμενης λογικής. Τα παραδείγματα μπορούν να διευκρινίζουν έναν κανόνα μορφοποίησης ή μια οριακή περίπτωση, αλλά πρέπει να ακολουθούν τις ίδιες απαιτήσεις με την πραγματική εργασία. Οι κατευθύνσεις της OpenAI για τη σύνταξη οδηγιών δίνουν έμφαση σε άμεσες οδηγίες, ρόλους, όρια πηγών και αντιπροσωπευτικά παραδείγματα, αντί να θεωρούν ότι ένα μεγάλο αίτημα είναι αυτόματα ακριβές.\n\nΗ ακριβής προδιαγραφή του GPT-4.1 αναφέρει παράθυρο συμφραζομένων 1.047.576 tokens, μέγιστη έξοδο 32.768 tokens και όριο γνώσεων την 1η Ιουνίου 2024. Τα μεγάλα συμφραζόμενα εισόδου δεν συνεπάγονται εξίσου μεγάλη έξοδο, επομένως ένα αίτημα αναδιατύπωσης εκτενούς υλικού πρέπει να προσδιορίζει το απαιτούμενο μέρος και τελικό παραδοτέο. Διατηρήστε αρκετό χώρο για την απάντηση και δώστε τρέχουσες πληροφορίες όταν η εργασία εξαρτάται από πραγματικά στοιχεία μετά το όριο γνώσεων. Ο τεκμηριωμένος τύπος μοντέλου του GPT-4.1 είναι chat· οι ρυθμίσεις προσπάθειας συλλογισμού από νεότερα μοντέλα συλλογισμού δεν αποτελούν μέρος αυτού του προφίλ.\n\nΗ OpenAI τεκμηριώνει διεπαφές Chat Completions, Responses, Assistants, Batch και περαιτέρω εκπαίδευσης για το GPT-4.1. Οι αναφερόμενες λειτουργίες περιλαμβάνουν συνεχή ροή, Structured Outputs, κλήσεις συναρτήσεων, μεταφορτώσεις αρχείων, είσοδο εικόνων, αναζήτηση στον ιστό και σε αρχεία, περαιτέρω εκπαίδευση και προσωρινή αποθήκευση εισόδου. Τα εργαλεία του περιλαμβάνουν ερμηνεία κώδικα, δημιουργία εικόνων και συνδέσεις MCP, καθώς και αναζήτηση και συναρτήσεις. Η έξοδος του ίδιου του μοντέλου είναι κείμενο, ενώ ένα εργαλείο μπορεί να επιστρέφει ξεχωριστό παραδοτέο ή παρατήρηση. Ορίστε τον σκοπό και τα ορίσματα μιας λειτουργίας εφαρμογής και χρησιμοποιήστε το πραγματικό επιστρεφόμενο αποτέλεσμά της· ένα αίτημα που παράγει το μοντέλο δεν επιβεβαιώνει ότι ολοκληρώθηκε μια εξωτερική λειτουργία.\n\nΜια ιδιαίτερη λειτουργία είναι τα Predicted Outputs στη διεπαφή Chat Completions της OpenAI. Όταν το μεγαλύτερο μέρος ενός επιθυμητού αποτελέσματος κειμένου ή κώδικα είναι ήδη γνωστό, το υπάρχον περιεχόμενο μπορεί να δοθεί ως πρόβλεψη για να βοηθήσει στην αναπαραγωγή του πλήρους αποτελέσματος με μικρή αλλαγή. Για παράδειγμα, δώστε ένα τρέχον αρχείο και ζητήστε μετονομασία μιας στενά καθορισμένης ιδιότητας, διατηρώντας τον περιβάλλοντα κώδικα. Η πρόβλεψη είναι αναμενόμενο περιεχόμενο εξόδου, όχι οδηγία ή εγγύηση ότι τα αμετάβλητα μέρη θα παραμείνουν σωστά. Εξετάστε το αναπαραγόμενο παραδοτέο έναντι της ζητούμενης τροποποίησης και του αρχικού υλικού.\n\nΤα Predicted Outputs έχουν δικά τους όρια συμβατότητας. Η OpenAI τεκμηριώνει χρήση μόνο κειμένου, χωρίς εισόδους ή εξόδους ήχου και χωρίς κλήσεις συναρτήσεων σε αυτό το αίτημα. Δεν υποστηρίζουν πολλαπλές επιλογές με n μεγαλύτερο από 1, λογαριθμικές πιθανότητες, θετικές ποινές παρουσίας ή συχνότητας ή την παράμετρο max_completion_tokens. Διατηρήστε αυτήν τη ροή αναπαραγωγής χωριστή από μια εργασία που χρειάζεται κλήσεις εργαλείων. Το κείμενο πρόβλεψης μπορεί να ταιριάζει με μέρη της εξόδου και ο πάροχος αναφέρει αποδεκτά και απορριφθέντα tokens πρόβλεψης· μια ακατάλληλη πρόβλεψη μπορεί να μείνει εν μέρει αχρησιμοποίητη, επομένως η λειτουργία δεν εγγυάται συγκεκριμένη επιτάχυνση ή αποτέλεσμα.\n\nΓια συνηθισμένες εργασίες τήρησης οδηγιών, ένα χρήσιμο αποτέλεσμα GPT-4.1 είναι ένα παραδοτέο εγγράφου ή κώδικα που ακολουθεί καθορισμένη προδιαγραφή, μια εξαγωγή στοιχείων με ρητά πεδία ή ένα αίτημα εργαλείου του οποίου τα ορίσματα ταιριάζουν στη δοσμένη λειτουργία. Για μικρή αλλαγή σε ένα κυρίως αμετάβλητο αρχείο, η ροή προβλεπόμενης εξόδου προσφέρει πιο συγκεκριμένο τρόπο προετοιμασίας του αναμενόμενου αποτελέσματος. Και στις δύο περιπτώσεις, διατηρήστε το αρχικό υλικό που χρειάζεται για τον έλεγχο της απάντησης και δηλώστε ρητά την ασάφεια. Η χωρητικότητα συμφραζομένων και τα εργαλεία του μοντέλου υποστηρίζουν τη ροή· η περιγραφή της εργασίας εξακολουθεί να καθορίζει τι περιέχει μια πλήρης, χρηστική απάντηση.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "be7b359df55a694bd83e3231c0e1aca927798f3a6c43b1d4fdce6df8e7c49622",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "el",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">OpenAI: GPT-4.1 (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4.1:batch</code><button type=\"button\" id=\"copy-id\">Αντιγραφή ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Ενότητες κάρτας μοντέλου\"><button type=\"button\" data-card-jump=\"overview\">Εισαγωγή</button><button type=\"button\" data-card-jump=\"methods\">Είσοδοι και μέθοδοι</button><button type=\"button\" data-card-jump=\"pricing\">Τιμολόγηση</button><button type=\"button\" data-card-jump=\"examples\">Παραδείγματα</button><button type=\"button\" data-card-jump=\"results\">Αποτελέσματα</button><button type=\"button\" data-card-jump=\"aliases\">Εναλλακτικά ονόματα</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Μέθοδοι API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|batches|/v1/batches|openai%2Fgpt-4.1%3Abatch\">Παρτίδες</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Εισαγωγή</h3><p class=\"mdesc-full\">Το OpenAI GPT-4.1 είναι μοντέλο χωρίς ξεχωριστό στάδιο συλλογισμού για ακριβή τήρηση οδηγιών, προγραμματισμό και κλήσεις εργαλείων. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, με μεγάλο παράθυρο συμφραζομένων, Structured Outputs και Predicted Outputs για αναπαραγωγή κειμένου ή κώδικα που παραμένει κυρίως αμετάβλητος.</p><dl class=\"card-io\" data-card-io><div><dt>Αποδεκτές είσοδοι</dt><dd>Κείμενο</dd></div><div><dt>Αποτελέσματα</dt><dd>Κείμενο</dd></div></dl><details class=\"card-about\"><summary>Σχετικά με το μοντέλο</summary><p class=\"note-s\" data-model-method-boundary>Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.</p><div class=\"mabout\" id=\"m-about\"><p>Το GPT-4.1 είναι το μοντέλο της OpenAI χωρίς ξεχωριστό στάδιο συλλογισμού για τήρηση οδηγιών και κλήσεις εργαλείων, με ευρεία γνώση σε πολλούς τομείς. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο χωρίς ειδικό βήμα συλλογισμού. Τα μεγάλα συμφραζόμενά του το καθιστούν χρήσιμο όταν η εργασία είναι σαφώς καθορισμένη, αλλά το σχετικό υλικό εκτείνεται σε εκτενή έγγραφα ή κώδικα. Δηλώστε τη λειτουργία που θέλετε, το αρχικό υλικό στο οποίο εφαρμόζεται και τη μορφή του τελικού αποτελέσματος.</p><p>Για επεξεργασία εγγράφων, διαχωρίστε τις οδηγίες από το υλικό με επικεφαλίδες ή άλλα σαφή όρια. Επισημάνετε τα έγγραφα και διατηρήστε αναγνωριστικά στα οποία χρειάζεται να αναφέρεται η απάντηση. Ορίστε τα πεδία εξαγωγής, τα κριτήρια σύγκρισης ή το κοινό και την έκταση μιας αναδιατύπωσης. Μια ενδεικτική έξοδος μπορεί να είναι πίνακας απαιτήσεων με τις θέσεις τους στις πηγές, σύνοψη οργανωμένη βάσει καθορισμένου συνόλου ερωτημάτων ή δομημένη εγγραφή που διακρίνει τις πληροφορίες που λείπουν από μια ρητή τιμή.</p><p>Για προγραμματισμό, δώστε τα σχετικά αρχεία, τη ζητούμενη αλλαγή και τη συμπεριφορά που πρέπει να παραμείνει άθικτη. Ζητήστε το πραγματικό παραδοτέο που χρειάζεστε: αναθεωρημένη συνάρτηση, πλήρες αρχείο, προτεινόμενα ορίσματα εργαλείου ή εξήγηση της επηρεαζόμενης λογικής. Τα παραδείγματα μπορούν να διευκρινίζουν έναν κανόνα μορφοποίησης ή μια οριακή περίπτωση, αλλά πρέπει να ακολουθούν τις ίδιες απαιτήσεις με την πραγματική εργασία. Οι κατευθύνσεις της OpenAI για τη σύνταξη οδηγιών δίνουν έμφαση σε άμεσες οδηγίες, ρόλους, όρια πηγών και αντιπροσωπευτικά παραδείγματα, αντί να θεωρούν ότι ένα μεγάλο αίτημα είναι αυτόματα ακριβές.</p><p>Η ακριβής προδιαγραφή του GPT-4.1 αναφέρει παράθυρο συμφραζομένων 1.047.576 tokens, μέγιστη έξοδο 32.768 tokens και όριο γνώσεων την 1η Ιουνίου 2024. Τα μεγάλα συμφραζόμενα εισόδου δεν συνεπάγονται εξίσου μεγάλη έξοδο, επομένως ένα αίτημα αναδιατύπωσης εκτενούς υλικού πρέπει να προσδιορίζει το απαιτούμενο μέρος και τελικό παραδοτέο. Διατηρήστε αρκετό χώρο για την απάντηση και δώστε τρέχουσες πληροφορίες όταν η εργασία εξαρτάται από πραγματικά στοιχεία μετά το όριο γνώσεων. Ο τεκμηριωμένος τύπος μοντέλου του GPT-4.1 είναι chat· οι ρυθμίσεις προσπάθειας συλλογισμού από νεότερα μοντέλα συλλογισμού δεν αποτελούν μέρος αυτού του προφίλ.</p><p>Η OpenAI τεκμηριώνει διεπαφές Chat Completions, Responses, Assistants, Batch και περαιτέρω εκπαίδευσης για το GPT-4.1. Οι αναφερόμενες λειτουργίες περιλαμβάνουν συνεχή ροή, Structured Outputs, κλήσεις συναρτήσεων, μεταφορτώσεις αρχείων, είσοδο εικόνων, αναζήτηση στον ιστό και σε αρχεία, περαιτέρω εκπαίδευση και προσωρινή αποθήκευση εισόδου. Τα εργαλεία του περιλαμβάνουν ερμηνεία κώδικα, δημιουργία εικόνων και συνδέσεις MCP, καθώς και αναζήτηση και συναρτήσεις. Η έξοδος του ίδιου του μοντέλου είναι κείμενο, ενώ ένα εργαλείο μπορεί να επιστρέφει ξεχωριστό παραδοτέο ή παρατήρηση. Ορίστε τον σκοπό και τα ορίσματα μιας λειτουργίας εφαρμογής και χρησιμοποιήστε το πραγματικό επιστρεφόμενο αποτέλεσμά της· ένα αίτημα που παράγει το μοντέλο δεν επιβεβαιώνει ότι ολοκληρώθηκε μια εξωτερική λειτουργία.</p><p>Μια ιδιαίτερη λειτουργία είναι τα Predicted Outputs στη διεπαφή Chat Completions της OpenAI. Όταν το μεγαλύτερο μέρος ενός επιθυμητού αποτελέσματος κειμένου ή κώδικα είναι ήδη γνωστό, το υπάρχον περιεχόμενο μπορεί να δοθεί ως πρόβλεψη για να βοηθήσει στην αναπαραγωγή του πλήρους αποτελέσματος με μικρή αλλαγή. Για παράδειγμα, δώστε ένα τρέχον αρχείο και ζητήστε μετονομασία μιας στενά καθορισμένης ιδιότητας, διατηρώντας τον περιβάλλοντα κώδικα. Η πρόβλεψη είναι αναμενόμενο περιεχόμενο εξόδου, όχι οδηγία ή εγγύηση ότι τα αμετάβλητα μέρη θα παραμείνουν σωστά. Εξετάστε το αναπαραγόμενο παραδοτέο έναντι της ζητούμενης τροποποίησης και του αρχικού υλικού.</p><p>Τα Predicted Outputs έχουν δικά τους όρια συμβατότητας. Η OpenAI τεκμηριώνει χρήση μόνο κειμένου, χωρίς εισόδους ή εξόδους ήχου και χωρίς κλήσεις συναρτήσεων σε αυτό το αίτημα. Δεν υποστηρίζουν πολλαπλές επιλογές με n μεγαλύτερο από 1, λογαριθμικές πιθανότητες, θετικές ποινές παρουσίας ή συχνότητας ή την παράμετρο max_completion_tokens. Διατηρήστε αυτήν τη ροή αναπαραγωγής χωριστή από μια εργασία που χρειάζεται κλήσεις εργαλείων. Το κείμενο πρόβλεψης μπορεί να ταιριάζει με μέρη της εξόδου και ο πάροχος αναφέρει αποδεκτά και απορριφθέντα tokens πρόβλεψης· μια ακατάλληλη πρόβλεψη μπορεί να μείνει εν μέρει αχρησιμοποίητη, επομένως η λειτουργία δεν εγγυάται συγκεκριμένη επιτάχυνση ή αποτέλεσμα.</p><p>Για συνηθισμένες εργασίες τήρησης οδηγιών, ένα χρήσιμο αποτέλεσμα GPT-4.1 είναι ένα παραδοτέο εγγράφου ή κώδικα που ακολουθεί καθορισμένη προδιαγραφή, μια εξαγωγή στοιχείων με ρητά πεδία ή ένα αίτημα εργαλείου του οποίου τα ορίσματα ταιριάζουν στη δοσμένη λειτουργία. Για μικρή αλλαγή σε ένα κυρίως αμετάβλητο αρχείο, η ροή προβλεπόμενης εξόδου προσφέρει πιο συγκεκριμένο τρόπο προετοιμασίας του αναμενόμενου αποτελέσματος. Και στις δύο περιπτώσεις, διατηρήστε το αρχικό υλικό που χρειάζεται για τον έλεγχο της απάντησης και δηλώστε ρητά την ασάφεια. Η χωρητικότητα συμφραζομένων και τα εργαλεία του μοντέλου υποστηρίζουν τη ροή· η περιγραφή της εργασίας εξακολουθεί να καθορίζει τι περιέχει μια πλήρης, χρηστική απάντηση.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Μαζική επεξεργασία</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code></dd></div><div><dt>Έξοδος</dt><dd><code>text</code></dd></div><div><dt>Μορφή εξόδου</dt><dd>Ενσωματωμένο JSON στο results[].response.body</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>/v1/chat/completions</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>openai/gpt-4.1:batch</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">requests</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>batch_item[]</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο πλήθος στοιχείων: 1</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">requests[].custom_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">requests[].body.messages</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>message[]</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">completion_window</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>24h</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>object|null</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">requests[].body.model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>openai/gpt-4.1:batch, openai/gpt-4.1</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider.only</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string[]</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>openai</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider.allow_fallbacks</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>boolean|null</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>false, null</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>endpoint, model, requests</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>representation</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Ενσωματωμένος πίνακας requests[]· κάθε στοιχείο έχει custom_id και body</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>request_endpoint_profile</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>file_material</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Ο καλών μπορεί να διαβάσει το πραγματικό υλικό UTF-8 JSONL τοπικά στον πίνακα requests[]. Δεν χρησιμοποιείται παράμετρος purpose για μεταφόρτωση, input_file_id ή αναφορά σε αρχείο. Αν το υλικό του πελάτη λείπει ή είναι κενό, η προετοιμασία σταματά πριν από το POST.</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>serialization_order</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>endpoint, model, provider (αν παρέχεται), completion_window (αν παρέχεται), requests στο τέλος</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>optional_controls</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>schema_scope</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Σώματα αιτημάτων Text Chat Completions στον τεκμηριωμένο ενσωματωμένο φάκελο Batch.</td></tr></tbody></table></div><p>Κύκλος ζωής: <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · Το πραγματικό response.id της αρχικής απόκρισης δημιουργίας· ο ίδιος χρήστης, το ίδιο κλειδί και η ίδια ομάδα</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Τιμολόγηση</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.</p><dl data-price-conditions><dt>Γρήγορη λειτουργία</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η γρήγορη λειτουργία</span></dd><dt>Λειτουργία flex</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η λειτουργία flex</span></dd><dt>Μέγιστη προσπάθεια συλλογισμού</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default</span></dd><dt>Τιμολόγηση ρητής αποθήκευσης στην κρυφή μνήμη</dt><dd>Δεν είναι ενεργοποιημένο <span class=\"note-s\">Όταν ζητείται ρητή αποθήκευση στην κρυφή μνήμη</span></dd></dl></div><div data-declared-tariff-pricing><h4>Χρεώσεις Ailoot</h4><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Πίνακας χρεώσεων</th><th>Token συμφραζομένων, πάνω από</th><th>Token συμφραζομένων, έως και</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Βασικές χρεώσεις ανά token</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>Βασική χρέωση</td><td data-cell-label=\"Token συμφραζομένων, πάνω από\"><span class=\"card-cell-label\">Token συμφραζομένων, πάνω από</span>—</td><td data-cell-label=\"Token συμφραζομένων, έως και\"><span class=\"card-cell-label\">Token συμφραζομένων, έως και</span>Χωρίς ανώτατο όριο</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου</span> <b>$0.002</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου</span> <b>$0.008</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη</span> <b>$0.0005</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Επίπεδο 1 βάσει μήκους αιτήματος</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Token συμφραζομένων, πάνω από\"><span class=\"card-cell-label\">Token συμφραζομένων, πάνω από</span>0</td><td data-cell-label=\"Token συμφραζομένων, έως και\"><span class=\"card-cell-label\">Token συμφραζομένων, έως και</span>Χωρίς ανώτατο όριο</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου</span> <b>$0.002</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου</span> <b>$0.008</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη</span> <b>$0.0005</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/billing/reserve/\">Πώς λειτουργούν η δέσμευση και η εκκαθάριση →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Παραδείγματα αιτημάτων</h3><h4>Ailoot Ultra · Μαζική επεξεργασία</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2036-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2036-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · διατηρημένο δείγμα δοκιμής</button><button class=\"cg-tab\" id=\"model-code-2036-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2036-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · πραγματικό JSONL του πελάτη</button><button class=\"cg-tab\" id=\"model-code-2036-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2036-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · αποθηκεύστε κάθε ολοκληρωμένο αποτέλεσμα</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2036-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2036-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json\nfrom pathlib import Path\nbody=json.loads(&#39;{&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;,&quot;model&quot;:&quot;openai/gpt-4.1:batch&quot;,&quot;requests&quot;:[{&quot;custom_id&quot;:&quot;req-0001&quot;,&quot;body&quot;:{&quot;messages&quot;:[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Hello!&quot;}],&quot;max_tokens&quot;:16}}]}&#39;)\nPath(&quot;batch-request.json&quot;).write_text(json.dumps(body,ensure_ascii=False),encoding=&quot;utf-8&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2036-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2036-tab-1\" hidden><pre data-lang=\"python\"><code>import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(&quot;Customer JSONL file is missing&quot;)\n    items = [json.loads(line) for line in path.read_text(encoding=&quot;utf-8&quot;).splitlines() if line.strip()]\n    if not items: raise ValueError(&quot;Customer JSONL contains no requests&quot;)\n    ids = set()\n    for item in items:\n        if set(item) != {&quot;custom_id&quot;, &quot;body&quot;}: raise ValueError(&quot;Each item needs custom_id and body&quot;)\n        cid = item[&quot;custom_id&quot;]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(&quot;custom_id must be nonempty and unique&quot;)\n        ids.add(cid)\n        if not isinstance(item[&quot;body&quot;], dict) or not item[&quot;body&quot;].get(&quot;messages&quot;): raise ValueError(&quot;Supply actual text messages&quot;)\n        supplied_model = item[&quot;body&quot;].get(&quot;model&quot;)\n        if supplied_model is not None and supplied_model not in [&#39;openai/gpt-4.1:batch&#39;, &#39;openai/gpt-4.1&#39;]: raise ValueError(&quot;body.model must be an exact documented caller or wire ID&quot;)\n    return {&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;, &quot;model&quot;:&quot;openai/gpt-4.1:batch&quot;, &quot;requests&quot;:items}\n\nif __name__ == &quot;__main__&quot;:\n    material = os.environ.get(&quot;AILOOT_BATCH_REQUESTS_JSONL&quot;, &quot;&quot;)\n    if not material: raise SystemExit(&quot;Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file&quot;)\n    body = prepare_requests(material)\n    key = os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;)\n    if not key: raise SystemExit(&quot;Set AILOOT_API_KEY&quot;)\n    request = Request(&quot;https://api.ailoot.ai/v1/batches&quot;, data=json.dumps(body, ensure_ascii=False).encode(&quot;utf-8&quot;), headers={&quot;Authorization&quot;:&quot;Bearer &quot; + key, &quot;Content-Type&quot;:&quot;application/json&quot;}, method=&quot;POST&quot;)\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(&quot;batch-create-response.json&quot;).write_bytes(raw)\n        print(raw.decode(&quot;utf-8&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2036-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2036-tab-2\" hidden><pre data-lang=\"python\"><code>import json\nfrom pathlib import Path\nraw = Path(&quot;batch-status-response.json&quot;).read_bytes()\nresponse = json.loads(raw)\nif response.get(&quot;status&quot;) != &quot;completed&quot;:\n    raise SystemExit(&quot;Keep the original operation; read its status without resubmitting&quot;)\nresults = response.get(&quot;results&quot;)\nif not isinstance(results, list) or not results:\n    raise SystemExit(&quot;Preserve the original response; completed results are missing&quot;)\nPath(&quot;batch-results.jsonl&quot;).write_text(&quot;&quot;.join(json.dumps(item, ensure_ascii=False) + &quot;\\n&quot; for item in results), encoding=&quot;utf-8&quot;)\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · Μαζική επεξεργασία</h4><p class=\"note-s\">Ενσωματωμένο JSON στο results[].response.body</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</code></li></ul><h5>Έλεγχος κατάστασης εργασίας</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2037-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2037-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · κατάσταση της αρχικής ενέργειας</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2037-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2037-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nBATCH_OPERATION_ID=&quot;$(python3 - &lt;&lt;&#39;PY_ID&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(&quot;batch-create-response.json&quot;).read_text(encoding=&quot;utf-8&quot;))\noperation = response.get(&quot;id&quot;)\nif not isinstance(operation, str) or not operation: raise SystemExit(&quot;No actual original operation ID; preserve the response and do not resubmit&quot;)\nprint(quote(operation, safe=&quot;&quot;))\nPY_ID\n)&quot;\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o batch-status-response.json\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Διατηρήστε κάθε πλήρη απάντηση, αρχείο και τμήμα περιεχομένου που επιστρέφεται.</p><p class=\"note-s\">Διατηρήστε ολόκληρο το αρχικό JSON κατάστασης, κάθε result/custom_id και ολόκληρο το σώμα της απόκρισης ή του σφάλματος. Αποθηκεύστε τα ολοκληρωμένα results[] ως JSONL χωρίς φιλτράρισμα.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε το αρχικό ID της λειτουργίας. Η απόκριση 503 result_pending_check περιέχει X-Should-Retry:false· μην υποβάλετε ποτέ ξανά μια αρχική μαζική εργασία με άγνωστη έκβαση.</p></div><details class=\"card-about\" data-output-fields><summary>Πεδία απάντησης</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Πεδίο</th><th>Τύπος</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].custom_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string|null</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>object|null</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>object|null</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">request_counts</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>object</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].response.status_code</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>integer</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">results[].response.request_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Σφάλματα και επόμενα βήματα</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Απάντηση</th><th>Συνθήκη</th><th>Επόμενο βήμα</th></tr></thead><tbody><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Μη έγκυρος τεκμηριωμένος ενσωματωμένος φάκελος, διπλότυπα κλειδιά, ταυτότητα στοιχείου ή σύγκρουση με τις ρυθμισμένες δυνατότητες του μοντέλου.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διορθώστε τα υποδεικνυόμενα πεδία πριν από οποιαδήποτε νέα υποβολή.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Μη έγκυρο κλειδί API.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Χρησιμοποιήστε το εξουσιοδοτημένο κλειδί Ailoot.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>403 · <code>permission_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η ομάδα μαζικής επεξεργασίας δεν είναι διαθέσιμη.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Ελέγξτε τα δικαιώματα πρόσβασης του κλειδιού/της ομάδας.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η μαζική επεξεργασία χρεώνεται στο υπόλοιπο· η δημιουργία μέσω συνδρομής απορρίπτεται.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Χρησιμοποιήστε την εξουσιοδοτημένη ομάδα που χρεώνεται στο υπόλοιπο.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Δεν μπορεί να υπολογιστεί προσφορά κόστους για την είσοδο της μαζικής εργασίας.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε την απόκριση· χρησιμοποιήστε την τεκμηριωμένη είσοδο της οικογένειας API.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>402 · <code>billing_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Το ποσό δέσμευσης για τη μαζική επεξεργασία δεν είναι διαθέσιμο.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Επιλύστε το ζήτημα αποδοχής πριν από ένα νέο αίτημα.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η τιμή της μεθόδου μαζικής επεξεργασίας/οι εγγενείς τιμές δεν είναι διαθέσιμες.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε την απόκριση· μην αντικαθιστάτε τις τιμές.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>503 · <code>api_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η ακριβής διαδρομή του προμηθευτή δεν είναι διαθέσιμη.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε την απόκριση για τη διόρθωση της διαδρομής.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Το αρχικό αποτέλεσμα χρειάζεται έλεγχο· X-Should-Retry:false.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε το αρχικό operation_id/id και διαβάστε την κατάστασή του· μην επαναλάβετε ποτέ το αρχικό POST.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>404 · <code>not_found</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η λειτουργία κατάστασης της μαζικής εργασίας δεν υπάρχει ή ανήκει σε άλλη ταυτότητα.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Χρησιμοποιήστε το ακριβές αρχικό id και τον ίδιο χρήστη, το ίδιο κλειδί και την ίδια ομάδα.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Εναλλακτικά ονόματα</h3><h4>Εναλλακτικά ονόματα μοντέλου</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-4.1%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4.1%3Abatch&amp;fmt=batches\"><code>openai/gpt-4.1:batch</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4.1%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4.1%3Abatch&amp;fmt=batches\"><code>openai/gpt-4.1:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4.1:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "openai/gpt-4.1:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|openai%2Fgpt-4.1%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.5,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρος τεκμηριωμένος ενσωματωμένος φάκελος, διπλότυπα κλειδιά, ταυτότητα στοιχείου ή σύγκρουση με τις ρυθμισμένες δυνατότητες του μοντέλου.",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από οποιαδήποτε νέα υποβολή.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Μη έγκυρο κλειδί API.",
                "http_status": 401,
                "recovery": "Χρησιμοποιήστε το εξουσιοδοτημένο κλειδί Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Η ομάδα μαζικής επεξεργασίας δεν είναι διαθέσιμη.",
                "http_status": 403,
                "recovery": "Ελέγξτε τα δικαιώματα πρόσβασης του κλειδιού/της ομάδας.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Η μαζική επεξεργασία χρεώνεται στο υπόλοιπο· η δημιουργία μέσω συνδρομής απορρίπτεται.",
                "http_status": 422,
                "recovery": "Χρησιμοποιήστε την εξουσιοδοτημένη ομάδα που χρεώνεται στο υπόλοιπο.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Δεν μπορεί να υπολογιστεί προσφορά κόστους για την είσοδο της μαζικής εργασίας.",
                "http_status": 422,
                "recovery": "Διατηρήστε την απόκριση· χρησιμοποιήστε την τεκμηριωμένη είσοδο της οικογένειας API.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Το ποσό δέσμευσης για τη μαζική επεξεργασία δεν είναι διαθέσιμο.",
                "http_status": 402,
                "recovery": "Επιλύστε το ζήτημα αποδοχής πριν από ένα νέο αίτημα.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Η τιμή της μεθόδου μαζικής επεξεργασίας/οι εγγενείς τιμές δεν είναι διαθέσιμες.",
                "http_status": 503,
                "recovery": "Διατηρήστε την απόκριση· μην αντικαθιστάτε τις τιμές.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Η ακριβής διαδρομή του προμηθευτή δεν είναι διαθέσιμη.",
                "http_status": 503,
                "recovery": "Διατηρήστε την απόκριση για τη διόρθωση της διαδρομής.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Το αρχικό αποτέλεσμα χρειάζεται έλεγχο· X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Διατηρήστε το αρχικό operation_id/id και διαβάστε την κατάστασή του· μην επαναλάβετε ποτέ το αρχικό POST.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Η λειτουργία κατάστασης της μαζικής εργασίας δεν υπάρχει ή ανήκει σε άλλη ταυτότητα.",
                "http_status": 404,
                "recovery": "Χρησιμοποιήστε το ακριβές αρχικό id και τον ίδιο χρήστη, το ίδιο κλειδί και την ίδια ομάδα.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρο το αρχικό JSON κατάστασης, κάθε result/custom_id και ολόκληρο το σώμα της απόκρισης ή του σφάλματος. Αποθηκεύστε τα ολοκληρωμένα results[] ως JSONL χωρίς φιλτράρισμα.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "Ενσωματωμένο JSON στο results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4.1:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4.1:batch",
                  "openai/gpt-4.1"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "openai"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "openai"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "openai/gpt-4.1:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "openai"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "openai"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "openai/gpt-4.1:batch",
                              "openai/gpt-4.1"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Ο καλών μπορεί να διαβάσει το πραγματικό υλικό UTF-8 JSONL τοπικά στον πίνακα requests[]. Δεν χρησιμοποιείται παράμετρος purpose για μεταφόρτωση, input_file_id ή αναφορά σε αρχείο. Αν το υλικό του πελάτη λείπει ή είναι κενό, η προετοιμασία σταματά πριν από το POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "Ενσωματωμένος πίνακας requests[]· κάθε στοιχείο έχει custom_id και body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Σώματα αιτημάτων Text Chat Completions στον τεκμηριωμένο ενσωματωμένο φάκελο Batch.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (αν παρέχεται)",
              "completion_window (αν παρέχεται)",
              "requests στο τέλος"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "Το πραγματικό response.id της αρχικής απόκρισης δημιουργίας· ο ίδιος χρήστης, το ίδιο κλειδί και η ίδια ομάδα",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Διατηρήστε το αρχικό ID της λειτουργίας. Η απόκριση 503 result_pending_check περιέχει X-Should-Retry:false· μην υποβάλετε ποτέ ξανά μια αρχική μαζική εργασία με άγνωστη έκβαση."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Βασικές χρεώσεις ανά token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Επίπεδο 1 βάσει μήκους αιτήματος",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"openai/gpt-4.1:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['openai/gpt-4.1:batch', 'openai/gpt-4.1']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4.1:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 2,
        "input": [
          "text"
        ],
        "label": "Μαζική επεξεργασία",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 8,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4.1:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.5,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 8,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.000002",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.0005000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.0000005",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-4.1:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "246c661ad3d113893a533c908cc81f052d59de15c6af5b0d2b7808e85ecff3c1",
    "input_html_sha256": "f52499e2474ef8d83960a70c75b4d411c3b178601aaa5677ced18bbccc7fca59",
    "private_audit_sha256": "9c320131ba80d6c0a8d56187108c9f13b382f8f807f905c7cabcb30e3d1c4480",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/openai-gpt-4-1-u003a-batch/",
    "description": "Το OpenAI GPT-4.1 είναι μοντέλο χωρίς ξεχωριστό στάδιο συλλογισμού για ακριβή τήρηση οδηγιών, προγραμματισμό και κλήσεις εργαλείων. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, με μεγάλο παράθυρο συμφραζομένων, Structured Outputs και Predicted Outputs για αναπαραγωγή κειμένου ή κώδικα που παραμένει κυρίως αμετάβλητος.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/openai-gpt-4-1-u003a-batch/index.md",
    "title": "OpenAI: GPT-4.1 (batch) — Ailoot",
    "url": "https://ailoot.ai/models/el/openai-gpt-4-1-u003a-batch/"
  },
  "rawModel": {
    "about": "Το GPT-4.1 είναι το μοντέλο της OpenAI χωρίς ξεχωριστό στάδιο συλλογισμού για τήρηση οδηγιών και κλήσεις εργαλείων, με ευρεία γνώση σε πολλούς τομείς. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο χωρίς ειδικό βήμα συλλογισμού. Τα μεγάλα συμφραζόμενά του το καθιστούν χρήσιμο όταν η εργασία είναι σαφώς καθορισμένη, αλλά το σχετικό υλικό εκτείνεται σε εκτενή έγγραφα ή κώδικα. Δηλώστε τη λειτουργία που θέλετε, το αρχικό υλικό στο οποίο εφαρμόζεται και τη μορφή του τελικού αποτελέσματος.\n\nΓια επεξεργασία εγγράφων, διαχωρίστε τις οδηγίες από το υλικό με επικεφαλίδες ή άλλα σαφή όρια. Επισημάνετε τα έγγραφα και διατηρήστε αναγνωριστικά στα οποία χρειάζεται να αναφέρεται η απάντηση. Ορίστε τα πεδία εξαγωγής, τα κριτήρια σύγκρισης ή το κοινό και την έκταση μιας αναδιατύπωσης. Μια ενδεικτική έξοδος μπορεί να είναι πίνακας απαιτήσεων με τις θέσεις τους στις πηγές, σύνοψη οργανωμένη βάσει καθορισμένου συνόλου ερωτημάτων ή δομημένη εγγραφή που διακρίνει τις πληροφορίες που λείπουν από μια ρητή τιμή.\n\nΓια προγραμματισμό, δώστε τα σχετικά αρχεία, τη ζητούμενη αλλαγή και τη συμπεριφορά που πρέπει να παραμείνει άθικτη. Ζητήστε το πραγματικό παραδοτέο που χρειάζεστε: αναθεωρημένη συνάρτηση, πλήρες αρχείο, προτεινόμενα ορίσματα εργαλείου ή εξήγηση της επηρεαζόμενης λογικής. Τα παραδείγματα μπορούν να διευκρινίζουν έναν κανόνα μορφοποίησης ή μια οριακή περίπτωση, αλλά πρέπει να ακολουθούν τις ίδιες απαιτήσεις με την πραγματική εργασία. Οι κατευθύνσεις της OpenAI για τη σύνταξη οδηγιών δίνουν έμφαση σε άμεσες οδηγίες, ρόλους, όρια πηγών και αντιπροσωπευτικά παραδείγματα, αντί να θεωρούν ότι ένα μεγάλο αίτημα είναι αυτόματα ακριβές.\n\nΗ ακριβής προδιαγραφή του GPT-4.1 αναφέρει παράθυρο συμφραζομένων 1.047.576 tokens, μέγιστη έξοδο 32.768 tokens και όριο γνώσεων την 1η Ιουνίου 2024. Τα μεγάλα συμφραζόμενα εισόδου δεν συνεπάγονται εξίσου μεγάλη έξοδο, επομένως ένα αίτημα αναδιατύπωσης εκτενούς υλικού πρέπει να προσδιορίζει το απαιτούμενο μέρος και τελικό παραδοτέο. Διατηρήστε αρκετό χώρο για την απάντηση και δώστε τρέχουσες πληροφορίες όταν η εργασία εξαρτάται από πραγματικά στοιχεία μετά το όριο γνώσεων. Ο τεκμηριωμένος τύπος μοντέλου του GPT-4.1 είναι chat· οι ρυθμίσεις προσπάθειας συλλογισμού από νεότερα μοντέλα συλλογισμού δεν αποτελούν μέρος αυτού του προφίλ.\n\nΗ OpenAI τεκμηριώνει διεπαφές Chat Completions, Responses, Assistants, Batch και περαιτέρω εκπαίδευσης για το GPT-4.1. Οι αναφερόμενες λειτουργίες περιλαμβάνουν συνεχή ροή, Structured Outputs, κλήσεις συναρτήσεων, μεταφορτώσεις αρχείων, είσοδο εικόνων, αναζήτηση στον ιστό και σε αρχεία, περαιτέρω εκπαίδευση και προσωρινή αποθήκευση εισόδου. Τα εργαλεία του περιλαμβάνουν ερμηνεία κώδικα, δημιουργία εικόνων και συνδέσεις MCP, καθώς και αναζήτηση και συναρτήσεις. Η έξοδος του ίδιου του μοντέλου είναι κείμενο, ενώ ένα εργαλείο μπορεί να επιστρέφει ξεχωριστό παραδοτέο ή παρατήρηση. Ορίστε τον σκοπό και τα ορίσματα μιας λειτουργίας εφαρμογής και χρησιμοποιήστε το πραγματικό επιστρεφόμενο αποτέλεσμά της· ένα αίτημα που παράγει το μοντέλο δεν επιβεβαιώνει ότι ολοκληρώθηκε μια εξωτερική λειτουργία.\n\nΜια ιδιαίτερη λειτουργία είναι τα Predicted Outputs στη διεπαφή Chat Completions της OpenAI. Όταν το μεγαλύτερο μέρος ενός επιθυμητού αποτελέσματος κειμένου ή κώδικα είναι ήδη γνωστό, το υπάρχον περιεχόμενο μπορεί να δοθεί ως πρόβλεψη για να βοηθήσει στην αναπαραγωγή του πλήρους αποτελέσματος με μικρή αλλαγή. Για παράδειγμα, δώστε ένα τρέχον αρχείο και ζητήστε μετονομασία μιας στενά καθορισμένης ιδιότητας, διατηρώντας τον περιβάλλοντα κώδικα. Η πρόβλεψη είναι αναμενόμενο περιεχόμενο εξόδου, όχι οδηγία ή εγγύηση ότι τα αμετάβλητα μέρη θα παραμείνουν σωστά. Εξετάστε το αναπαραγόμενο παραδοτέο έναντι της ζητούμενης τροποποίησης και του αρχικού υλικού.\n\nΤα Predicted Outputs έχουν δικά τους όρια συμβατότητας. Η OpenAI τεκμηριώνει χρήση μόνο κειμένου, χωρίς εισόδους ή εξόδους ήχου και χωρίς κλήσεις συναρτήσεων σε αυτό το αίτημα. Δεν υποστηρίζουν πολλαπλές επιλογές με n μεγαλύτερο από 1, λογαριθμικές πιθανότητες, θετικές ποινές παρουσίας ή συχνότητας ή την παράμετρο max_completion_tokens. Διατηρήστε αυτήν τη ροή αναπαραγωγής χωριστή από μια εργασία που χρειάζεται κλήσεις εργαλείων. Το κείμενο πρόβλεψης μπορεί να ταιριάζει με μέρη της εξόδου και ο πάροχος αναφέρει αποδεκτά και απορριφθέντα tokens πρόβλεψης· μια ακατάλληλη πρόβλεψη μπορεί να μείνει εν μέρει αχρησιμοποίητη, επομένως η λειτουργία δεν εγγυάται συγκεκριμένη επιτάχυνση ή αποτέλεσμα.\n\nΓια συνηθισμένες εργασίες τήρησης οδηγιών, ένα χρήσιμο αποτέλεσμα GPT-4.1 είναι ένα παραδοτέο εγγράφου ή κώδικα που ακολουθεί καθορισμένη προδιαγραφή, μια εξαγωγή στοιχείων με ρητά πεδία ή ένα αίτημα εργαλείου του οποίου τα ορίσματα ταιριάζουν στη δοσμένη λειτουργία. Για μικρή αλλαγή σε ένα κυρίως αμετάβλητο αρχείο, η ροή προβλεπόμενης εξόδου προσφέρει πιο συγκεκριμένο τρόπο προετοιμασίας του αναμενόμενου αποτελέσματος. Και στις δύο περιπτώσεις, διατηρήστε το αρχικό υλικό που χρειάζεται για τον έλεγχο της απάντησης και δηλώστε ρητά την ασάφεια. Η χωρητικότητα συμφραζομένων και τα εργαλεία του μοντέλου υποστηρίζουν τη ροή· η περιγραφή της εργασίας εξακολουθεί να καθορίζει τι περιέχει μια πλήρης, χρηστική απάντηση.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 1047576,
      "manufacturer_input": [
        "image",
        "text",
        "file"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.000002",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Πλήρης τιμολόγηση της διαμόρφωσης στις λεπτομέρειες."
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "openai/gpt-4.1:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.5,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρος τεκμηριωμένος ενσωματωμένος φάκελος, διπλότυπα κλειδιά, ταυτότητα στοιχείου ή σύγκρουση με τις ρυθμισμένες δυνατότητες του μοντέλου.",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από οποιαδήποτε νέα υποβολή.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Μη έγκυρο κλειδί API.",
                "http_status": 401,
                "recovery": "Χρησιμοποιήστε το εξουσιοδοτημένο κλειδί Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Η ομάδα μαζικής επεξεργασίας δεν είναι διαθέσιμη.",
                "http_status": 403,
                "recovery": "Ελέγξτε τα δικαιώματα πρόσβασης του κλειδιού/της ομάδας.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Η μαζική επεξεργασία χρεώνεται στο υπόλοιπο· η δημιουργία μέσω συνδρομής απορρίπτεται.",
                "http_status": 422,
                "recovery": "Χρησιμοποιήστε την εξουσιοδοτημένη ομάδα που χρεώνεται στο υπόλοιπο.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Δεν μπορεί να υπολογιστεί προσφορά κόστους για την είσοδο της μαζικής εργασίας.",
                "http_status": 422,
                "recovery": "Διατηρήστε την απόκριση· χρησιμοποιήστε την τεκμηριωμένη είσοδο της οικογένειας API.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Το ποσό δέσμευσης για τη μαζική επεξεργασία δεν είναι διαθέσιμο.",
                "http_status": 402,
                "recovery": "Επιλύστε το ζήτημα αποδοχής πριν από ένα νέο αίτημα.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Η τιμή της μεθόδου μαζικής επεξεργασίας/οι εγγενείς τιμές δεν είναι διαθέσιμες.",
                "http_status": 503,
                "recovery": "Διατηρήστε την απόκριση· μην αντικαθιστάτε τις τιμές.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Η ακριβής διαδρομή του προμηθευτή δεν είναι διαθέσιμη.",
                "http_status": 503,
                "recovery": "Διατηρήστε την απόκριση για τη διόρθωση της διαδρομής.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Το αρχικό αποτέλεσμα χρειάζεται έλεγχο· X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Διατηρήστε το αρχικό operation_id/id και διαβάστε την κατάστασή του· μην επαναλάβετε ποτέ το αρχικό POST.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Η λειτουργία κατάστασης της μαζικής εργασίας δεν υπάρχει ή ανήκει σε άλλη ταυτότητα.",
                "http_status": 404,
                "recovery": "Χρησιμοποιήστε το ακριβές αρχικό id και τον ίδιο χρήστη, το ίδιο κλειδί και την ίδια ομάδα.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρο το αρχικό JSON κατάστασης, κάθε result/custom_id και ολόκληρο το σώμα της απόκρισης ή του σφάλματος. Αποθηκεύστε τα ολοκληρωμένα results[] ως JSONL χωρίς φιλτράρισμα.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "Ενσωματωμένο JSON στο results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4.1:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4.1:batch",
                  "openai/gpt-4.1"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "openai"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "openai"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "openai/gpt-4.1:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "openai"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "openai"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "openai/gpt-4.1:batch",
                              "openai/gpt-4.1"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Ο καλών μπορεί να διαβάσει το πραγματικό υλικό UTF-8 JSONL τοπικά στον πίνακα requests[]. Δεν χρησιμοποιείται παράμετρος purpose για μεταφόρτωση, input_file_id ή αναφορά σε αρχείο. Αν το υλικό του πελάτη λείπει ή είναι κενό, η προετοιμασία σταματά πριν από το POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "Ενσωματωμένος πίνακας requests[]· κάθε στοιχείο έχει custom_id και body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Σώματα αιτημάτων Text Chat Completions στον τεκμηριωμένο ενσωματωμένο φάκελο Batch.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (αν παρέχεται)",
              "completion_window (αν παρέχεται)",
              "requests στο τέλος"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "Το πραγματικό response.id της αρχικής απόκρισης δημιουργίας· ο ίδιος χρήστης, το ίδιο κλειδί και η ίδια ομάδα",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Διατηρήστε το αρχικό ID της λειτουργίας. Η απόκριση 503 result_pending_check περιέχει X-Should-Retry:false· μην υποβάλετε ποτέ ξανά μια αρχική μαζική εργασία με άγνωστη έκβαση."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Βασικές χρεώσεις ανά token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Επίπεδο 1 βάσει μήκους αιτήματος",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"openai/gpt-4.1:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['openai/gpt-4.1:batch', 'openai/gpt-4.1']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4.1:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 2,
        "input": [
          "text"
        ],
        "label": "Μαζική επεξεργασία",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 8,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.000002",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.0005000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.0000005",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4.1:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.5,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 8,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.000002",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.0005000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.0000005",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-4.1:batch",
        "request_model_id": "openai/gpt-4.1:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT-4.1 (batch)",
    "price": {
      "in": 2,
      "in_label": null,
      "out": 8,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 2,
      "sort_out": 8,
      "varies": true
    },
    "short": "Το OpenAI GPT-4.1 είναι μοντέλο χωρίς ξεχωριστό στάδιο συλλογισμού για ακριβή τήρηση οδηγιών, προγραμματισμό και κλήσεις εργαλείων. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, με μεγάλο παράθυρο συμφραζομένων, Structured Outputs και Predicted Outputs για αναπαραγωγή κειμένου ή κώδικα που παραμένει κυρίως αμετάβλητος."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Το OpenAI GPT-4.1 είναι μοντέλο χωρίς ξεχωριστό στάδιο συλλογισμού για ακριβή τήρηση οδηγιών, προγραμματισμό και κλήσεις εργαλείων. Δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, με μεγάλο παράθυρο συμφραζομένων, Structured Outputs και Predicted Outputs για αναπαραγωγή κειμένου ή κώδικα που παραμένει κυρίως αμετάβλητος.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7e4ee132378027c2ea7b2776a6c9b6ffe7c4d42e363a0d046c61ef3dd7ba0c40",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "4239a8dab6e27aea7b267b6c767d6f3c2dceb32ec971c52a90cfa4ca2d09eabe"
}
