uutiset

Tarkka ja 0 virhe, syötä hinta ja se menee rikki! OpenAI virallinen ilmoitus API tukee strukturoitua tulostusta, JSON-tarkkuus on 100 %

2024-08-07

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



  Uusi viisausraportti

Toimittaja: Toimitusosasto
[Johdatus uuteen viisauteen] Hyviä uutisia ohjelmoijille! OpenAI:n äskettäin lanseerattu mallisovellusliittymä tukee kaikki strukturoitua tulostusta, JSON Schema -sovitusprosentti on jopa 100 %, ja kustannukset alenevat välittömästi puoleen.
Pyöritätkö edelleen aivojasi miettiäksesi joukko kehotteita ja sinulla on päänsärkyä erilaisten tulosten vuoksi yhden leikkauksen jälkeen?
OpenAI kuuli vihdoin massojen äänen ja tarjosi kehittäjille kauan odotetun No. 1 -ominaisuuden.
OpenAI ilmoitti tänään uusien ominaisuuksien julkaisusta, ja ChatGPT API tukee nyt JSON-strukturoitua lähtöä.
JSON (JavaScript Object Notation) on alan standardi tiedosto- ja tiedonvaihtomuodoille, koska se on sekä ihmisten helppo lukea että koneiden jäsentää.
LLM kuitenkin toimii usein JSON:ia vastaan, tuottaen usein hallusinaatioita, joko luomalla vastauksia, jotka noudattavat vain osittain ohjeita, tai luomalla joukon "taivaallisia kirjoja", joita ei voida täysin jäsentää ollenkaan.
Tämä edellyttää, että kehittäjät käyttävät useita avoimen lähdekoodin työkaluja, kokeilevat erilaisia ​​kehotteita tai toistavat pyyntöjä halutun tulosteen luomiseksi, mikä on aikaa vievää ja työvoimavaltaista.
Tänään julkaistu strukturoidun tulosteen ominaisuus ratkaisee yllä olevat vaikeat ongelmat ja varmistaa, että mallin luoma tulos vastaa JSON:ssa määritettyä skeemaa.
Strukturoitu tulostustoiminto on aina ollut kehittäjien pyytämä ominaisuus numero yksi. Ultraman totesi myös twiitissään, että tämä versio julkaistiin vastauksena käyttäjien pyyntöihin.
OpenAI:n julkaisemat uudet ominaisuudet ovat todellakin osuneet monien kehittäjien sydämiin, ja he kaikki ovat yhtä mieltä siitä, että "Tämä on iso juttu".
Monet ihmiset jättivät kehuja viestejä, joissa sanottiin "Erinomainen!"
Jotkut ovat iloisia ja jotkut surullisia Tämä OpenAI:n päivitys on saanut ihmiset pelkäämään, että se nielee startup-yrityksiä.
Tavallisempien käyttäjien kysymys on kuitenkin se, milloin GPT-5 julkaistaan. Mitä tulee JSON-skeemaan, "mikä se on?"
Loppujen lopuksi, ilman uutisia GPT-5:stä, OpenAI:n DevDay voi tänä syksynä olla paljon hiljaisempi kuin viime vuonna.

Varmista helposti skeeman johdonmukaisuus

Strukturoidulla lähdöllä sinun tarvitsee vain määrittää JSON-skeema, jolloin tekoäly ei enää ole "tahtoinen" ja tottelevaisesti tulostaa tietoja ohjeiden mukaan.
Lisäksi uusi toiminto ei ainoastaan ​​tee tekoälyä tottelevaisemmaksi, vaan myös parantaa huomattavasti tulosteen sisällön luotettavuutta.
Monimutkaisen JSON-skeeman seuranta-arvioinnissa uusi malli gpt-4o-2024-08-06 strukturoidulla lähdöllä sai täydellisen 100 %:n arvosanan. Vertailun vuoksi gpt-4-0613 sai alle 40 %.
Itse asiassa OpenAI käynnisti JSON Schema -toiminnon DevDayssa viime vuonna.
Nyt OpenAI on laajentanut tätä toimintoa API:ssa varmistaen, että mallin luoma tulos vastaa täsmälleen kehittäjän toimittamaa JSON-skeemaa.
Strukturoidun datan luominen strukturoimattomasta syötteestä on yksi tekoälyn ydinkäyttötapauksista nykypäivän sovelluksissa.
Kehittäjät käyttävät OpenAI-sovellusliittymää rakentaakseen tehokkaita avustajia, jotka voivat hankkia tietoja ja vastata kysymyksiin toimintokutsujen avulla, poimia jäsenneltyä dataa tietojen syöttämistä varten ja rakentaa monivaiheisia agenttityönkulkuja, jolloin LLM voi ryhtyä toimiin.

