Νέα

Ακριβές και 0 σφάλμα, εισάγετε την τιμή και θα σπάσει! Το API επίσημης ανακοίνωσης OpenAI υποστηρίζει δομημένη έξοδο, η ακρίβεια JSON είναι 100%

2024-08-07

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



  Νέα Έκθεση Σοφίας

Επιμέλεια: Τμήμα Σύνταξης
[Εισαγωγή στη Νέα Σοφία] Καλά νέα για προγραμματιστές! Το νέο μοντέλο API του OpenAI που κυκλοφόρησε υποστηρίζει δομημένη έξοδο, το ποσοστό αντιστοίχισης JSON Schema φτάνει το 100% και το κόστος μειώνεται αμέσως στο μισό.
Εξακολουθείτε να ταράζετε τον εγκέφαλό σας για να σκεφτείτε ένα σωρό πρόχειρες λέξεις και έχετε πονοκέφαλο λόγω των διαφόρων αποτελεσμάτων μετά από μία μόνο επέμβαση;
Το OpenAI άκουσε επιτέλους τη φωνή των μαζών και παρείχε στους προγραμματιστές το πολυαναμενόμενο Νο. 1 χαρακτηριστικό.
Το OpenAI ανακοίνωσε σήμερα την κυκλοφορία νέων λειτουργιών και το ChatGPT API υποστηρίζει πλέον δομημένη έξοδο JSON.
Το JSON (JavaScript Object Notation) είναι το βιομηχανικό πρότυπο για μορφές ανταλλαγής αρχείων και δεδομένων, επειδή είναι εύκολο να το διαβάσουν οι άνθρωποι και να το αναλύσουν εύκολα τα μηχανήματα.
Ωστόσο, το LLM συχνά δρα ενάντια στο JSON, συχνά προκαλώντας παραισθήσεις, είτε δημιουργώντας απαντήσεις που ακολουθούν μόνο εν μέρει τις οδηγίες, είτε δημιουργώντας ένα σωρό «ουράνια βιβλία» που δεν μπορούν να αναλυθούν πλήρως.
Αυτό απαιτεί από τους προγραμματιστές να χρησιμοποιούν πολλαπλά εργαλεία ανοιχτού κώδικα, να δοκιμάζουν διαφορετικές προτροπές ή να επαναλαμβάνουν αιτήματα για να δημιουργήσουν το επιθυμητό αποτέλεσμα, το οποίο είναι χρονοβόρο και εντατική.
Η δυνατότητα δομημένης εξόδου, που κυκλοφόρησε σήμερα, επιλύει τα παραπάνω ακανθώδη προβλήματα και διασφαλίζει ότι η έξοδος που δημιουργείται από το μοντέλο ταιριάζει με το σχήμα που καθορίζεται στο JSON.
Η λειτουργία δομημένης εξόδου ήταν πάντα το νούμερο ένα χαρακτηριστικό που ζητούσαν οι προγραμματιστές ο Ultraman δήλωσε επίσης στο tweet του ότι αυτή η έκδοση κυκλοφόρησε ως απάντηση στα αιτήματα των χρηστών.
Οι νέες δυνατότητες που κυκλοφόρησε από το OpenAI έχουν όντως χτυπήσει τις καρδιές πολλών προγραμματιστών και όλοι συμφωνούν ότι "Αυτό είναι μεγάλο θέμα".
Πολλοί άνθρωποι άφησαν μηνύματα εκφράζοντας τον έπαινο τους, αποκαλώντας "Εξαιρετικό!"
Κάποιοι είναι χαρούμενοι και άλλοι λυπημένοι Αυτή η ενημέρωση του OpenAI έχει κάνει τους ανθρώπους να ανησυχούν ότι θα καταπιεί τις νεοφυείς επιχειρήσεις.
Ωστόσο, για περισσότερους απλούς χρήστες, το ερώτημα που τους απασχολεί περισσότερο είναι πότε θα κυκλοφορήσει το GPT-5 Όσο για το JSON Schema, "Τι είναι αυτό;"
Εξάλλου, χωρίς τα νέα του GPT-5, το DevDay του OpenAI αυτό το φθινόπωρο μπορεί να είναι πολύ πιο ήσυχο από πέρυσι.

