Preskočite na glavno vsebino
OpenAI

29. januar 2026

Tehnologija

Notranjost OpenAI-jevega internega podatkovnega agenta

Avtorji: Bonnie Xu, Aravind Suresh in Emma Tang

Nalaganje …

Podatki poganjajo učenje sistemov, razvoj produktov in sprejemanje odločitev v podjetjih. Vendar je pridobivanje odgovorov hitro, pravilno in v ustreznem kontekstu pogosto bistveno težje, kot bi moralo biti. Da bi to poenostavili ob rasti OpenAI-ja, smo zgradili lasten namenski interni podatkovni agent UI, ki raziskuje in sklepa nad lastno platformo.

Naš agent je orodje po meri, namenjeno izključno notranji uporabi (ne gre za zunanjo ponudbo), zgrajeno posebej glede na podatke OpenAI-ja, dovoljenja in delovne tokove. Prikazujemo, kako smo ga zgradili in uporabljamo, da bi izpostavili konkretne in dejansko vplivne načine, kako lahko UI podpira vsakodnevno delo v naših ekipah. Orodja OpenAI, ki smo jih uporabili za izgradnjo in delovanje (Codex, naš osrednji model GPT‑5, Evals API(odpre se v novem oknu) in Embeddings API(odpre se v novem oknu)), so ista orodja, ki jih omogočamo razvijalcem povsod.

Naš podatkovni agent zaposlenim omogoča, da od vprašanja do vpogleda pridejo v nekaj minutah, ne v dneh. S tem se zniža prag za pridobivanje podatkov in izvajanje niansiranih analiz v vseh funkcijah, ne le v podatkovni ekipi. Danes se ekipe na področjih Engineering, Data Science, Go-To-Market, Finance in Research pri OpenAI-ju zanašajo na agenta pri odgovarjanju na podatkovna vprašanja z velikim vplivom. Na primer, pomaga lahko pri ocenjevanju lansiranj in razumevanju poslovnega zdravja, vse prek intuitivne oblike naravnega jezika. Agent združuje znanje na ravni tabel, ki ga poganja Codex, s produktnim in organizacijskim kontekstom. Njegov sistem spomina, ki se nenehno uči, pomeni, da se izboljšuje z vsakim pogovornim korakom.

Posnetek zaslona uporabnika, ki sprašuje po številu tedensko aktivnih uporabnikov (WAU) ChatGPT-ja 6. oktober 2025 v primerjavi z DevDay 2023. Agent poroča o približno 800 milijonih tedensko aktivnih uporabnikov (WAU) za leto 2025 in približno 100 milijonih za leto 2023, z opombami, ki prikazujejo spremembo +700 milijonov in povečanje približno ~8×, temu pa sledi pojasnjevalni kontekst.

V tem prispevku bomo razčlenili, zakaj smo potrebovali namenski podatkovni agent UI, kaj dela njegov s kodo podprt podatkovni kontekst in samoučenje tako uporabna ter katere lekcije smo se pri tem naučili.

Zakaj smo potrebovali orodje po meri

OpenAI-jeva podatkovna platforma služi več kot 3,5 tisoč internim uporabnikom , ki delajo na področjih inženiringa, produktov in raziskav, ter zajema več kot 600 petabajtov podatkov v 70 tisoč naborih podatkov. Pri takšnem obsegu je že samo iskanje prave tabele lahko eden najbolj časovno potratnih delov analize.

Kot je povedal eden od notranjih uporabnikov:

»Imamo veliko tabel, ki so si precej podobne, in porabim ogromno časa, da ugotovim, v čem se razlikujejo in katero uporabiti. Nekatere vključujejo odjavljene uporabnike, druge ne. Nekatere imajo prekrivajoča se polja; težko je razbrati, kaj je kaj.«

Tudi ko so izbrane prave tabele, je lahko ustvarjanje pravilnih rezultatov zahtevno. Analitiki morajo sklepati o tabelaričnih podatkih in razmerjih med tabelami, da zagotovijo pravilno uporabo transformacij in filtrov. Pogosti načini odpovedi, kot so povezave mnogo-proti-mnogo, napake pri potiskanju filtrov in neobravnavane ničelne vrednosti, lahko neopaženo izničijo veljavnost rezultatov. Pri obsegu OpenAI-ja analitiki ne bi smeli porabljati časa za razhroščevanje semantike SQL ali zmogljivosti poizvedb; njihov poudarek mora biti na opredeljevanju metrik, preverjanju predpostavk in sprejemanju odločitev na podlagi podatkov.