Tekniset periaatteet

OpenAI käyttää kaksitahoista lähestymistapaa parantaakseen mallin lähdön ja JSON-skeeman välistä yhteensopivuutta.
Vaikka mallin suorituskyky on parantunut merkittävästi ja saavuttanut 93 prosentin tarkkuuden vertailutesteissä, luontainen epävarmuus säilyy.
Varmistaakseen kehittäjien rakentamien sovellusten vakauden OpenAI tarjoaa korkeamman tarkkuuden menetelmän rajoittaa mallin tuottoa ja saavuttaa siten 100 % luotettavuuden.

Rajoitettu dekoodaus

OpenAI käyttää rajoitettua näytteenottoa tai rajoitettua dekoodausta. Oletusarvoisesti malli luo ulostulot täysin rajoittamattomina ja mahdollisesti valitsee minkä tahansa sanaston sanaston seuraavaksi ulostuloksi.
Tämä joustavuus voi johtaa virheisiin, kuten virheellisten merkkien satunnaiseen lisäämiseen kelvollista JSON:ia luotaessa.
Tällaisten virheiden välttämiseksi OpenAI käyttää dynaamisten rajoitusten dekoodausmenetelmää varmistaakseen, että luotu lähtötunnus on aina toimitetun skeeman mukainen.
Tämän saavuttamiseksi OpenAI muuntaa toimitetun JSON-skeeman yhteydettömäksi kieliopiksi (CFG).
OpenAI laskee jokaiselle JSON-skeemalle syntaksin, joka edustaa skeemaa ja käyttää esikäsiteltyjä komponentteja tehokkaasti näytteenoton aikana.
Tämä lähestymistapa ei ainoastaan ​​tee generoidusta lähdöstä tarkempaa, vaan myös vähentää tarpeettomia viiveitä. Ensimmäisellä uuden skeeman pyynnöllä voi olla lisäkäsittelyaikaa, mutta seuraaviin pyyntöihin vastataan nopeasti välimuistimekanismin kautta.

Vaihtoehdot

CFG-menetelmän lisäksi muissa menetelmissä käytetään yleensä ääritilakoneita (FSM) tai säännöllisiä lausekkeita rajoitteiden dekoodaukseen.
Näillä menetelmillä on kuitenkin rajalliset mahdollisuudet päivittää dynaamisesti kelvollisia tunnisteita. Erityisesti monimutkaisissa sisäkkäisissä tai rekursiivisissa tietorakenteissa FSM:ää on usein vaikea käsitellä.
OpenAI:n CFG-menetelmä toimii hyvin monimutkaisten skeemojen ilmaisemisessa. Esimerkiksi rekursiivisia skeemoja tukeva JSON-skeema on toteutettu OpenAI API:ssa, mutta sitä ei voida ilmaista FSM-menetelmien avulla.

Säästä puolet syöttökustannuksista

Strukturoitu lähtö on saatavilla kaikille malleille, jotka tukevat toimintokutsuja, mukaan lukien uusimmat GPT-4o- ja GPT-4o-mini-mallit sekä hienosäädetyt mallit.
Tämä ominaisuus on saatavilla Chat Completions API:ssa, Assistant API:ssa ja Batch APIssa, ja se on yhteensopiva visuaalisen syötteen kanssa.
Verrattuna gpt-4o-2024-05-13-versioon, gpt-4o-2024-08-06-versio on myös kustannustehokkaampi. , mikä säästää 33 % kustannuksista tulostepäässä (10,00 dollaria / 1 miljoona merkkiä).

Strukturoidun tuotannon käyttäminen

On olemassa kaksi muotoa, joita voidaan käyttää strukturoidun tulosteen tuomiseen API:ssa:

toimintokutsu