Εξασφαλίστε εύκολα τη συνοχή του σχήματος

Με τη δομημένη έξοδο, χρειάζεται μόνο να ορίσετε ένα σχήμα JSON και η τεχνητή νοημοσύνη δεν θα είναι πλέον "ηθελημένη" και υπάκουα να εξάγει δεδομένα σύμφωνα με τις οδηγίες.
Επιπλέον, η νέα λειτουργία όχι μόνο κάνει την τεχνητή νοημοσύνη πιο υπάκουη, αλλά βελτιώνει επίσης σημαντικά την αξιοπιστία του περιεχομένου εξόδου.
Στην αξιολόγηση παρακολούθησης του σύνθετου σχήματος JSON, το νέο μοντέλο gpt-4o-2024-08-06 με δομημένη έξοδο έλαβε τέλεια βαθμολογία 100%. Συγκριτικά, το gpt-4-0613 σημείωσε λιγότερο από 40%.
Στην πραγματικότητα, η λειτουργία JSON Schema κυκλοφόρησε από το OpenAI την DevDay πέρυσι.
Τώρα, το OpenAI έχει επεκτείνει αυτήν τη λειτουργία στο API, διασφαλίζοντας ότι η έξοδος που δημιουργείται από το μοντέλο ταιριάζει ακριβώς με το σχήμα JSON που παρέχεται από τον προγραμματιστή.
Η παραγωγή δομημένων δεδομένων από μη δομημένη είσοδο είναι μία από τις βασικές περιπτώσεις χρήσης της τεχνητής νοημοσύνης στις σημερινές εφαρμογές.
Οι προγραμματιστές χρησιμοποιούν το OpenAI API για να δημιουργήσουν ισχυρούς βοηθούς που μπορούν να λαμβάνουν δεδομένα και να απαντούν σε ερωτήσεις μέσω κλήσεων συναρτήσεων, να εξάγουν δομημένα δεδομένα για εισαγωγή δεδομένων και να δημιουργούν ροές εργασίας πολλαπλών βημάτων, επιτρέποντας στο LLM να αναλάβει δράση.

Τεχνικές αρχές

Το OpenAI ακολουθεί μια διττή προσέγγιση για να βελτιώσει την αντιστοίχιση μεταξύ της παραγωγής μοντέλου και του σχήματος JSON.
Αν και η απόδοση του μοντέλου έχει βελτιωθεί σημαντικά, φτάνοντας την ακρίβεια του 93% στις δοκιμές αναφοράς, η εγγενής αβεβαιότητα παραμένει.
Προκειμένου να διασφαλιστεί η σταθερότητα των εφαρμογών που έχουν κατασκευαστεί από προγραμματιστές, το OpenAI παρέχει μια μέθοδο υψηλότερης ακρίβειας για τον περιορισμό της παραγωγής του μοντέλου, επιτυγχάνοντας έτσι 100% αξιοπιστία.

Αποκωδικοποίηση περιορισμών

Το OpenAI χρησιμοποιεί μια τεχνική που ονομάζεται περιορισμένη δειγματοληψία ή περιορισμένη αποκωδικοποίηση Από προεπιλογή, το μοντέλο δημιουργεί εξόδους εντελώς χωρίς περιορισμούς, επιλέγοντας ενδεχομένως οποιοδήποτε διακριτικό από το λεξιλόγιο ως την επόμενη έξοδο.
Αυτή η ευελιξία μπορεί να οδηγήσει σε σφάλματα, όπως η τυχαία εισαγωγή μη έγκυρων χαρακτήρων κατά τη δημιουργία έγκυρου JSON.
Προκειμένου να αποφευχθούν τέτοια σφάλματα, το OpenAI χρησιμοποιεί μια μέθοδο αποκωδικοποίησης δυναμικών περιορισμών για να διασφαλίσει ότι το διακριτικό εξόδου που δημιουργείται συμμορφώνεται πάντα με το παρεχόμενο σχήμα.
Για να επιτευχθεί αυτό, το OpenAI μετατρέπει το παρεχόμενο Σχήμα JSON σε μια γραμματική χωρίς πλαίσιο (CFG).
Για κάθε σχήμα JSON, το OpenAI υπολογίζει μια σύνταξη που αντιπροσωπεύει το σχήμα και έχει αποτελεσματική πρόσβαση στα προεπεξεργασμένα στοιχεία κατά τη δειγματοληψία.
Αυτή η προσέγγιση όχι μόνο καθιστά την παραγόμενη έξοδο πιο ακριβή αλλά και μειώνει τις περιττές καθυστερήσεις. Το πρώτο αίτημα για ένα νέο σχήμα μπορεί να έχει επιπλέον χρόνο επεξεργασίας, αλλά τα επόμενα αιτήματα ανταποκρίνονται γρήγορα μέσω του μηχανισμού προσωρινής αποθήκευσης.