Posnetek zaslona kode SQL, ki opredeljuje dva skupna tabelna izraza, order_enriched in monthly_segment, ki združujeta podatke o geografiji strank, izpeljeta polja za mesec naročila ter izračunata mesečne agregate, kot so število naročil, bruto prihodek, prihodek z davkom in povprečno število dni od odpreme do prejema.

Ta SQL-stavek je dolg več kot 180 vrstic. Težko je presoditi, ali povezujemo prave tabele in poizvedujemo po pravih stolpcih.

Kako deluje

Poglejmo, kaj je naš agent, kako oblikuje kontekst in kako skrbi za samoučenje.

Našega agenta poganja GPT‑5.2 in je zasnovan za sklepanje na podatkovni platformi OpenAI. Na voljo je povsod, kjer zaposleni že delajo: kot agent v Slacku, prek spletnega vmesnika, znotraj IDE-jev, v Codex CLI prek MCP(odpre se v novem oknu) in neposredno v OpenAI-jevi interni aplikaciji ChatGPT prek MCP priključka(odpre se v novem oknu).

Diagram z naslovom »Kako deluje podatkovni agent.« Vstopne točke – Agent-UI, Local Agent-MCP, Remote Agent-MCP in Slack Agent – se stekajo v Agent-API. API se povezuje z internim podatkovnim znanjem in kontekstom podjetja, se sinhronizira s podatkovnim skladiščem in viri platforme ter prek Agent-MCP izmenjuje zahteve z modelom GPT-5.2.

Uporabniki lahko postavljajo kompleksna, odprta vprašanja, ki bi sicer zahtevala več krogov ročnega raziskovanja. Vzemimo ta primer poziva, ki uporablja testni nabor podatkov: »Za vožnje taksijev v NYC, kateri pari poštnih številk prevzem–odložitev so najbolj nezanesljivi, z največjo razliko med tipičnimi in najslabšimi časi potovanja, in kdaj se ta variabilnost pojavi?«

Agent analizo izvede od začetka do konca, od razumevanja vprašanja do raziskovanja podatkov, izvajanja poizvedb in sinteze ugotovitev.

Posnetek zaslona uporabnika, ki sprašuje, kateri pari poštnih številk prevzem → odložitev za taksije v New York City (NYC) so najbolj »nezanesljivi.« Agent pojasni, da uporablja približno 21.000 voženj iz samples.nyctaxi.trips, opredeli tipični primer (50. percentil) in najslabši primer (95. percentil), uporabi filtre ter opiše, kako ugotovi, kdaj se je pri posameznem paru poštnih številk zgodila najdaljša vožnja.

Odgovor agenta na vprašanje.

Ena ključnih prednosti agenta je način, kako razrešuje probleme. Namesto sledenja vnaprej določenemu skriptu agent ocenjuje lasten napredek. Če je vmesni rezultat videti napačen (npr. če ima nič vrstic zaradi nepravilne povezave ali filtra), agent razišče vzrok, prilagodi pristop in poskusi znova. V celotnem procesu ohranja poln kontekst in prenaša spoznanja med posameznimi koraki. Ta zaprtozančni, samoučeči se proces prenese iteracijo z uporabnika na agenta samega, kar omogoča hitrejše rezultate in dosledno višjo kakovost analiz kot pri ročnih delovnih tokovih.

Posnetek zaslona delovnega toka naloge, ki prikazuje večkoračni načrt agenta umetne inteligence za analizo trajanja taksi voženj v New Yorku. Vključuje cilje, notranja iskanja, pregled sheme, izseke kode in sklepanje o izračunu razponov 50. in 95. percentila, prepoznavanju nezanesljivih parov poštnih številk ter načrtovanju poizvedb SQL.

Sklepanje agenta pri prepoznavanju najbolj nezanesljivih parov prevzem-odložitev za taksi vožnje v NYC.

Agent pokriva celoten analitični potek dela: od odkrivanja podatkov in izvajanja SQL do objave beležnic in poročil. Razume interno znanje podjetja, lahko izvaja spletno iskanje zunanjih informacij ter se sčasoma izboljšuje z uporabo in spominom.

Kontekst je vse

Visokokakovostni odgovori so odvisni od bogatega, natančnega konteksta. Brez ustreznega konteksta lahko tudi zmogljivi modeli ustvarijo napačne rezultate, na primer bistveno napačno ocenijo število uporabnikov ali napačno razumejo interno terminologijo.

Posnetek zaslona uporabnika, ki sprašuje: »Kolikšno je bilo število dnevno aktivnih uporabnikov (DAU) ChatGPT Image Gen, prijavljenih v sistem, v zadnjih 30 dneh?«, z vrstico stanja spodaj, ki prikazuje, da agent »dela že 22 m 41 s«, kar kaže na dolgotrajno poizvedbo v teku.

Agent brez spomina, ki ne zmore učinkovito poizvedovati.

Posnetek zaslona, ki prikazuje uporabnika, ki sprašuje: »What was ChatGPT Image Gen logged-in DAU for the last 30 days?« Pod sporočilom je vrstica stanja z besedilom »Worked for 1m 22s«, ki kaže, da poizvedba še teče in da njena izvedba traja dlje časa.

Pomnilnik agenta omogoča hitrejše poizvedbe, saj locira pravilne tabele.

Da bi se izognili tem načinom odpovedi, je agent zasnovan okoli več plasti konteksta, ki ga trdno zasidrajo v podatke OpenAI-ja in institucionalno znanje.

Diagram z naslovom »Plasti konteksta podatkovnega agenta«, ki prikazuje šest zloženih ravni: 1) uporaba tabel, 2) oznake ljudi, 3) obogatitev s Codexom, 4) institucionalno znanje, 5) spomin in 6) kontekst časa izvajanja. Vsaka plast je prikazana kot vodoravna vrstica v piramidni obliki.

Plast št. 1: Uporaba tabel

  • Utemeljevanje z metapodatki: agent se opira na metapodatke sheme (imena stolpcev in tipi podatkov), ki usmerjajo pisanje SQL, ter uporablja izvor in nadaljnjo uporabo tabel (npr. razmerja med nadrejenimi in podrejenimi tabelami), da zagotovi kontekst o tem, kako so posamezne tabele med seboj povezane.
  • Sklepanje o poizvedbah: z vključevanjem zgodovinskih poizvedb agent razume, kako pisati lastne poizvedbe in katere tabele se običajno povezujejo.

Plast št. 2: Človeške anotacije

  • Kurirani opisi tabel in stolpcev, ki jih zagotovijo domenski strokovnjaki, zajemajo namen, semantiko, poslovni pomen in znane omejitve, ki jih iz samih shem ali preteklih poizvedb ni mogoče zanesljivo razbrati.Metapodatki sami po sebi niso dovolj.

Metapodatki sami po sebi niso dovolj. Za resnično razlikovanje med tabelami je treba razumeti, kako so nastale in od kod izvirajo.

Plast št. 3: Obogatitev s Codexom

  • Z izpeljavo definicije tabele na ravni kode agent pridobi globlje razumevanje tega, kaj podatki dejansko vsebujejo. 
    • Niansirani vpogledi v to, kaj je shranjeno v tabeli in kako je to izpeljano iz analitičnega dogodka, zagotavljajo dodatne informacije. Na primer, agent lahko poda kontekst o edinstvenosti vrednosti, pogostosti posodabljanja podatkov v tabeli, obsegu podatkov (npr. ali tabela izključuje določena polja in kakšna je raven granulacije) itd.
  • To zagotavlja razširjen kontekst uporabe s prikazom, kako se tabela uporablja zunaj SQL v Spark-u, Python-u in drugih podatkovnih sistemih.
  • Posledično lahko agent razlikuje med tabelami, ki so na videz podobne, vendar se razlikujejo v ključnih lastnostih. Na primer, lahko ugotovi, ali tabela vključuje zgolj lastniški promet ChatGPT‑ja. Ta kontekst se samodejno osvežuje, zato ostaja posodobljen brez ročnega vzdrževanja.
Diagram z naslovom »Cevovod znanja s Codexom.« Priljubljene tabele se stekajo v več opravil Codex-a, ki iz izvorne kode OpenAI-ja izluščijo podrobnosti, vključno z namenom tabele, zrnatostjo in primarnimi ključi, vzorci nadaljnje uporabe, alternativnimi možnostmi tabel ter svežino podatkov.

Plast št. 4: Institucionalno znanje 

  • Agent lahko dostopa do Slack-a, Google Docs-a in Notion-a, ki zajemajo ključni kontekst podjetja, kot so lansiranja, incidenti na področju zanesljivosti, interne kodne oznake in orodja ter kanonične definicije in izračunska logika ključnih metrik.
  • Ti dokumenti se vnašajo, vdelajo in shranjujejo skupaj z metapodatki in dovoljenji. Storitev za pridobivanje ob času izvajanja upravlja nadzor dostopa in predpomnjenje, kar agentu omogoča učinkovito in varno pridobivanje teh informacij.
Posnetek zaslona uporabnika, ki sprašuje, zakaj je uporaba povezovalnikov decembra upadla. Agent pojasni, da je bil upad posledica težave z beleženjem, ki se je začela 13. november 2025, zaradi česar je bila uporaba po lansiranju ChatGPT 5.1 podcenjena. Stara telemetrija ni več beležila podatkov, dokler novejši dogodek ni postal referenčni vir.

Plast št. 5: Spomin

  • Ko agent prejme popravke ali zazna nianse pri določenih podatkovnih vprašanjih, lahko ta spoznanja shrani za prihodnjo uporabo, kar mu omogoča stalno izboljševanje skupaj z uporabniki. 
    • Posledično se prihodnji odgovori začnejo z natančnejšega izhodišča, namesto da bi se vedno znova soočali z istimi težavami.
    • Cilj spomina je ohraniti in ponovno uporabiti neočitne popravke, filtre in omejitve, ki so ključni za pravilnost podatkov, vendar jih iz drugih plasti ni mogoče zanesljivo razbrati. 
    • Na primer, v enem primeru agent ni vedel, kako filtrirati določen analitični eksperiment (zanašal se je na ujemanje z določenim nizom, opredeljenim v eksperimentalnem prehodu). V tem primeru je bil spomin ključen, saj je agentu omogočil pravilno filtriranje, namesto da bi se zanašal na približno ujemanje nizov.
  • Ko agentu posredujete popravek ali ko iz pogovora izlušči novo spoznanje, vas bo pozval, ali naj ta spomin shrani za prihodnjo uporabo. 
    • Spomine lahko uporabniki tudi ročno ustvarjajo in urejajo.
    • Spomini so razmejeni na globalno in osebno raven, orodja agenta pa omogočajo njihovo enostavno urejanje.
Obvestilna pasica, ki prikazuje »Podatkovni agent želi shraniti 2 spoznanji v spomin«, z označenim elementom »ChatGPT Top-level Metrics« in potrditvenim sporočilom na desni, ki se glasi »Saved to global memory« z zeleno kljukico.

Plast št. 6: Kontekst ob času izvajanja

  • Kadar za tabelo ni predhodnega konteksta ali so obstoječe informacije zastarele, lahko agent izvede sprotne poizvedbe v podatkovno skladišče ter tabelo neposredno pregleda in poizveduje. To mu omogoča preverjanje shem, razumevanje podatkov v realnem času in ustrezen odziv.
  • Agent se lahko po potrebi povezuje tudi z drugimi sistemi podatkovne platforme (storitev metapodatkov, Airflow, Spark), da pridobi širši podatkovni kontekst, ki obstaja zunaj podatkovnega skladišča.

Njegove evalvacije temeljijo na kuriranih naborih parov vprašanj in odgovorov. Vsako vprašanje cilja na pomembno metriko ali analitični vzorec, pri katerem je pravilnost bistvenega pomena, in je povezano z ročno pripravljenim »zlatim« poizvedbenim stavkom SQL, ki ustvari pričakovani rezultat. Za vsako evalvacijo naravnojezikovno vprašanje pošljemo na končno točko za generiranje poizvedb, izvedemo ustvarjeni SQL ter izhod primerjamo z rezultatom pričakovanega SQL.

Diagram z naslovom »Evalvacijski cevovod podatkovnega agenta.« Evalvacijski pari vprašanj in odgovorov s pričakovanim jezikom SQL se posredujejo v korak generiranja, ki ustvari poizvedbe v jeziku SQL in pripadajoče rezultate. OpenAI Evals primerja ustvarjene in pričakovane rezultate z uporabo primerjave podatkovnih okvirov in poizvedb SQL ter kot izhod poda oceno in sklepanje.

Evalvacija se ne opira na naivno ujemanje nizov. Ustvarjeni SQL se lahko sintaktično razlikuje, a je kljub temu pravilen, nabori rezultatov pa lahko vključujejo dodatne stolpce, ki na odgovor vsebinsko ne vplivajo. Da bi to upoštevali, primerjamo tako SQL kot tudi nastale podatke, te signale pa posredujemo ocenjevalniku OpenAI Evals. Ocenjevalnik ustvari končno oceno skupaj z razlago, pri čemer zajame tako pravilnost kot tudi dopustna odstopanja.