Strukturoitu tuloste työkalujen avulla voidaan saavuttaa asettamalla funktion määrittelyssä range: true.
Tämä ominaisuus on saatavilla kaikissa malleissa, joissa on tuetut työkalut, mukaan lukien kaikki mallit gpt-4-0613 ja gpt-3.5-turbo-0613 ja uudemmat.
Kun strukturoitu tulos on käytössä, mallin tulos vastaa annettua työkalun määritelmää.
Esimerkkipyyntö:
Esimerkkituloste:
{
  "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"
}

Uudet asetukset response_format-parametrille

Kehittäjät voivat nyt valita, vaaditaanko muotoiltu tulos json_schema-asetuksen avulla.
Tämä ominaisuus on hyödyllinen, kun malli ei kutsu työkaluja, vaan vastaa käyttäjälle jäsennellyllä tavalla.
Tämä ominaisuus on saatavilla uusimmille GPT-4o-malleille: gpt-4o-2024-08-06 ja gpt-4o-mini-2024-07-18, julkaistu tänään.
Kun vastausmuoto-asetuksena on strict:true, mallin tulos vastaa annettua skeemaa.
Esimerkkipyyntö:
Esimerkkituloste:
{
  "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"
}
Kehittäjät voivat luoda vastauksia vaihe vaiheelta käyttämällä strukturoitua tulostetta ohjaamaan haluttua tulosta.
OpenAI:n mukaan kehittäjien ei tarvitse vahvistaa tai yrittää uudelleen väärin muotoiltuja vastauksia, ja ominaisuus mahdollistaa yksinkertaisemmat kehotteet.

Natiivi SDK-tuki

OpenAI sanoo, että heidän Python- ja Node SDK:t on päivitetty tukemaan natiivisti strukturoitua tulostusta.
Kaavan tai vastausmuodon tarjoaminen työkalulle on yhtä helppoa kuin Pydantic- tai Zod-objektin tarjoaminen OpenAI:n SDK voi muuntaa tietotyypit tuetuiksi JSON-skeemoiksi, sarjoittaa JSON-vastaukset automaattisesti kirjoitetuiksi tietorakenteiksi ja jäsentää hylkäykset.
Lisäksi natiivi strukturoidun tulosteen tuki on saatavilla myös vastaus_formaatille.

Muut käyttötapaukset

Kehittäjät käyttävät usein OpenAI:n malleja luodakseen strukturoitua dataa erilaisiin käyttötapauksiin.
Joitakin muita esimerkkejä ovat:
- Luo dynaamisesti käyttöliittymä käyttäjän tarkoituksen perusteella
Kehittäjät voivat käyttää strukturoitua lähtöä koodin tai käyttöliittymän luomiseen tarkoitettujen sovellusten luomiseen.
Käyttämällä samaa vastausmuotoa eri käyttöliittymät voidaan luoda käyttäjän syötteen perusteella.
Luo esimerkiksi "puutarhurin kirjautumisliittymä":
Se luodaan seuraavalla koodilla:
{
  "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" }]
}
- Erottele lopulliset vastaukset perusteluista tai lisäkommenteista
Mallin tarjoaminen erillisellä ajatusketjukentällä voi parantaa vastauksen lopullista laatua.
kysyä:
Strukturoitu tulos:
{
  "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."
}
- Pura jäsenneltyä dataa jäsentämättömästä tiedosta
Voit esimerkiksi ohjeistaa mallia poimimaan asioita, kuten tehtävät, määräajat ja tehtävät kokousmuistiinpanoista.
kysyä:
Strukturoitu tulos:
{
  "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"
    }
  ]
}
Suojattu strukturoitu tulos
Suojaus on OpenAI:n etusijalla – uusi strukturoitu tulostusominaisuus noudattaa OpenAI:n olemassa olevia suojauskäytäntöjä ja sallii silti mallien hylätä vaaralliset pyynnöt.
Kehityksen helpottamiseksi API-vastauksissa on uusi kieltäytymismerkkijonoarvo, jonka avulla kehittäjät voivat havaita ohjelmallisesti, luoko malli hylkäyksiä skeemaa vastaavan tulosteen sijaan.
Kun vastaus ei sisällä hylkäämistä eikä mallin vastausta keskeytetä ennenaikaisesti (kuten finish_reason osoittaa), mallin vastaus tuottaa luotettavasti kelvollisen JSON-tiedoston, joka vastaa annettua skeemaa.
Viitteet: