Nintroduċu Outputs strutturati fl-API
Qed nintroduċu Outputs strutturati fl-API—l-outputs tal-mudell issa jaderixxu b’mod affidabbli ma’ JSON Schemas ipprovduti mill-iżviluppaturi.

Is-sena l-oħra f’DevDay, introduċejna l-modalità JSON—pedament utli għall-iżviluppaturi li qed ifittxu li jibnu applikazzjonijiet affidabbli bil-mudelli tagħna. Filwaqt li l-modalità JSON ittejjeb l-affidabbiltà tal-mudell biex jiġġenera outputs JSON validi, ma tiggarantixxix li t-tweġiba tal-mudell tikkonforma ma’ skema partikolari. Illum qed nintroduċu Outputs strutturati fl-API, funzjoni ġdida mfassla biex tiżgura li outputs iġġenerati mill-mudell jaqblu eżattament ma’ JSON Schemas ipprovduti mill-iżviluppaturi.
Il-ġenerazzjoni ta’ dejta strutturata minn inputs mhux strutturati hija waħda mill-każijiet ta’ użu ewlenin tal-IA fl-applikazzjonijiet tal-lum. L-iżviluppaturi jużaw l-API ta’ OpenAI biex jibnu assistants b’saħħithom li għandhom il-kapaċità li jġibu dejta u jwieġbu mistoqsijiet permezz ta’ sejħa għall-funzjoni(jinfetaħ f’tieqa ġdida), jiġbdu dejta strutturata għad-dħul tad-dejta, u jibnu workflows aġentiċi b’diversi passi li jippermettu lil LLMs jieħdu azzjonijiet. L-iżviluppaturi ilhom jaħdmu madwar il-limitazzjonijiet tal-LLMs f’dan il-qasam permezz ta’ għodod open source, prompting, u billi jerġgħu jippruvaw it-talbiet repetutament biex jiżguraw li l-outputs tal-mudell jaqblu mal-formati meħtieġa biex jinteroperaw mas-sistemi tagħhom. Outputs strutturati jsolvu din il-problema billi jillimitaw il-mudelli ta’ OpenAI biex jaqblu mal-iskemi pprovduti mill-iżviluppaturi u billi jħarrġu l-mudelli tagħna biex jifhmu aħjar skemi kumplessi.
Fl-evals tagħna ta’ segwitu ta’ skemi JSON kumplessi, il-mudell il-ġdid tagħna gpt-4o-2024-08-06 b’Outputs strutturati jikseb 100% perfett. B’paragun, gpt-4-0613 jikseb inqas minn 40%.
Bl-Outputs strutturati, gpt-4o-2024-08-06 jikseb affidabbiltà ta’ 100% fl-evals tagħna, billi jaqbel perfettament mal-iskemi tal-output.
Qed nintroduċu Outputs strutturati f’żewġ forom fl-API:
1. Sejħa għall-funzjoni: Outputs strutturati permezz ta’ tools huma disponibbli billi tissettja strict: true fid-definizzjoni tal-funzjoni tiegħek. Din il-funzjoni taħdem mal-mudelli kollha li jappoġġjaw tools, inklużi l-mudelli kollha gpt-4-0613 u gpt-3.5-turbo-0613 u ta’ wara. Meta Outputs strutturati jkunu attivati, l-outputs tal-mudell jaqblu mad-definizzjoni tal-għodda pprovduta.
2. Għażla ġdida għall-parametru response_format: l-iżviluppaturi issa jistgħu jipprovdu JSON Schema permezz ta’ json_schema, għażla ġdida għall-parametru response_format. Dan huwa utli meta l-mudell ma jkunx qed isejjaħ għodda, iżda minflok ikun qed iwieġeb lill-utent b’mod strutturat. Din il-funzjoni taħdem mal-aktar mudelli ġodda GPT‑4o tagħna: gpt-4o-2024-08-06, rilaxxat illum, u gpt-4o-mini-2024-07-18. Meta response_format jiġi pprovdut b’strict: true, l-outputs tal-mudell jaqblu mal-iskemi pprovduta.
Is-sikurezza hija prijorità ewlenija għal OpenAI—il-funzjonalità l-ġdida ta’ Outputs strutturati se taderixxi mal-politiki eżistenti tagħna tas-sikurezza u xorta tippermetti lill-mudell jirrifjuta talba mhux sikura. Biex l-iżvilupp isir aktar sempliċi, hemm valur string ġdid refusal fit-tweġibiet tal-API li jippermetti lill-iżviluppaturi jidentifikaw b’mod programmatiku jekk il-mudell iġġenerax rifjut minflok output li jaqbel mal-iskema. Meta t-tweġiba ma tinkludix rifjut u t-tweġiba tal-mudell ma tkunx ġiet interrotta qabel iż-żmien (kif indikat minn finish_reason), allura t-tweġiba tal-mudell tipproduċi b’mod affidabbli JSON validu li jaqbel mal-iskema pprovduta.
L-SDKs tagħna ta’ Python u Node ġew aġġornati b’appoġġ nattiv għal Outputs strutturati. Li tipprovdi skema għal tools jew bħala format ta’ tweġiba huwa faċli daqs li tipprovdi oġġett Pydantic jew Zod, u l-SDKs tagħna jieħdu ħsieb jikkonvertu t-tip ta’ dejta f’JSON schema appoġġjat, jiddeserializzaw it-tweġiba JSON fl-istruttura ta’ dejta ttajpjata awtomatikament, u janalizzaw ir-rifjuti jekk jinqalgħu.
L-eżempji li ġejjin juru appoġġ nattiv għal Outputs strutturati b’sejħa għall-funzjoni.
Appoġġ nattiv għal Outputs strutturati huwa disponibbli wkoll għal response_format.
L-iżviluppaturi jużaw ta’ spiss il-mudelli ta’ OpenAI biex jiġġeneraw dejta strutturata għal diversi każijiet ta’ użu. Xi eżempji oħra jinkludu:
Pereżempju, l-iżviluppaturi jistgħu jużaw Outputs strutturati biex joħolqu applikazzjonijiet li jiġġeneraw kodiċi jew UI. L-eżempji kollha li ġejjin jużaw l-istess response_format, u jistgħu jintużaw biex jiġġeneraw UIs differenti skont l-input tal-utent.
Int assistent tal-interfaċċa tal-utent. Xogħlok hu li tgħin lill-utenti jivviżwalizzaw l-ideat tagħhom għas-sit web u l-app.Jista’ jkun utli li tagħti lill-mudell field separat għall-chain of thought biex ittejjeb il-kwalità finali tat-tweġiba.
Pereżempju, tagħti istruzzjoni lill-mudell biex jiġbed affarijiet bħal kompiti, dati ta’ skadenza u assenjazzjonijiet min-noti tal-laqgħa.
Adottajna approċċ f’żewġ partijiet biex intejbu l-affidabbiltà tal-outputs tal-mudell li jaqblu ma’ JSON Schema. L-ewwel, ħarriġna l-aktar mudell ġdid tagħna gpt-4o-2024-08-06 biex jifhem skemi kumplessi u kif l-aħjar jipproduċi outputs li jaqblu magħhom. Madankollu, l-imġiba tal-mudell hija intrinsikament mhux deterministika—minkejja t-titjib fil-prestazzjoni ta’ dan il-mudell (93% fil-benchmark tagħna), xorta ma laħaqx l-affidabbiltà li l-iżviluppaturi għandhom bżonn biex jibnu applikazzjonijiet robusti. Għalhekk ħadna wkoll approċċ deterministiku, ibbażat fuq l-inġinerija, biex nillimitaw l-outputs tal-mudell u niksbu affidabbiltà ta’ 100%.
L-approċċ tagħna huwa bbażat fuq teknika magħrufa bħala constrained sampling jew constrained decoding. B’mod awtomatiku, meta l-mudelli jiġu kkampjunati biex jipproduċu outputs, ikunu kompletament mingħajr restrizzjonijiet u jistgħu jagħżlu kwalunkwe token mill-vokabularju bħala l-output li jmiss. Din il-flessibbiltà hija li tippermetti lill-mudelli jagħmlu żbalji; pereżempju, ġeneralment ikunu liberi jikkampjunaw token ta’ parentesi mgħawġa fi kwalunkwe ħin, anke meta dan ma jipproduċix JSON validu. Sabiex inġiegħlu outputs validi, nillimitaw il-mudelli tagħna għal tokens biss li jkunu validi skont l-iskema pprovduta, minflok it-tokens kollha disponibbli.
Jista’ jkun diffiċli li din ir-restrizzjoni tiġi implimentata fil-prattika, peress li t-tokens validi jvarjaw tul l-output tal-mudell. Ngħidu li għandna l-iskema li ġejja:
It-tokens li huma validi fil-bidu tal-output jinkludu affarijiet bħal {, {“, {, eċċ. Madankollu, ladarba l-mudell ikun diġà kkampjona {“val, allura { ma jibqax token validu. Għalhekk għandna bżonn nimplimentaw dekodifikazzjoni ristretta dinamika, u niddeterminaw liema tokens huma validi wara li jiġi ġġenerat kull token, aktar milli minn qabel fil-bidu tat-tweġiba.
Biex nagħmlu dan, nikkonvertu l-JSON Schema pprovduta fi grammatika mingħajr kuntest (CFG). Grammatika hija sett ta’ regoli li jiddefinixxi lingwa, u grammatika mingħajr kuntest hija grammatika li tikkonforma ma’ regoli speċifiċi. Tista’ taħseb f’JSON u JSON Schema bħala lingwi partikolari b’regoli biex jiddefinixxu x’inhu validu fil-lingwa. Eżatt kif bl-Ingliż ma tkunx valida sentenza mingħajr verb, f’JSON ma tkunx valida virgola żejda fl-aħħar.
Għalhekk, għal kull JSON Schema, nikkalkolaw grammatika li tirrappreżenta dik l-iskema, u nipproċessaw minn qabel il-komponenti tagħha biex inkunu nistgħu naċċessawhom faċilment waqt il-kampjunar tal-mudell. Huwa għalhekk li l-ewwel talba bi skema ġdida ġġarrab penali ta’ latenza—irridu nipproċessaw minn qabel l-iskema biex niġġeneraw dan l-artifact li nistgħu nużaw b’mod effiċjenti waqt il-kampjunar.
Waqt il-kampjunar, wara kull token, il-magna tagħna tal-inferenza tiddetermina liema tokens huma validi biex jiġu prodotti wara, abbażi tat-tokens iġġenerati qabel u r-regoli fil-grammatika li jindikaw liema tokens huma validi wara. Imbagħad nużaw din il-lista ta’ tokens biex nagħmlu mask fuq il-pass li jmiss tal-kampjunar, li effettivament inaqqas il-probabbiltà ta’ tokens invalidi għal 0. Minħabba li pproċessajna minn qabel l-iskema, nistgħu nużaw struttura tad-dejta fil-cache biex nagħmlu dan b’mod effiċjenti, b’overhead minimu ta’ latenza.
Approċċi alternattivi għal din il-problema spiss jużaw finite state machines (FSMs) jew regexes (ġeneralment implimentati b’FSMs) għal dekodifikazzjoni ristretta. Dawn jaħdmu b’mod simili fis-sens li jaġġornaw b’mod dinamiku liema tokens huma validi wara li jiġi prodott kull token, iżda għandhom xi differenzi ewlenin mill-approċċ CFG. B’mod notevoli, CFGs jistgħu jesprimu klassi usa’ ta’ lingwi minn FSMs. Fil-prattika, dan ma jimpurtax għal skemi sempliċi ħafna bħall-iskema value murija hawn fuq. Madankollu, insibu li d-differenza hija sinifikanti għal skemi aktar kumplessi li jinvolvu strutturi ta’ dejta nidifikati jew rikursivi. Bħala eżempju, FSMs ġeneralment ma jistgħux jesprimu tipi rikursivi, li jfisser li approċċi bbażati fuq FSM jistgħu jsibuha diffiċli jqabblu parentesi f’JSON nidifikat ħafna. Dan li ġej huwa kampjun ta’ skema rikursiva li hija appoġġjata fuq l-API ta’ OpenAI b’Outputs strutturati iżda ma tkunx possibbli li tiġi espressa b’FSM.
Innota li kull element tal-UI jista’ jkollu tfal arbitrarji li jirreferu għall-iskema ewlenija b’mod rikursiv. Din il-flessibbiltà hija xi ħaġa li tippermetti l-approċċ CFG.
Hemm ftit limitazzjonijiet li għandek iżżomm f’moħħok meta tuża Outputs strutturati:
- Outputs strutturati jippermettu biss sottogrupp ta’ JSON Schema, deskritt fid-dettall fid-dokumentazzjoni tagħna(jinfetaħ f’tieqa ġdida). Dan jgħinna niżguraw l-aħjar prestazzjoni possibbli.
- L-ewwel tweġiba tal-API bi skema ġdida ġġarrab aktar latenza, iżda t-tweġibiet ta’ wara jkunu veloċi mingħajr penali ta’ latenza. Dan għaliex matul l-ewwel talba, nipproċessaw l-iskema kif indikat hawn fuq u mbagħad inpoġġu dawn l-artifacts fil-cache għal użu mill-ġdid malajr aktar tard. Skemi tipiċi jieħdu inqas minn 10 sekondi biex jiġu pproċessati fl-ewwel talba, iżda skemi aktar kumplessi jistgħu jieħdu sa minuta.
- Il-mudell jista’ jonqos milli jsegwi l-iskema jekk jagħżel li jirrifjuta talba mhux sikura. Jekk jagħżel li jirrifjuta, il-messaġġ ritornat ikollu l-valur boolean
refusalissettjat għal true biex jindika dan. - Il-mudell jista’ jonqos milli jsegwi l-iskema jekk il-ġenerazzjoni tilħaq
max_tokensjew kundizzjoni oħra ta’ waqfien qabel ma tispiċċa. - Outputs strutturati ma jipprevjenux kull tip ta’ żball tal-mudell. Pereżempju, il-mudell xorta jista’ jagħmel żbalji fil-valuri tal-oġġett JSON (eż., jagħmel pass ħażin f’ekwazzjoni matematika). Jekk l-iżviluppaturi jsibu żbalji, nirrakkomandaw li jipprovdu eżempji fl-istruzzjonijiet tas-sistema jew jaqsmu l-kompiti f’subkompiti aktar sempliċi.
- Outputs strutturati mhumiex kompatibbli ma’ sejħiet paralleli tal-funzjonijiet. Meta tiġi ġġenerata sejħa parallela tal-funzjoni, din tista’ ma taqbilx mal-iskemi pprovduti. Issettja
parallel_tool_calls: falsebiex tiddiżattiva sejħa parallela għall-funzjoni. - JSON Schemas ipprovduti ma’ Outputs strutturati mhumiex eliġibbli għal l-ebda żamma tad-dejta(jinfetaħ f’tieqa ġdida) (ZDR).
Outputs strutturati huma disponibbli b’mod ġenerali llum fl-API.
Outputs strutturati b’sejħa għall-funzjoni huma disponibbli fuq il-mudelli kollha li jappoġġjaw sejħa għall-funzjoni fl-API. Dan jinkludi l-aktar mudelli ġodda tagħna (gpt-4o, gpt-4o-mini), il-mudelli kollha minn gpt-4-0613 u gpt-3.5-turbo-0613 ’il quddiem, u kull mudell irfinat li jappoġġja sejħa għall-funzjoni. Din il-funzjonalità hija disponibbli fuq l-API tat-tlestija taċ-chats, l-Assistants API, u l-Batch API. Outputs strutturati b’sejħa għall-funzjoni huma kompatibbli wkoll ma’ inputs tal-viżjoni.
Outputs strutturati b’formati ta’ tweġiba huma disponibbli fuq gpt-4o-mini u gpt-4o-2024-08-06 u fuq kull fine tune bbażat fuq dawn il-mudelli. Din il-funzjonalità hija disponibbli fuq l-API tat-tlestija taċ-chats, l-Assistants API, u l-Batch API. Outputs strutturati b’formati ta’ tweġiba huma kompatibbli wkoll ma’ inputs tal-viżjoni.
Billi jaqilbu għall-gpt-4o-2024-08-06 il-ġdid, l-iżviluppaturi jiffrankaw 50% fuq l-inputs ($2.50/1M input tokens) u 33% fuq l-outputs ($10.00/1M output tokens) meta mqabbel ma’ gpt-4o-2024-05-13.
Biex tibda tuża Outputs strutturati, agħti ħarsa lejn id-dokumentazzjoni(jinfetaħ f’tieqa ġdida) tagħna.
Outputs strutturati jieħdu ispirazzjoni minn xogħol eċċellenti mill-komunità open source: jiġifieri, il-libreriji outlines(jinfetaħ f’tieqa ġdida), jsonformer(jinfetaħ f’tieqa ġdida), instructor(jinfetaħ f’tieqa ġdida), guidance(jinfetaħ f’tieqa ġdida), u lark(jinfetaħ f’tieqa ġdida).
Awtur
Kontributuri ewlenin
Chris Colby, Melody Guan, Michelle Pokrass, Ted Sanders, Brian Zhang
Rikonoxximenti
John Allard, Filipe de Avila Belbute Peres, Ilan Bigio, Owen Campbell-Moore, Chen Ding, Atty Eleti, Elie Georges, Katia Gil Guzman, Jeff Harris, Johannes Heidecke, Beth Hoover, Romain Huet, Tomer Kaftan, Jillian Khoo, Karolis Kosas, Ryan Liu, Kevin Lu, Lindsay McCallum, Rohan Nuttall, Joe Palermo, Leher Pathak, Ishaan Singal, Felipe Petroski Such, Freddie Sulit, David Weedon