Επιλογές

Εκτός από τη μέθοδο CFG, άλλες μέθοδοι συνήθως χρησιμοποιούν μηχανές πεπερασμένης κατάστασης (FSM) ή κανονικές εκφράσεις για αποκωδικοποίηση περιορισμών.
Ωστόσο, αυτές οι μέθοδοι έχουν περιορισμένες δυνατότητες στη δυναμική ενημέρωση έγκυρων κουπονιών. Ειδικά για πολύπλοκες ένθετες ή αναδρομικές δομές δεδομένων, το FSM είναι συχνά δύσκολο να χειριστεί.
Η μέθοδος CFG του OpenAI αποδίδει καλά όταν εκφράζει σύνθετα σχήματα. Για παράδειγμα, το σχήμα JSON που υποστηρίζει αναδρομικά σχήματα εφαρμόζεται στο OpenAI API αλλά δεν μπορεί να εκφραστεί μέσω μεθόδων FSM.

Εξοικονομήστε το μισό κόστος εισόδου

Η δομημένη έξοδος είναι διαθέσιμη για όλα τα μοντέλα που υποστηρίζουν κλήσεις λειτουργιών, συμπεριλαμβανομένων των πιο πρόσφατων μοντέλων GPT-4o και GPT-4o-mini, καθώς και μοντέλων με ακρίβεια.
Αυτή η δυνατότητα είναι διαθέσιμη στο Chat Completions API, Assistants API και Batch API και είναι συμβατή με οπτική εισαγωγή.
Σε σύγκριση με την έκδοση gpt-4o-2024-05-13, η έκδοση gpt-4o-2024-08-06 είναι επίσης πιο οικονομική Οι προγραμματιστές μπορούν να εξοικονομήσουν το 50% του κόστους στην πλευρά εισόδου (2,50$/1 εκατομμύριο διακριτικό). , εξοικονομώντας 33% του κόστους στο τέλος της παραγωγής ($10,00/1 εκατομμύριο διακριτικό).

Πώς να χρησιμοποιήσετε τη δομημένη έξοδο

Υπάρχουν δύο μορφές που μπορούν να χρησιμοποιηθούν για την εισαγωγή δομημένης εξόδου στο API:

κλήση λειτουργίας

Η δομημένη έξοδος μέσω εργαλείων μπορεί να επιτευχθεί ορίζοντας αυστηρά: true στον ορισμό της συνάρτησης.
Αυτή η δυνατότητα είναι διαθέσιμη σε όλα τα μοντέλα με υποστηριζόμενα εργαλεία, συμπεριλαμβανομένων όλων των μοντέλων gpt-4-0613 και gpt-3.5-turbo-0613 και άνω.
Όταν είναι ενεργοποιημένη η δομημένη έξοδος, η έξοδος του μοντέλου θα ταιριάζει με τον ορισμό του παρεχόμενου εργαλείου.
Παράδειγμα αιτήματος:
Παράδειγμα εξόδου:
{
  "table_name": "orders",
  "columns": ["id", "status", "expected_delivery_date", "delivered_at"],
  "conditions": [
    {
      "column": "status",
      "operator": "=",
      "value": "fulfilled"
    },
    {
      "column": "ordered_at",
      "operator": ">=",
      "value": "2023-05-01"
    },
    {
      "column": "ordered_at",
      "operator": "<",
      "value": "2023-06-01"
    },
    {
      "column": "delivered_at",
      "operator": ">",
      "value": {
        "column_name": "expected_delivery_date"
      }
    }
  ],
  "order_by": "asc"
}

Νέες επιλογές για την παράμετρο answer_format