Te evalvacije so podobne enotskim testom, ki se med razvojem neprekinjeno izvajajo, v produkciji pa služijo kot kanarčki za zaznavanje regresij; to nam omogoča, da težave ujamemo zgodaj in zanesljivo iteriramo, ko se zmogljivosti agenta širijo.

Varnost agenta

Naš agent se neposredno vklaplja v obstoječi varnostni model in model nadzora dostopa OpenAI-ja. Deluje izključno kot vmesniški sloj ter podeduje in uveljavlja enaka dovoljenja in varovalne mehanizme, ki urejajo podatke OpenAI-ja. 

Ves dostop agenta je strogo posredniški, kar pomeni, da lahko uporabniki poizvedujejo le po tabelah, do katerih že imajo dovoljen dostop. Kadar dostop manjka, agent to izpostavi ali pa uporabi nadomestne nabore podatkov, za katere je uporabnik pooblaščen.

Pa še to: izdelan je tudi za preglednost. Tako kot vsak drug sistem se lahko tudi zmoti. Svoj proces sklepanja razkrije tako, da ob vsakem odgovoru povzame predpostavke in korake izvajanja. Ko se poizvedbe izvedejo, se neposredno poveže na osnovne rezultate, kar uporabnikom omogoča pregled surovih podatkov in preverjanje vsakega koraka analize.

Kaj smo se naučili

Razvoj našega agenta iz nič je razkril praktične lekcije o tem, kako se agenti vedejo, kje imajo težave in kaj jih pri velikem obsegu dejansko naredi zanesljive.

1. lekcija: Manj je več

Na začetku smo agentu omogočili dostop do celotnega nabora orodij in hitro naleteli na težave zaradi prekrivajočih se funkcionalnosti. Čeprav je takšna redundanca lahko koristna v specifičnih prilagojenih primerih in je človeku očitnejša pri ročnem priklicu, agente zmede. Da bi zmanjšali dvoumnost in izboljšali zanesljivost, smo nekatere priklice orodij omejili in konsolidirali.

2. lekcija: Spremenite cilj, ne poti

Ugotovili smo tudi, da zelo predpisujoče pozivanje poslabša rezultate. Čeprav si številna vprašanja delijo splošno analitično obliko, se podrobnosti dovolj razlikujejo, da toge usmeritve agenta pogosto potisnejo na napačne poti. Ko smo prešli na usmerjanje na višji ravni in se zanašali na sklepanje GPT‑5 pri izbiri ustrezne poti izvajanja, je agent postal robustnejši in je ustvarjal boljše rezultate.

3. lekcija: Pomen je v kodi

Sheme in zgodovina poizvedb opisujejo obliko in rabo tabele, vendar njen pravi pomen živi v kodi, ki jo ustvarja. Logika cevovoda zajema predpostavke, zagotovila glede svežine podatkov in poslovni namen, ki se nikoli ne razkrijejo v SQL ali metapodatkih. S pregledovanjem izvorne kode s Codexom agent razume, kako so nabori podatkov dejansko konstruirani, in lahko zato natančneje sklepa o tem, kaj posamezna tabela v resnici vsebuje. Na vprašanji »kaj je v tej tabeli« in »kdaj jo lahko uporabim« odgovarja bistveno natančneje, kot bi to omogočali zgolj signali iz podatkovnega skladišča. 

Enaka vizija, nova orodja

Našega agenta nenehno izboljšujemo tako, da povečujemo njegovo zmožnost obravnave dvoumnih vprašanj, krepimo zanesljivost in natančnost z močnejšimi validacijami ter ga globlje integriramo v delovne tokove. Prepričani smo, da se mora naravno vključiti v obstoječe načine dela, namesto da bi deloval kot ločeno orodje.

Čeprav bodo naša orodja še naprej imela koristi od temeljnih izboljšav na področjih agentskega sklepanja, validacije in samopopravljanja, ostaja poslanstvo naše ekipe nespremenjeno: brezšivno zagotavljati hitro in zaupanja vredno analizo podatkov v celotnem podatkovnem ekosistemu OpenAI-ja.

Avtor

Bonnie Xu, Aravind Suresh in Emma Tang

Zahvala

Posebna zahvala ekipama Data Productivity in Data Science ter številnim uporabnikom iz različnih funkcij za njihovo eksperimentiranje in povratne informacije.