{
  "aboutHtml": "<p>Το GPT-4o είναι το ευέλικτο μοντέλο GPT της OpenAI για κατανόηση κειμένου και εικόνων, συγγραφή και εργασία σε εφαρμογές. Το «o» σημαίνει «omni», ενώ αυτό το τεκμηριωμένο μοντέλο δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, συμπεριλαμβανομένων Structured Outputs. Ένα πρακτικό αίτημα μπορεί να συνδυάζει μια γραπτή περιγραφή με φωτογραφίες, στιγμιότυπα οθόνης ή σελίδες εγγράφων και να ζητά μια σαφή εξήγηση, ένα επεξεργασμένο παραδοτέο ή καθορισμένα πεδία για ένα άλλο στάδιο της εφαρμογής.</p><p>Για μια αναφορά, δώστε τα αρχικά έγγραφα και την απόφαση που πρέπει να υποστηρίζει η αναφορά. Προσδιορίστε τις σχετικές ημερομηνίες, μονάδες και ετικέτες τεκμηρίων και έπειτα ζητήστε μια σύγκριση που διαχωρίζει παρατηρήσεις, παραδοχές και πληροφορίες που λείπουν. Για μια οπτική εργασία, επισημάνετε το αντικείμενο, το γράφημα ή την κατάσταση διεπαφής που έχει σημασία και συμπεριλάβετε το περιβάλλον πλαίσιο. Για μια αλλαγή κώδικα, δώστε τον επηρεαζόμενο κώδικα, την επιθυμητή συμπεριφορά και τους περιορισμούς που πρέπει να παραμείνουν άθικτοι. Αυτοί είναι συγκεκριμένοι τρόποι χρήσης των δυνατοτήτων κειμένου και εικόνας του μοντέλου χωρίς να βασίζεστε στις οδηγίες για να υπονοήσουν ολόκληρη την εργασία.</p><p>Το τρέχον προφίλ GPT-4o της OpenAI αναφέρει παράθυρο συμφραζομένων 128.000 tokens, μέγιστη έξοδο 16.384 tokens και όριο γνώσεων την 1η Οκτωβρίου 2023. Ο πάροχος αναφέρει χωριστά αρκετά χρονολογημένα στιγμιότυπα GPT-4o. Η συνομιλία, το υλικό εισόδου και η παραγόμενη απάντηση μοιράζονται τον προϋπολογισμό συμφραζομένων, επομένως μια μεγάλη συλλογή εγγράφων εξακολουθεί να χρειάζεται οργάνωση και χώρο για το τελικό παραδοτέο της. Πραγματικά στοιχεία που αλλάζουν ή προέρχονται από ιδιωτικό σύστημα πρέπει να δίνονται απευθείας ή να λαμβάνονται μέσω ρητά διαμορφωμένου εργαλείου.</p><p>Ο οδηγός οπτικής κατανόησης δέχεται PNG, JPEG, WebP και μη κινούμενα GIF. Το GPT-4o υποστηρίζει λεπτομέρεια εικόνας low, high και auto· τα high και auto ακολουθούν επεξεργασία με πλακίδια εικόνας. Μεγεθύνετε μικρές ετικέτες, διατηρείτε το κείμενο στον σωστό προσανατολισμό και διατηρήστε το υπόμνημα ή το περιβάλλον διάγραμμα όταν ερμηνεύετε ένα γράφημα. Οι τεκμηριωμένοι περιορισμοί περιλαμβάνουν ακριβή χωρικό εντοπισμό, κατά προσέγγιση καταμετρήσεις αντικειμένων, ορισμένα μη λατινικά συστήματα γραφής και πανοραμικές λήψεις ή λήψεις με φακό fisheye. Το μοντέλο μπορεί επίσης να περιγράψει λανθασμένα μια εικόνα, επομένως διατηρήστε την πηγή και ζητήστε τις συγκεκριμένες παρατηρήσεις που στηρίζουν μια ερμηνεία. Στην τεκμηριωμένη ροή οπτικής κατανόησης της OpenAI, το συνολικό μέγεθος δεδομένων του αιτήματος περιορίζεται σε 512 MB και ένα αίτημα μπορεί να περιλαμβάνει έως 1.500 εικόνες· οι εικόνες και το κείμενο πρέπει επίσης να χωρούν στα συμφραζόμενα του μοντέλου.</p><p>Η ροή εισόδου αρχείων της OpenAI παρέχει σε ένα μοντέλο με οπτική κατανόηση τόσο το εξαγόμενο κείμενο όσο και εικόνες σελίδων από PDF. Τα έγγραφα γραφείου εκτός PDF παρέχουν εξαγόμενο κείμενο αντί για τα ενσωματωμένα γραφήματά τους, ενώ τα υπολογιστικά φύλλα εμπλουτίζονται με δεδομένα από έως τις πρώτες 1.000 γραμμές ανά φύλλο. Κάθε αρχείο πρέπει να είναι μικρότερο από 50 MB, με συνολικό όριο 50 MB ανά αίτημα. Το Chat Completions υποστηρίζει μέρη αρχείων PDF· η τεκμηριωμένη ροή Responses δέχεται επιπλέον μορφές αρχείων. Επιλέξτε αναπαράσταση PDF όπου έχει σημασία η οπτική πιστότητα και διατηρήστε ορατά τα αναγνωριστικά πηγών στο αποτέλεσμα.</p><p>Η συνεχής ροή μπορεί να επιστρέφει την απάντηση καθώς παράγεται. Τα Structured Outputs περιορίζουν μια ολοκληρωμένη απάντηση στο υποστηριζόμενο υποσύνολο του JSON Schema, καθιστώντας τα χρήσιμα για εξαγωγή στοιχείων από έγγραφα ή για ένα αντικείμενο εφαρμογής με καθορισμένα πεδία. Η λειτουργία JSON αφορά μόνο την εγκυρότητα JSON. Ορίστε τους αναμενόμενους τύπους, τις επιτρεπόμενες τιμές και την αντιμετώπιση των τεκμηρίων που λείπουν και έπειτα χειριστείτε χωριστά τις ρητές αρνήσεις ή τις ελλιπείς απαντήσεις. Ένα σχήμα δεν αποδεικνύει αν μια τιμή είναι πραγματικά σωστή, επομένως τα ζητούμενα πεδία πρέπει να παραμένουν ανιχνεύσιμα στο δοσμένο υλικό.</p><p>Ο πάροχος υποστηρίζει κλήσεις συναρτήσεων, αναζήτηση στον ιστό, αναζήτηση σε αρχεία, ερμηνεία κώδικα και συνδέσεις MCP. Οι προσαρμοσμένες συναρτήσεις χρειάζονται ουσιαστικές περιγραφές και σχήματα ορισμάτων· η εφαρμογή εκτελεί τη ζητούμενη ενέργεια και επιστρέφει το αποτέλεσμά της για το επόμενο βήμα του μοντέλου. Το GPT-4o μπορεί επίσης να κατευθύνει ξεχωριστό εργαλείο δημιουργίας εικόνων σε μια διαμορφωμένη ροή Responses. Μια εικόνα που δημιουργείται από εργαλείο είναι δικό της παραδοτέο, ενώ η εγγενής τεκμηριωμένη απάντηση του GPT-4o είναι κείμενο. Η τελική εξήγηση ενός πράκτορα πρέπει να χρησιμοποιεί πραγματικές παρατηρήσεις που ανακτήθηκαν ή υπολογίστηκαν, αντί να αντιμετωπίζει μια προτεινόμενη κλήση εργαλείου ως ολοκληρωμένη λειτουργία.</p><p>Τα Predicted Outputs είναι διαθέσιμα για το GPT-4o όταν αναπαράγεται σε μεγάλο βαθμό γνωστό κείμενο ή κώδικας με μικρές αλλαγές. Δώστε το υπάρχον περιεχόμενο και μια ακριβή τροποποίηση και έπειτα εξετάστε το επιστρεφόμενο παραδοτέο. Αυτή η διαδρομή μόνο κειμένου δεν συνδυάζεται με κλήσεις συναρτήσεων και εξαιρεί τα logprobs, max_completion_tokens και αρκετούς άλλους ελέγχους. Ένα αίτημα που χρησιμοποιεί εργαλεία είναι ξεχωριστή επιλογή όταν η απάντηση εξαρτάται από νέες πληροφορίες από εξωτερική λειτουργία.</p><p>Η OpenAI τεκμηριώνει προσαρμογή μέσω περαιτέρω εκπαίδευσης (fine-tuning) για το GPT-4o, ενώ ο οδηγός βελτιστοποίησής της κατονομάζει ειδικά το στιγμιότυπο της 6ης Αυγούστου 2024 για οπτική προσαρμογή με παραδείγματα εικόνων. Αυτή η ροή προσαρμογής του συγκεκριμένου στιγμιότυπου διαφέρει από ένα συνηθισμένο αίτημα προς το ψευδώνυμο του μοντέλου. Για καθημερινή συγγραφή, ανάλυση ή εξαγωγή στοιχείων, ξεκινήστε με μια χρήσιμη περιγραφή εργασίας και ένα παράδειγμα της επιθυμητής εξόδου. Μια επόμενη παρέμβαση μπορεί να διευκρινίσει ένα στοιχείο που λείπει, να αναθεωρήσει ένα πεδίο ή να βελτιώσει το ίδιο παραδοτέο διατηρώντας τα τεκμήρια και τους περιορισμούς της εργασίας.</p>",
  "aboutText": "Το GPT-4o είναι το ευέλικτο μοντέλο GPT της OpenAI για κατανόηση κειμένου και εικόνων, συγγραφή και εργασία σε εφαρμογές. Το «o» σημαίνει «omni», ενώ αυτό το τεκμηριωμένο μοντέλο δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, συμπεριλαμβανομένων Structured Outputs. Ένα πρακτικό αίτημα μπορεί να συνδυάζει μια γραπτή περιγραφή με φωτογραφίες, στιγμιότυπα οθόνης ή σελίδες εγγράφων και να ζητά μια σαφή εξήγηση, ένα επεξεργασμένο παραδοτέο ή καθορισμένα πεδία για ένα άλλο στάδιο της εφαρμογής.\n\nΓια μια αναφορά, δώστε τα αρχικά έγγραφα και την απόφαση που πρέπει να υποστηρίζει η αναφορά. Προσδιορίστε τις σχετικές ημερομηνίες, μονάδες και ετικέτες τεκμηρίων και έπειτα ζητήστε μια σύγκριση που διαχωρίζει παρατηρήσεις, παραδοχές και πληροφορίες που λείπουν. Για μια οπτική εργασία, επισημάνετε το αντικείμενο, το γράφημα ή την κατάσταση διεπαφής που έχει σημασία και συμπεριλάβετε το περιβάλλον πλαίσιο. Για μια αλλαγή κώδικα, δώστε τον επηρεαζόμενο κώδικα, την επιθυμητή συμπεριφορά και τους περιορισμούς που πρέπει να παραμείνουν άθικτοι. Αυτοί είναι συγκεκριμένοι τρόποι χρήσης των δυνατοτήτων κειμένου και εικόνας του μοντέλου χωρίς να βασίζεστε στις οδηγίες για να υπονοήσουν ολόκληρη την εργασία.\n\nΤο τρέχον προφίλ GPT-4o της OpenAI αναφέρει παράθυρο συμφραζομένων 128.000 tokens, μέγιστη έξοδο 16.384 tokens και όριο γνώσεων την 1η Οκτωβρίου 2023. Ο πάροχος αναφέρει χωριστά αρκετά χρονολογημένα στιγμιότυπα GPT-4o. Η συνομιλία, το υλικό εισόδου και η παραγόμενη απάντηση μοιράζονται τον προϋπολογισμό συμφραζομένων, επομένως μια μεγάλη συλλογή εγγράφων εξακολουθεί να χρειάζεται οργάνωση και χώρο για το τελικό παραδοτέο της. Πραγματικά στοιχεία που αλλάζουν ή προέρχονται από ιδιωτικό σύστημα πρέπει να δίνονται απευθείας ή να λαμβάνονται μέσω ρητά διαμορφωμένου εργαλείου.\n\nΟ οδηγός οπτικής κατανόησης δέχεται PNG, JPEG, WebP και μη κινούμενα GIF. Το GPT-4o υποστηρίζει λεπτομέρεια εικόνας low, high και auto· τα high και auto ακολουθούν επεξεργασία με πλακίδια εικόνας. Μεγεθύνετε μικρές ετικέτες, διατηρείτε το κείμενο στον σωστό προσανατολισμό και διατηρήστε το υπόμνημα ή το περιβάλλον διάγραμμα όταν ερμηνεύετε ένα γράφημα. Οι τεκμηριωμένοι περιορισμοί περιλαμβάνουν ακριβή χωρικό εντοπισμό, κατά προσέγγιση καταμετρήσεις αντικειμένων, ορισμένα μη λατινικά συστήματα γραφής και πανοραμικές λήψεις ή λήψεις με φακό fisheye. Το μοντέλο μπορεί επίσης να περιγράψει λανθασμένα μια εικόνα, επομένως διατηρήστε την πηγή και ζητήστε τις συγκεκριμένες παρατηρήσεις που στηρίζουν μια ερμηνεία. Στην τεκμηριωμένη ροή οπτικής κατανόησης της OpenAI, το συνολικό μέγεθος δεδομένων του αιτήματος περιορίζεται σε 512 MB και ένα αίτημα μπορεί να περιλαμβάνει έως 1.500 εικόνες· οι εικόνες και το κείμενο πρέπει επίσης να χωρούν στα συμφραζόμενα του μοντέλου.\n\nΗ ροή εισόδου αρχείων της OpenAI παρέχει σε ένα μοντέλο με οπτική κατανόηση τόσο το εξαγόμενο κείμενο όσο και εικόνες σελίδων από PDF. Τα έγγραφα γραφείου εκτός PDF παρέχουν εξαγόμενο κείμενο αντί για τα ενσωματωμένα γραφήματά τους, ενώ τα υπολογιστικά φύλλα εμπλουτίζονται με δεδομένα από έως τις πρώτες 1.000 γραμμές ανά φύλλο. Κάθε αρχείο πρέπει να είναι μικρότερο από 50 MB, με συνολικό όριο 50 MB ανά αίτημα. Το Chat Completions υποστηρίζει μέρη αρχείων PDF· η τεκμηριωμένη ροή Responses δέχεται επιπλέον μορφές αρχείων. Επιλέξτε αναπαράσταση PDF όπου έχει σημασία η οπτική πιστότητα και διατηρήστε ορατά τα αναγνωριστικά πηγών στο αποτέλεσμα.\n\nΗ συνεχής ροή μπορεί να επιστρέφει την απάντηση καθώς παράγεται. Τα Structured Outputs περιορίζουν μια ολοκληρωμένη απάντηση στο υποστηριζόμενο υποσύνολο του JSON Schema, καθιστώντας τα χρήσιμα για εξαγωγή στοιχείων από έγγραφα ή για ένα αντικείμενο εφαρμογής με καθορισμένα πεδία. Η λειτουργία JSON αφορά μόνο την εγκυρότητα JSON. Ορίστε τους αναμενόμενους τύπους, τις επιτρεπόμενες τιμές και την αντιμετώπιση των τεκμηρίων που λείπουν και έπειτα χειριστείτε χωριστά τις ρητές αρνήσεις ή τις ελλιπείς απαντήσεις. Ένα σχήμα δεν αποδεικνύει αν μια τιμή είναι πραγματικά σωστή, επομένως τα ζητούμενα πεδία πρέπει να παραμένουν ανιχνεύσιμα στο δοσμένο υλικό.\n\nΟ πάροχος υποστηρίζει κλήσεις συναρτήσεων, αναζήτηση στον ιστό, αναζήτηση σε αρχεία, ερμηνεία κώδικα και συνδέσεις MCP. Οι προσαρμοσμένες συναρτήσεις χρειάζονται ουσιαστικές περιγραφές και σχήματα ορισμάτων· η εφαρμογή εκτελεί τη ζητούμενη ενέργεια και επιστρέφει το αποτέλεσμά της για το επόμενο βήμα του μοντέλου. Το GPT-4o μπορεί επίσης να κατευθύνει ξεχωριστό εργαλείο δημιουργίας εικόνων σε μια διαμορφωμένη ροή Responses. Μια εικόνα που δημιουργείται από εργαλείο είναι δικό της παραδοτέο, ενώ η εγγενής τεκμηριωμένη απάντηση του GPT-4o είναι κείμενο. Η τελική εξήγηση ενός πράκτορα πρέπει να χρησιμοποιεί πραγματικές παρατηρήσεις που ανακτήθηκαν ή υπολογίστηκαν, αντί να αντιμετωπίζει μια προτεινόμενη κλήση εργαλείου ως ολοκληρωμένη λειτουργία.\n\nΤα Predicted Outputs είναι διαθέσιμα για το GPT-4o όταν αναπαράγεται σε μεγάλο βαθμό γνωστό κείμενο ή κώδικας με μικρές αλλαγές. Δώστε το υπάρχον περιεχόμενο και μια ακριβή τροποποίηση και έπειτα εξετάστε το επιστρεφόμενο παραδοτέο. Αυτή η διαδρομή μόνο κειμένου δεν συνδυάζεται με κλήσεις συναρτήσεων και εξαιρεί τα logprobs, max_completion_tokens και αρκετούς άλλους ελέγχους. Ένα αίτημα που χρησιμοποιεί εργαλεία είναι ξεχωριστή επιλογή όταν η απάντηση εξαρτάται από νέες πληροφορίες από εξωτερική λειτουργία.\n\nΗ OpenAI τεκμηριώνει προσαρμογή μέσω περαιτέρω εκπαίδευσης (fine-tuning) για το GPT-4o, ενώ ο οδηγός βελτιστοποίησής της κατονομάζει ειδικά το στιγμιότυπο της 6ης Αυγούστου 2024 για οπτική προσαρμογή με παραδείγματα εικόνων. Αυτή η ροή προσαρμογής του συγκεκριμένου στιγμιότυπου διαφέρει από ένα συνηθισμένο αίτημα προς το ψευδώνυμο του μοντέλου. Για καθημερινή συγγραφή, ανάλυση ή εξαγωγή στοιχείων, ξεκινήστε με μια χρήσιμη περιγραφή εργασίας και ένα παράδειγμα της επιθυμητής εξόδου. Μια επόμενη παρέμβαση μπορεί να διευκρινίσει ένα στοιχείο που λείπει, να αναθεωρήσει ένα πεδίο ή να βελτιώσει το ίδιο παραδοτέο διατηρώντας τα τεκμήρια και τους περιορισμούς της εργασίας.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4d2182591f43486ca4370e64daa240032d99e560b1be430a149a1f6155ea3cfe",
    "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-4o (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4o: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-4o%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\">Το GPT-4o συνδυάζει την κατανόηση κειμένου και εικόνων με τη συγγραφή, τον προγραμματισμό, τα Structured 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-4o είναι το ευέλικτο μοντέλο GPT της OpenAI για κατανόηση κειμένου και εικόνων, συγγραφή και εργασία σε εφαρμογές. Το «o» σημαίνει «omni», ενώ αυτό το τεκμηριωμένο μοντέλο δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, συμπεριλαμβανομένων Structured Outputs. Ένα πρακτικό αίτημα μπορεί να συνδυάζει μια γραπτή περιγραφή με φωτογραφίες, στιγμιότυπα οθόνης ή σελίδες εγγράφων και να ζητά μια σαφή εξήγηση, ένα επεξεργασμένο παραδοτέο ή καθορισμένα πεδία για ένα άλλο στάδιο της εφαρμογής.</p><p>Για μια αναφορά, δώστε τα αρχικά έγγραφα και την απόφαση που πρέπει να υποστηρίζει η αναφορά. Προσδιορίστε τις σχετικές ημερομηνίες, μονάδες και ετικέτες τεκμηρίων και έπειτα ζητήστε μια σύγκριση που διαχωρίζει παρατηρήσεις, παραδοχές και πληροφορίες που λείπουν. Για μια οπτική εργασία, επισημάνετε το αντικείμενο, το γράφημα ή την κατάσταση διεπαφής που έχει σημασία και συμπεριλάβετε το περιβάλλον πλαίσιο. Για μια αλλαγή κώδικα, δώστε τον επηρεαζόμενο κώδικα, την επιθυμητή συμπεριφορά και τους περιορισμούς που πρέπει να παραμείνουν άθικτοι. Αυτοί είναι συγκεκριμένοι τρόποι χρήσης των δυνατοτήτων κειμένου και εικόνας του μοντέλου χωρίς να βασίζεστε στις οδηγίες για να υπονοήσουν ολόκληρη την εργασία.</p><p>Το τρέχον προφίλ GPT-4o της OpenAI αναφέρει παράθυρο συμφραζομένων 128.000 tokens, μέγιστη έξοδο 16.384 tokens και όριο γνώσεων την 1η Οκτωβρίου 2023. Ο πάροχος αναφέρει χωριστά αρκετά χρονολογημένα στιγμιότυπα GPT-4o. Η συνομιλία, το υλικό εισόδου και η παραγόμενη απάντηση μοιράζονται τον προϋπολογισμό συμφραζομένων, επομένως μια μεγάλη συλλογή εγγράφων εξακολουθεί να χρειάζεται οργάνωση και χώρο για το τελικό παραδοτέο της. Πραγματικά στοιχεία που αλλάζουν ή προέρχονται από ιδιωτικό σύστημα πρέπει να δίνονται απευθείας ή να λαμβάνονται μέσω ρητά διαμορφωμένου εργαλείου.</p><p>Ο οδηγός οπτικής κατανόησης δέχεται PNG, JPEG, WebP και μη κινούμενα GIF. Το GPT-4o υποστηρίζει λεπτομέρεια εικόνας low, high και auto· τα high και auto ακολουθούν επεξεργασία με πλακίδια εικόνας. Μεγεθύνετε μικρές ετικέτες, διατηρείτε το κείμενο στον σωστό προσανατολισμό και διατηρήστε το υπόμνημα ή το περιβάλλον διάγραμμα όταν ερμηνεύετε ένα γράφημα. Οι τεκμηριωμένοι περιορισμοί περιλαμβάνουν ακριβή χωρικό εντοπισμό, κατά προσέγγιση καταμετρήσεις αντικειμένων, ορισμένα μη λατινικά συστήματα γραφής και πανοραμικές λήψεις ή λήψεις με φακό fisheye. Το μοντέλο μπορεί επίσης να περιγράψει λανθασμένα μια εικόνα, επομένως διατηρήστε την πηγή και ζητήστε τις συγκεκριμένες παρατηρήσεις που στηρίζουν μια ερμηνεία. Στην τεκμηριωμένη ροή οπτικής κατανόησης της OpenAI, το συνολικό μέγεθος δεδομένων του αιτήματος περιορίζεται σε 512 MB και ένα αίτημα μπορεί να περιλαμβάνει έως 1.500 εικόνες· οι εικόνες και το κείμενο πρέπει επίσης να χωρούν στα συμφραζόμενα του μοντέλου.</p><p>Η ροή εισόδου αρχείων της OpenAI παρέχει σε ένα μοντέλο με οπτική κατανόηση τόσο το εξαγόμενο κείμενο όσο και εικόνες σελίδων από PDF. Τα έγγραφα γραφείου εκτός PDF παρέχουν εξαγόμενο κείμενο αντί για τα ενσωματωμένα γραφήματά τους, ενώ τα υπολογιστικά φύλλα εμπλουτίζονται με δεδομένα από έως τις πρώτες 1.000 γραμμές ανά φύλλο. Κάθε αρχείο πρέπει να είναι μικρότερο από 50 MB, με συνολικό όριο 50 MB ανά αίτημα. Το Chat Completions υποστηρίζει μέρη αρχείων PDF· η τεκμηριωμένη ροή Responses δέχεται επιπλέον μορφές αρχείων. Επιλέξτε αναπαράσταση PDF όπου έχει σημασία η οπτική πιστότητα και διατηρήστε ορατά τα αναγνωριστικά πηγών στο αποτέλεσμα.</p><p>Η συνεχής ροή μπορεί να επιστρέφει την απάντηση καθώς παράγεται. Τα Structured Outputs περιορίζουν μια ολοκληρωμένη απάντηση στο υποστηριζόμενο υποσύνολο του JSON Schema, καθιστώντας τα χρήσιμα για εξαγωγή στοιχείων από έγγραφα ή για ένα αντικείμενο εφαρμογής με καθορισμένα πεδία. Η λειτουργία JSON αφορά μόνο την εγκυρότητα JSON. Ορίστε τους αναμενόμενους τύπους, τις επιτρεπόμενες τιμές και την αντιμετώπιση των τεκμηρίων που λείπουν και έπειτα χειριστείτε χωριστά τις ρητές αρνήσεις ή τις ελλιπείς απαντήσεις. Ένα σχήμα δεν αποδεικνύει αν μια τιμή είναι πραγματικά σωστή, επομένως τα ζητούμενα πεδία πρέπει να παραμένουν ανιχνεύσιμα στο δοσμένο υλικό.</p><p>Ο πάροχος υποστηρίζει κλήσεις συναρτήσεων, αναζήτηση στον ιστό, αναζήτηση σε αρχεία, ερμηνεία κώδικα και συνδέσεις MCP. Οι προσαρμοσμένες συναρτήσεις χρειάζονται ουσιαστικές περιγραφές και σχήματα ορισμάτων· η εφαρμογή εκτελεί τη ζητούμενη ενέργεια και επιστρέφει το αποτέλεσμά της για το επόμενο βήμα του μοντέλου. Το GPT-4o μπορεί επίσης να κατευθύνει ξεχωριστό εργαλείο δημιουργίας εικόνων σε μια διαμορφωμένη ροή Responses. Μια εικόνα που δημιουργείται από εργαλείο είναι δικό της παραδοτέο, ενώ η εγγενής τεκμηριωμένη απάντηση του GPT-4o είναι κείμενο. Η τελική εξήγηση ενός πράκτορα πρέπει να χρησιμοποιεί πραγματικές παρατηρήσεις που ανακτήθηκαν ή υπολογίστηκαν, αντί να αντιμετωπίζει μια προτεινόμενη κλήση εργαλείου ως ολοκληρωμένη λειτουργία.</p><p>Τα Predicted Outputs είναι διαθέσιμα για το GPT-4o όταν αναπαράγεται σε μεγάλο βαθμό γνωστό κείμενο ή κώδικας με μικρές αλλαγές. Δώστε το υπάρχον περιεχόμενο και μια ακριβή τροποποίηση και έπειτα εξετάστε το επιστρεφόμενο παραδοτέο. Αυτή η διαδρομή μόνο κειμένου δεν συνδυάζεται με κλήσεις συναρτήσεων και εξαιρεί τα logprobs, max_completion_tokens και αρκετούς άλλους ελέγχους. Ένα αίτημα που χρησιμοποιεί εργαλεία είναι ξεχωριστή επιλογή όταν η απάντηση εξαρτάται από νέες πληροφορίες από εξωτερική λειτουργία.</p><p>Η OpenAI τεκμηριώνει προσαρμογή μέσω περαιτέρω εκπαίδευσης (fine-tuning) για το GPT-4o, ενώ ο οδηγός βελτιστοποίησής της κατονομάζει ειδικά το στιγμιότυπο της 6ης Αυγούστου 2024 για οπτική προσαρμογή με παραδείγματα εικόνων. Αυτή η ροή προσαρμογής του συγκεκριμένου στιγμιότυπου διαφέρει από ένα συνηθισμένο αίτημα προς το ψευδώνυμο του μοντέλου. Για καθημερινή συγγραφή, ανάλυση ή εξαγωγή στοιχείων, ξεκινήστε με μια χρήσιμη περιγραφή εργασίας και ένα παράδειγμα της επιθυμητής εξόδου. Μια επόμενη παρέμβαση μπορεί να διευκρινίσει ένα στοιχείο που λείπει, να αναθεωρήσει ένα πεδίο ή να βελτιώσει το ίδιο παραδοτέο διατηρώντας τα τεκμήρια και τους περιορισμούς της εργασίας.</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-4o: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-4o:batch, openai/gpt-4o</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.0025</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου</span> <b>$0.01</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη</span> <b>$0.00125</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.0025</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου</span> <b>$0.01</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη</span> <b>$0.00125</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-2052-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · διατηρημένο δείγμα δοκιμής</button><button class=\"cg-tab\" id=\"model-code-2052-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · πραγματικό JSONL του πελάτη</button><button class=\"cg-tab\" id=\"model-code-2052-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-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-2052-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-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-4o: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-2052-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-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-4o:batch&#39;, &#39;openai/gpt-4o&#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-4o: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-2052-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-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-2053-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2053-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-2053-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2053-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-4o%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4o%3Abatch&amp;fmt=batches\"><code>openai/gpt-4o:batch</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4o%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4o%3Abatch&amp;fmt=batches\"><code>openai/gpt-4o:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4o:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|openai%2Fgpt-4o%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 1.25,
        "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-4o: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-4o: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-4o:batch",
                  "openai/gpt-4o"
                ],
                "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-4o: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-4o:batch",
                              "openai/gpt-4o"
                            ],
                            "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-4o: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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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-4o: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-4o:batch', 'openai/gpt-4o']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4o: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.5,
        "input": [
          "text"
        ],
        "label": "Μαζική επεξεργασία",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 10,
        "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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-4o:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 1.25,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2.5,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 10,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "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.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "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.00125000",
            "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.00000125",
            "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-4o:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "2dd6298c908fc7f5ca88e1439dbab6a0b06f67d83ae3312104ba26ae6a5258b3",
    "input_html_sha256": "79fd450ff9d994209e1b44b913f0847c4f34d0f7d48a649482a425a44cf96862",
    "private_audit_sha256": "0d073da91f4707c1231f40a9a00858f859c263b26b1588c0e1365f3f5240ecc9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/openai-gpt-4o-u003a-batch/",
    "description": "Το GPT-4o συνδυάζει την κατανόηση κειμένου και εικόνων με τη συγγραφή, τον προγραμματισμό, τα Structured Outputs και τα εργαλεία της εφαρμογής. Χρησιμοποιήστε το για να αναπτύξετε μια τεκμηριωμένη απάντηση, να ερμηνεύσετε οπτικό υλικό ή να επιστρέψετε καθορισμένα πεδία από μια εκτενή συλλογή πηγών.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/openai-gpt-4o-u003a-batch/index.md",
    "title": "OpenAI: GPT-4o (batch) — Ailoot",
    "url": "https://ailoot.ai/models/el/openai-gpt-4o-u003a-batch/"
  },
  "rawModel": {
    "about": "Το GPT-4o είναι το ευέλικτο μοντέλο GPT της OpenAI για κατανόηση κειμένου και εικόνων, συγγραφή και εργασία σε εφαρμογές. Το «o» σημαίνει «omni», ενώ αυτό το τεκμηριωμένο μοντέλο δέχεται κείμενο και εικόνες και επιστρέφει κείμενο, συμπεριλαμβανομένων Structured Outputs. Ένα πρακτικό αίτημα μπορεί να συνδυάζει μια γραπτή περιγραφή με φωτογραφίες, στιγμιότυπα οθόνης ή σελίδες εγγράφων και να ζητά μια σαφή εξήγηση, ένα επεξεργασμένο παραδοτέο ή καθορισμένα πεδία για ένα άλλο στάδιο της εφαρμογής.\n\nΓια μια αναφορά, δώστε τα αρχικά έγγραφα και την απόφαση που πρέπει να υποστηρίζει η αναφορά. Προσδιορίστε τις σχετικές ημερομηνίες, μονάδες και ετικέτες τεκμηρίων και έπειτα ζητήστε μια σύγκριση που διαχωρίζει παρατηρήσεις, παραδοχές και πληροφορίες που λείπουν. Για μια οπτική εργασία, επισημάνετε το αντικείμενο, το γράφημα ή την κατάσταση διεπαφής που έχει σημασία και συμπεριλάβετε το περιβάλλον πλαίσιο. Για μια αλλαγή κώδικα, δώστε τον επηρεαζόμενο κώδικα, την επιθυμητή συμπεριφορά και τους περιορισμούς που πρέπει να παραμείνουν άθικτοι. Αυτοί είναι συγκεκριμένοι τρόποι χρήσης των δυνατοτήτων κειμένου και εικόνας του μοντέλου χωρίς να βασίζεστε στις οδηγίες για να υπονοήσουν ολόκληρη την εργασία.\n\nΤο τρέχον προφίλ GPT-4o της OpenAI αναφέρει παράθυρο συμφραζομένων 128.000 tokens, μέγιστη έξοδο 16.384 tokens και όριο γνώσεων την 1η Οκτωβρίου 2023. Ο πάροχος αναφέρει χωριστά αρκετά χρονολογημένα στιγμιότυπα GPT-4o. Η συνομιλία, το υλικό εισόδου και η παραγόμενη απάντηση μοιράζονται τον προϋπολογισμό συμφραζομένων, επομένως μια μεγάλη συλλογή εγγράφων εξακολουθεί να χρειάζεται οργάνωση και χώρο για το τελικό παραδοτέο της. Πραγματικά στοιχεία που αλλάζουν ή προέρχονται από ιδιωτικό σύστημα πρέπει να δίνονται απευθείας ή να λαμβάνονται μέσω ρητά διαμορφωμένου εργαλείου.\n\nΟ οδηγός οπτικής κατανόησης δέχεται PNG, JPEG, WebP και μη κινούμενα GIF. Το GPT-4o υποστηρίζει λεπτομέρεια εικόνας low, high και auto· τα high και auto ακολουθούν επεξεργασία με πλακίδια εικόνας. Μεγεθύνετε μικρές ετικέτες, διατηρείτε το κείμενο στον σωστό προσανατολισμό και διατηρήστε το υπόμνημα ή το περιβάλλον διάγραμμα όταν ερμηνεύετε ένα γράφημα. Οι τεκμηριωμένοι περιορισμοί περιλαμβάνουν ακριβή χωρικό εντοπισμό, κατά προσέγγιση καταμετρήσεις αντικειμένων, ορισμένα μη λατινικά συστήματα γραφής και πανοραμικές λήψεις ή λήψεις με φακό fisheye. Το μοντέλο μπορεί επίσης να περιγράψει λανθασμένα μια εικόνα, επομένως διατηρήστε την πηγή και ζητήστε τις συγκεκριμένες παρατηρήσεις που στηρίζουν μια ερμηνεία. Στην τεκμηριωμένη ροή οπτικής κατανόησης της OpenAI, το συνολικό μέγεθος δεδομένων του αιτήματος περιορίζεται σε 512 MB και ένα αίτημα μπορεί να περιλαμβάνει έως 1.500 εικόνες· οι εικόνες και το κείμενο πρέπει επίσης να χωρούν στα συμφραζόμενα του μοντέλου.\n\nΗ ροή εισόδου αρχείων της OpenAI παρέχει σε ένα μοντέλο με οπτική κατανόηση τόσο το εξαγόμενο κείμενο όσο και εικόνες σελίδων από PDF. Τα έγγραφα γραφείου εκτός PDF παρέχουν εξαγόμενο κείμενο αντί για τα ενσωματωμένα γραφήματά τους, ενώ τα υπολογιστικά φύλλα εμπλουτίζονται με δεδομένα από έως τις πρώτες 1.000 γραμμές ανά φύλλο. Κάθε αρχείο πρέπει να είναι μικρότερο από 50 MB, με συνολικό όριο 50 MB ανά αίτημα. Το Chat Completions υποστηρίζει μέρη αρχείων PDF· η τεκμηριωμένη ροή Responses δέχεται επιπλέον μορφές αρχείων. Επιλέξτε αναπαράσταση PDF όπου έχει σημασία η οπτική πιστότητα και διατηρήστε ορατά τα αναγνωριστικά πηγών στο αποτέλεσμα.\n\nΗ συνεχής ροή μπορεί να επιστρέφει την απάντηση καθώς παράγεται. Τα Structured Outputs περιορίζουν μια ολοκληρωμένη απάντηση στο υποστηριζόμενο υποσύνολο του JSON Schema, καθιστώντας τα χρήσιμα για εξαγωγή στοιχείων από έγγραφα ή για ένα αντικείμενο εφαρμογής με καθορισμένα πεδία. Η λειτουργία JSON αφορά μόνο την εγκυρότητα JSON. Ορίστε τους αναμενόμενους τύπους, τις επιτρεπόμενες τιμές και την αντιμετώπιση των τεκμηρίων που λείπουν και έπειτα χειριστείτε χωριστά τις ρητές αρνήσεις ή τις ελλιπείς απαντήσεις. Ένα σχήμα δεν αποδεικνύει αν μια τιμή είναι πραγματικά σωστή, επομένως τα ζητούμενα πεδία πρέπει να παραμένουν ανιχνεύσιμα στο δοσμένο υλικό.\n\nΟ πάροχος υποστηρίζει κλήσεις συναρτήσεων, αναζήτηση στον ιστό, αναζήτηση σε αρχεία, ερμηνεία κώδικα και συνδέσεις MCP. Οι προσαρμοσμένες συναρτήσεις χρειάζονται ουσιαστικές περιγραφές και σχήματα ορισμάτων· η εφαρμογή εκτελεί τη ζητούμενη ενέργεια και επιστρέφει το αποτέλεσμά της για το επόμενο βήμα του μοντέλου. Το GPT-4o μπορεί επίσης να κατευθύνει ξεχωριστό εργαλείο δημιουργίας εικόνων σε μια διαμορφωμένη ροή Responses. Μια εικόνα που δημιουργείται από εργαλείο είναι δικό της παραδοτέο, ενώ η εγγενής τεκμηριωμένη απάντηση του GPT-4o είναι κείμενο. Η τελική εξήγηση ενός πράκτορα πρέπει να χρησιμοποιεί πραγματικές παρατηρήσεις που ανακτήθηκαν ή υπολογίστηκαν, αντί να αντιμετωπίζει μια προτεινόμενη κλήση εργαλείου ως ολοκληρωμένη λειτουργία.\n\nΤα Predicted Outputs είναι διαθέσιμα για το GPT-4o όταν αναπαράγεται σε μεγάλο βαθμό γνωστό κείμενο ή κώδικας με μικρές αλλαγές. Δώστε το υπάρχον περιεχόμενο και μια ακριβή τροποποίηση και έπειτα εξετάστε το επιστρεφόμενο παραδοτέο. Αυτή η διαδρομή μόνο κειμένου δεν συνδυάζεται με κλήσεις συναρτήσεων και εξαιρεί τα logprobs, max_completion_tokens και αρκετούς άλλους ελέγχους. Ένα αίτημα που χρησιμοποιεί εργαλεία είναι ξεχωριστή επιλογή όταν η απάντηση εξαρτάται από νέες πληροφορίες από εξωτερική λειτουργία.\n\nΗ OpenAI τεκμηριώνει προσαρμογή μέσω περαιτέρω εκπαίδευσης (fine-tuning) για το GPT-4o, ενώ ο οδηγός βελτιστοποίησής της κατονομάζει ειδικά το στιγμιότυπο της 6ης Αυγούστου 2024 για οπτική προσαρμογή με παραδείγματα εικόνων. Αυτή η ροή προσαρμογής του συγκεκριμένου στιγμιότυπου διαφέρει από ένα συνηθισμένο αίτημα προς το ψευδώνυμο του μοντέλου. Για καθημερινή συγγραφή, ανάλυση ή εξαγωγή στοιχείων, ξεκινήστε με μια χρήσιμη περιγραφή εργασίας και ένα παράδειγμα της επιθυμητής εξόδου. Μια επόμενη παρέμβαση μπορεί να διευκρινίσει ένα στοιχείο που λείπει, να αναθεωρήσει ένα πεδίο ή να βελτιώσει το ίδιο παραδοτέο διατηρώντας τα τεκμήρια και τους περιορισμούς της εργασίας.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 128000,
      "manufacturer_input": [
        "text",
        "image",
        "file"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "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.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "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-4o:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 1.25,
        "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-4o: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-4o: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-4o:batch",
                  "openai/gpt-4o"
                ],
                "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-4o: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-4o:batch",
                              "openai/gpt-4o"
                            ],
                            "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-4o: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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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-4o: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-4o:batch', 'openai/gpt-4o']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4o: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.5,
        "input": [
          "text"
        ],
        "label": "Μαζική επεξεργασία",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 10,
        "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "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.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "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.00125000",
                "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.00000125",
                "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-4o:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 1.25,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2.5,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 10,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "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.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "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.00125000",
            "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.00000125",
            "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-4o:batch",
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT-4o (batch)",
    "price": {
      "in": 2.5,
      "in_label": null,
      "out": 10,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 2.5,
      "sort_out": 10,
      "varies": true
    },
    "short": "Το GPT-4o συνδυάζει την κατανόηση κειμένου και εικόνων με τη συγγραφή, τον προγραμματισμό, τα Structured 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": "Το GPT-4o συνδυάζει την κατανόηση κειμένου και εικόνων με τη συγγραφή, τον προγραμματισμό, τα Structured Outputs και τα εργαλεία της εφαρμογής. Χρησιμοποιήστε το για να αναπτύξετε μια τεκμηριωμένη απάντηση, να ερμηνεύσετε οπτικό υλικό ή να επιστρέψετε καθορισμένα πεδία από μια εκτενή συλλογή πηγών.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "979df5923655f7bddac7d5a36a5f6379b933c6250a2cb0335320d82ff3b26b7b",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "1b83ef60ca97c24bdaf2a855d813ab74a6e566e7527bae057ad7fb859fb13fac"
}