Οι προγραμματιστές μπορούν τώρα να επιλέξουν εάν θα απαιτήσουν μορφοποιημένη έξοδο μέσω της νέας επιλογής json_schema του answer_format.
Αυτή η δυνατότητα είναι χρήσιμη όταν το μοντέλο δεν επικαλείται εργαλεία, αλλά ανταποκρίνεται στον χρήστη με δομημένο τρόπο.
Αυτή η δυνατότητα είναι διαθέσιμη για τα πιο πρόσφατα μοντέλα GPT-4o: gpt-4o-2024-08-06 και gpt-4o-mini-2024-07-18 που κυκλοφόρησαν σήμερα.
Όταν το answer_format έχει οριστεί σε strict:true, η έξοδος του μοντέλου θα ταιριάζει με το παρεχόμενο σχήμα.
Παράδειγμα αιτήματος:
Παράδειγμα εξόδου:
{
  "steps": [
    {
      "explanation": "Subtract 31 from both sides to isolate the term with x.",
      "output": "8x + 31 - 31 = 2 - 31"
    },
    {
      "explanation": "This simplifies to 8x = -29.",
      "output": "8x = -29"
    },
    {
      "explanation": "Divide both sides by 8 to solve for x.",
      "output": "x = -29 / 8"
    }
  ],
  "final_answer": "x = -29 / 8"
}
Οι προγραμματιστές μπορούν να δημιουργήσουν απαντήσεις βήμα προς βήμα χρησιμοποιώντας δομημένη έξοδο για να καθοδηγήσουν την επιθυμητή έξοδο.
Σύμφωνα με το OpenAI, οι προγραμματιστές δεν χρειάζεται να επικυρώνουν ή να ξαναδοκιμάζουν απαντήσεις με λανθασμένη μορφή και η δυνατότητα επιτρέπει απλούστερες προτροπές.

Εγγενής υποστήριξη SDK

Το OpenAI λέει ότι τα Python και Node SDK έχουν ενημερωθεί για να υποστηρίζουν εγγενώς δομημένη έξοδο.
Η παροχή ενός σχήματος ή μορφής απόκρισης σε ένα εργαλείο είναι τόσο εύκολη όσο η παροχή ενός αντικειμένου Pydantic ή Zod που μπορεί να μετατρέψει τύπους δεδομένων σε υποστηριζόμενα σχήματα JSON, να αποσειρώσει αυτόματα τις απαντήσεις JSON σε δομές δεδομένων και να αναλύσει τις απορρίψεις.
Επιπλέον, η εγγενής υποστήριξη δομημένης εξόδου είναι επίσης διαθέσιμη για τη μορφή απάντησης.

Άλλες περιπτώσεις χρήσης

Οι προγραμματιστές χρησιμοποιούν συχνά τα μοντέλα του OpenAI για τη δημιουργία δομημένων δεδομένων για μια ποικιλία περιπτώσεων χρήσης.
Μερικά άλλα παραδείγματα περιλαμβάνουν:
-Δυναμική δημιουργία διεπαφής χρήστη με βάση την πρόθεση του χρήστη
Οι προγραμματιστές μπορούν να χρησιμοποιήσουν δομημένη έξοδο για να δημιουργήσουν εφαρμογές δημιουργίας κώδικα ή διεπαφής χρήστη.
Χρησιμοποιώντας την ίδια μορφή answer_format, μπορούν να δημιουργηθούν διαφορετικές διεπαφές με βάση την είσοδο του χρήστη.
Για παράδειγμα, δημιουργήστε μια "Διεπαφή σύνδεσης Gardener's Login":
Δημιουργείται με τον ακόλουθο κώδικα:
{
  "type": "div",
  "label": "",
  "children": [
    {
      "type": "header",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "Green Thumb Gardening",
          "children": [],
          "attributes": [{ "name": "className", "value": "site-title" }]
        },
        {
          "type": "div",
          "label": "Bringing Life to Your Garden",
          "children": [],
          "attributes": [{ "name": "className", "value": "site-tagline" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "header" }]
    },
    {
      "type": "section",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "",
          "children": [
            {
              "type": "div",
              "label": "About Us",
              "children": [
                {
                  "type": "div",
                  "label": "At Green Thumb Gardening, we specialize in transforming your outdoor spaces into beautiful, thriving gardens. Our team has decades of experience in horticulture and landscape design.",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "about-description" }
                  ]
                }
              ],
              "attributes": [{ "name": "className", "value": "about-section" }]
            }
          ],
          "attributes": [{ "name": "className", "value": "content" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "about-container" }]
    },
    {
      "type": "section",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "",
          "children": [
            {
              "type": "div",
              "label": "Our Services",
              "children": [
                {
                  "type": "div",
                  "label": "Garden Design",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Plant Care & Maintenance",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Seasonal Cleanup",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Custom Landscaping",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                }
              ],
              "attributes": [{ "name": "className", "value": "services-list" }]
            }
          ],
          "attributes": [{ "name": "className", "value": "content" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "services-container" }]
    }
  ],
  "attributes": [{ "name": "className", "value": "landing-page" }]
}
- Διαχωρίστε τις τελικές απαντήσεις από τους υποστηρικτικούς συλλογισμούς ή τα πρόσθετα σχόλια
Η παροχή στο μοντέλο με ένα ξεχωριστό πεδίο αλυσίδας σκέψης μπορεί να βελτιώσει την τελική ποιότητα της απόκρισης.
παρακαλώ:
Δομημένη έξοδος:
{
  "reasoning_steps": [
    "First step is to compare the numbers 9.11 and 9.9.",
    "Both numbers have the same whole number part, which is 9.",
    "To compare the decimal parts, convert them to the same number of decimal places.",
    "9.11 has two decimal places: it is 9.11.",
    "9.9 has one decimal place: it can be rewritten as 9.90.",
    "Now, compare 9.11 and 9.90 by looking at the decimal parts.",
    "Compare 11 with 90.",
    "90 is greater than 11, so 9.90 is greater than 9.11."
  ],
  "answer": "9.9 is bigger than 9.11."
}
- Εξαγωγή δομημένων δεδομένων από μη δομημένα δεδομένα
Για παράδειγμα, δώστε εντολή στο μοντέλο να εξάγει πράγματα όπως εκκρεμότητες, προθεσμίες και αναθέσεις από σημειώσεις συσκέψεων.
παρακαλώ:
Δομημένη έξοδος:
{
  "action_items": [
    {
      "description": "Collaborate on optimizing the path planning algorithm",
      "due_date": "2024-06-30",
      "owner": "Jason Li"
    },
    {
      "description": "Reach out to industry partners for additional datasets",
      "due_date": "2024-06-25",
      "owner": "Aisha Patel"
    },
    {
      "description": "Explore alternative LIDAR sensor configurations and report findings",
      "due_date": "2024-06-27",
      "owner": "Kevin Nguyen"
    },
    {
      "description": "Schedule extended stress tests for the integrated navigation system",
      "due_date": "2024-06-28",
      "owner": "Emily Chen"
    },
    {
      "description": "Retest the system after bug fixes and update the team",
      "due_date": "2024-07-01",
      "owner": "David Park"
    }
  ]
}
Ασφαλής δομημένη έξοδος
Η ασφάλεια είναι κορυφαία προτεραιότητα για το OpenAI – η νέα δυνατότητα δομημένης εξόδου θα συμμορφώνεται με τις υπάρχουσες πολιτικές ασφαλείας του OpenAI και θα εξακολουθεί να επιτρέπει στα μοντέλα να απορρίπτουν μη ασφαλή αιτήματα.
Για να διευκολυνθεί η ανάπτυξη, υπάρχει μια νέα τιμή συμβολοσειράς άρνησης στις αποκρίσεις API που επιτρέπει στους προγραμματιστές να εντοπίζουν μέσω προγραμματισμού εάν ένα μοντέλο δημιουργεί απορρίψεις αντί για έξοδο που ταιριάζει με το σχήμα.
Όταν η απόκριση δεν περιέχει απόρριψη και η απόκριση του μοντέλου δεν διακόπτεται πρόωρα (όπως υποδεικνύεται από το finish_reason), η απόκριση του μοντέλου θα παράγει αξιόπιστα έγκυρο JSON που ταιριάζει με το παρεχόμενο σχήμα.
Βιβλιογραφικές αναφορές: