Preskočite na glavni sadržaj
OpenAI

29. siječnja 2026.

Inženjerstvo

Unutar OpenAI-jevog internog agenta za podatke

Autor: Bonnie Xu, Aravind Suresh i Emma Tang

Učitavanje…

Podaci omogućuju sustavima da uče, proizvodima da se razvijaju, a tvrtkama da donose odluke. Ali dobivanje odgovora brzo, točno i s pravim kontekstom često je teže nego što bi trebalo biti. Kako bismo ovo olakšali dok OpenAI bude rastao, izgradili smo vlastitog internog AI agenta za podatke koji istražuje i donosi zaključke na našoj vlastitoj platformi.

Naš agent je prilagođeni alat samo za internu upotrebu (nije vanjska ponuda), razvijen posebno za podatke, dozvole i radne tijekova OpenAI-ja. Pokazujemo kako smo ga razvili i kako ga upotrebljavamo kako bismo istaknuli primjere stvarnih, značajnih načina na koje umjetna inteligencija može podržati svakodnevni rad u našim timovima. Alati OpenAI-ja koje smo upotrebljavali za razvoj i pokretanje (Codex, naš vodeći model GPT‑5, Evals API(otvara se u novom prozoru) i Embeddings API(otvara se u novom prozoru)) isti su alati koje nudimo razvojnim inženjerima diljem svijeta.

Naš agent za podatke omogućuje zaposlenicima da od pitanja do uvida dođu u nekoliko minuta, a ne dana. Ovo snižava letvicu za prikupljanje podataka i detaljnu analizu u svim funkcijama, a ne samo našeg tima za podatke. Danas se timovi u inženjerstvu, podatkovnoj znanosti, strategiji izlaska na tržište, financijama i istraživanju u OpenAI-ju oslanjaju na agenta kako bi dobili odgovore na pitanja o podacima s velikim utjecajem. Na primjer, može vam pomoći da odgovorite na pitanje kako procijeniti lansiranja i razumjeti stanje poslovanja, sve putem intuitivnog formata prirodnog jezika. Agent kombinira znanje na razini tablice koje pokreće Codex s kontekstom proizvoda i organizacije. Njegov sustav memorije koja kontinuirano uči znači da se također poboljšava sa svakim korakom.

Snimka zaslona koja prikazuje korisnika koji traži ChatGPT WAU na dan 6. listopada 2025. u usporedbi s DevDay 2023. Agent izvještava o ≈800 milijuna WAU za 2025. i ≈100 milijuna za 2023., s bilješkama koje pokazuju promjenu od +700 milijuna i povećanje od ~8 puta, nakon čega slijedi objašnjavajući kontekst.

U ovoj objavi raščlanit ćemo zašto nam je bio potreban prilagođeni AI agent za podatke, što njegov kontekst podataka obogaćen kodom i samoučenje čini toliko korisnim te lekcije koje smo naučili putem.

Zašto nam je trebao prilagođeni alat

OpenAI-jeva podatkovna platforma opslužuje više od 3,5 tisuća internih korisnika koji rade u inženjerstvu, proizvodima i istraživanju, obuhvaćajući preko 600 petabajta podataka u 70 tisuća skupova podataka. Pri toj veličini, samo pronalaženje odgovarajuće tablice može biti jedan od najzahtjevnijih dijelova analize.

Kako je rekao jedan od internih korisnika:

„Imamo mnogo tablica koje su prilično slične i trošim puno vremena pokušavajući shvatiti po čemu se razlikuju i koje koristiti. Neke uključuju odjavljene korisnike, a neke ne. Neka se polja preklapaju; teško je razaznati što je što.”

Čak i uz odabir ispravnih tablica, dobivanje ispravnih rezultata može biti izazovno. Analitičari moraju rasuđivati o podacima u tablicama i njihovim međusobnim odnosima kako bi osigurali ispravnu primjenu transformacija i filtara. Uobičajeni načini neuspjeha – spajanja mnogo-prema-mnogo, pogreške potiskivanja filtra i neobrađene null vrijednosti – mogu neprimjetno poništiti valjanost rezultata. Na razini OpenAI-ja analitičari ne bi trebali trošiti vrijeme na otklanjanje pogrešaka u semantici SQL-a ili izvedbi upita: njihov fokus trebao bi biti na definiranju metrika, provjeri pretpostavki i donošenju odluka temeljenih na podacima.

Snimka zaslona SQL koda koji definira dva CTE-a: order_enriched i monthly_segment, koji spajaju podatke o geografiji kupaca, izvode polja za mjesec narudžbe i izračunavaju mjesečne agregate kao što su broj narudžbi, bruto prihod, prihod s porezom i prosječan broj dana od otpreme do primitka.

Ova SQL naredba ima više od 180 redaka. Nije lako znati spajamo li odgovarajuće tablice i pretražujemo li odgovarajuće stupce.

Način rada

Prođimo kroz to što je naš agent, kako oblikuje kontekst i kako se kontinuirano samousavršava.

Naš agent pokreće model GPT‑5.2 i dizajniran je za rasuđivanje na OpenAI-ovoj podatkovnoj platformi. Dostupan je na mjestima na kojima zaposlenici već rade: kao Slack agent, putem web sučelja, unutar IDE-ova, u Codex CLI putem MCP-a(otvara se u novom prozoru) i izravno u OpenAI-jevoj internoj aplikaciji ChatGPT putem MCP konektora(otvara se u novom prozoru).

Dijagram s naslovom „Kako funkcionira agent za podatke.” Ulazne točke – Agent-UI, Lokalni Agent-MCP, Udaljeni Agent-MCP i Slack Agent – šalju podatke u Agent-API. API se povezuje s internim znanjem o podacima i kontekstom tvrtke, sinkronizira se s podatkovnim skladištem i izvorima platforme te razmjenjuje zahtjeve s modelom GPT-5.2 putem Agent-MCP-a.

Korisnici mogu postavljati složena, otvorena pitanja koja bi obično zahtijevala više krugova ručnog istraživanja. Uzmimo ovaj primjer upita, koji se koristi testnim skupom podataka:„Za putovanja taksijem u New Yorku, koji su parovi ZIP-ova od mjesta preuzimanja do mjesta odredišta najnepouzdaniji, s najvećim razmakom između tipičnog i najgoreg slučaja vremena vožnje i kada se ta varijabilnost javlja?“

Agent provodi analizu od početka do kraja, od razumijevanja pitanja do istraživanja podataka, pokretanja upita i sažimanja nalaza.

Snimka zaslona koja prikazuje korisnika koji pita koji su ZIP parovi za preuzimanje→odredište taksija u New Yorku najviše „nepouzdani“. Agent objašnjava pomoću ~21 tisuću vožnji iz samples.nyctaxi.trips, definira tipične (p50) nasuprot najgorih slučajeva (p95), primjenjuje filtre i opisuje kako prepoznaje kada se dogodila najdulja vožnja za svaki par ZIP-ova.

Odgovor agenta na pitanje.

Jedna od agentovih supermoći je način na koji rješava probleme. Umjesto da slijedi fiksni tekst, agent procjenjuje svoj napredak. Ako međurezultat izgleda pogrešno (npr. ako ima nula redaka zbog netočnog spajanja ili filtriranja), agent istražuje što je pošlo po zlu, prilagođava svoj pristup i pokušava ponovno. U cjelokupnom procesu zadržava puni kontekst i prenosi naučeno između koraka. Ovaj zatvoreni krug, samoučeći proces premješta iteraciju s korisnika na samog agenta, omogućujući brže rezultate i dosljedno kvalitetnije analize od ručnih radnih tijekova.

Snimka zaslona radnog tijeka zadatka koja prikazuje plan korak-po-korak AI agenta za analizu trajanja vožnji taksijem u New Yorku. Uključuje ciljeve, interna pretraživanja, inspekciju sheme, isječke koda i rasuđivanje o izračunu p50/p95 raspona, identifikaciju nepouzdanih ZIP parova i planiranje SQL upita.

Agentovo rasuđivanje za identificiranje najnepouzdanijih parova preuzimanja – odredišta vožnji taksijem u New Yorku.

Agent pokriva cijeli analitički radni tijek: otkrivanje podataka, pokretanje SQL-a i objavljivanje bilježnica i izvješća. Razumije interno znanje tvrtke, može pretraživati vanjske informacije na webu i poboljšava se tijekom vremena kroz naučenu upotrebu i memoriju.

Kontekst je sve

Visokokvalitetni odgovori ovise o bogatom i točnom kontekstu. Bez konteksta čak i snažni modeli mogu proizvesti pogrešne rezultate, poput općenito pogrešne procjene broja korisnika ili pogrešnog tumačenja interne terminologije.

Snimka zaslona korisnika koji pita: „Koliki je bio broj prijavljenih dnevnih korisnika (DAU) na ChatGPT Image Gen u posljednjih 30 dana?“ s retkom statusa ispod koji prikazuje da agent „radi 22 min i 41 s“, što ukazuje na dugotrajni upit u tijeku.

Agent bez memorije, nesposoban za učinkovito ispitivanje.

Snimka zaslona korisnika koji pita: „Koliki je bio broj prijavljenih dnevnih korisnika (DAU) na ChatGPT Image Gen u posljednjih 30 dana?“ s retkom statusa ispod koji prikazuje da agent „radi 22 min i 41 s“, što ukazuje na dugotrajni upit u tijeku.

Memorija agenta omogućuje brže upite tako što pronalazi ispravne tablice.

Kako bi se izbjegli ovi načini neuspjeha, agent je razvijen oko više slojeva konteksta koji ga utemeljuju u podacima i institucionalnom znanju OpenAI-ja.

Dijagram pod naslovom „Slojevi konteksta agenta podataka“ prikazuje šest složenih razina: 1) Korištenje tablica, 2) Ljudske bilješke, 3) Obogaćivanje Codexom, 4) Institucionalno znanje, 5) Memorija i 6) Kontekst trajanja rada. Svaki sloj prikazuje se kao vodoravna traka u obliku piramide.

Sloj br. 1: Upotreba tablice

  • Utemeljenje metapodataka: Agent se oslanja na metapodatke sheme (nazive stupaca i vrste podataka) za pisanje SQL-a i koristi porijeklo tablica (npr. odnose između uzvodnih i nizvodnih tablica) kako bi pružio kontekst o međusobnoj povezanosti različitih tablica.
  • Zaključivanje upita: Unošenje povijesnih upita pomaže agentu da razumije kako pisati vlastite upite i koje se tablice obično spajaju.

Sloj br. 2: Ljudske anotacije

  • Prilagođeni opisi tablica i stupaca koje pružaju stručnjaci za domenu, obuhvaćajući namjenu, semantiku, poslovno značenje i poznata ograničenja koja se ne mogu lako zaključiti iz shema ili prošlih upita.

Sami metapodaci nisu dovoljni. Da biste doista razlikovali tablice, trebate razumjeti kako su stvorene i odakle potječu.

Sloj br. 3: Obogaćivanje Kodexom

  • Izradom definicije tablice na razini koda, agent stječe dublje razumijevanje stvarnog sadržaja podataka. 
    • Nijanse o tome što se pohranjuje u tablici i kako se izvodi iz analitičkog događaja pružaju dodatne informacije. Na primjer, može pružiti kontekst o jedinstvenosti vrijednosti, koliko se često ažuriraju podaci tablice, opsegu podataka (npr., ako tablica isključuje određena polja, ima ovu razinu detaljnosti) itd.
  • Ovo pruža poboljšani kontekst upotrebe pokazujući kako se tablica upotrebljava ne samo u SQL-u, već i u Sparku, Pythonu i ostalim podatkovnim sustavima.
  • To znači da agent može razlikovati tablice koje izgledaju slično, ali se razlikuju u ključnim aspektima. Na primjer, može utvrditi uključuje li tablica samo promet prve strane za ChatGPT. Ovaj se kontekst također automatski osvježava, tako da ostaje ažuran bez potrebe za ručnim održavanjem.
Dijagram pod nazivom „Codexom obogaćeni kanal znanja”. Popularne tablice koriste se u više Codex zadataka, koji izdvajaju pojedinosti iz OpenAI-jeve baze koda, uključujući svrhu tablice, razinu detalja i primarne ključeve, obrasce korištenja u daljnjem toku, alternativne opcije tablica i svježinu podataka.

Sloj br. 4: Institucionalno znanje 

  • Agent može pristupiti Slacku, Google Docsu i Notionu, koji bilježe ključni kontekst tvrtke, uključujući lansiranja, incidente pouzdanosti, interne kodne nazive i alate, te kanonske definicije i logiku izračuna za ključne metrike.
  • Ovi se dokumenti unose, ugrađuju i pohranjuju s metapodacima i dopuštenjima. Usluga dohvaćanja upravlja kontrolom pristupa i predmemoriranjem tijekom izvršavanja, omogućujući agentu da učinkovito i sigurno preuzme te informacije.
Snimka zaslona korisnika koji pita zašto je upotreba konektora pala u prosincu. Agent objašnjava da je pad nastao zbog problema s bilježenjem od 13. studenog 2025., što je uzrokovalo nedovoljnu upotrebu nakon pokretanja modela ChatGPT 5.1. Naslijeđena telemetrija ostala je prazna dok noviji događaj nije postao izvor istine.

Sloj br. 5: Memorija

  • Kada agent primi ispravke ili otkrije detalje u vezi s određenim pitanjima o podacima, može pohraniti ta saznanja za sljedeći put, što mu omogućuje da se neprestano poboljšava zajedno s korisnicima. 
    • Kao rezultat, budući odgovori počinju s točnijom početnom osnovom, umjesto da se stalno susreću s istim problemima.
    • Cilj memorije je zadržati i ponovno upotrebljavati neočite ispravke, filtre i ograničenja koji su ključni za točnost podataka, ali ih je teško zaključiti samo iz ostalih slojeva. 
    • Na primjer, u jednom slučaju agent nije znao kako filtrirati određeni analitički eksperiment (oslanjao se na podudaranje s određenim nizom definiranim u ulazu eksperimenta). Memorija je ovdje bila presudno važna kako bi se osiguralo ispravno filtriranje, umjesto nejasnog pokušaja podudaranja s nizom.
  • Kada agentu date ispravak ili kada pronađe nešto što je naučio iz vašeg razgovora, prikazat će vam upit da spremite tu memoriju za sljedeći put. 
    • Korisnici također mogu ručno stvarati i uređivati memorije.
    • Memorije su definirane na globalnoj i osobnoj razini, a alati agenta omogućuju njihovo jednostavno uređivanje.
Natpis obavijesti koji prikazuje „Agent za podatke želi spremiti 2 lekcije u memoriju“, s označenom stavkom „ChatGPT metrike najviše razine“ i porukom potvrde s desne strane koja glasi „Spremljeno u globalnu memoriju“ sa zelenom kvačicom.

Sloj br. 6: Kontekst izvršavanja

  • Kada ne postoji prethodni kontekst za tablicu ili kada su postojeće informacije zastarjele, agent može izdati upite uživo prema skladištu podataka kako bi pregledao tablicu i izravno postavljao upite. To mu omogućuje da provjerava valjanost shema, razumije podatke u stvarnom vremenu i odgovara u skladu s tim.
  • Agent također može komunicirati s ostalim sustavima na Data Platform (usluga metapodataka, Airflow, Spark) prema potrebi kako bi dobio širi kontekst podataka koji postoji izvan skladišta.

We run a daily offline pipeline that aggregates table usage, human annotations, and Codex-derived enrichment into a single, normalized representation. This enriched context is then converted into embeddings using the OpenAI embeddings API(otvara se u novom prozoru) and stored for retrieval. At query time, the agent pulls only the most relevant embedded context via retrieval-augmented generation(otvara se u novom prozoru) (RAG) instead of scanning raw metadata or logs. This makes table understanding fast and scalable, even across tens of thousands of tables, while keeping runtime latency predictable and low. Runtime queries are issued to our data warehouse live as needed.

Dijagram pod naslovom „Dohvaćanje konteksta u agentu za podatke“. Slojevi izvanmrežne predobrade – korištenje tablica, ljudske anotacije, obogaćivanje Codexom, institucionalno znanje i memorija – unose se u RAG ugradnje. Dohvaćanje uživo pokazuje kako agent pretražuje bazu podataka putem semantičkog pretraživanja ili točnog dohvaćanja teksta kako bi stvorio kontekst u vrijeme izvršavanja.

Together, these layers ensure the agent’s reasoning is grounded in OpenAI’s data, code, and institutional knowledge, dramatically reducing errors and improving answer quality.

Built to think and work like a teammate

One-shot answers work when the problem is clear, but most questions aren’t. More often, arriving at the correct result requires back-and-forth refinement and some course correction.

The agent is built to behave like a teammate you can reason with. It’s a conversational, always-on and handles both quick answers and iterative exploration.

It carries over complete context across turns, so users can ask follow-up questions, adjust their intent, or change direction without restating everything. If the agent starts heading down the wrong path, users can interrupt mid-analysis and redirect it, just like working with a human collaborator who listens instead of plowing ahead.

When instructions are unclear or incomplete, the agent proactively asks clarifying questions. If no response is provided, it applies sensible defaults to make progress. For example, if a user asks about business growth with no date range specified, it may assume the last seven or 30 days. These priors allow it to stay responsive and non-blocking while still converging on the right outcome.

The result is an agent that works well both when you know exactly what you want (e.g., “Tell me about this table”) and just as strong when you’re exploring (e.g., “I’m seeing a dip here, can we break this down by customer type and timeframe?”). 

After rollout, we observed that users frequently ran the same analyses for routine repetitive work. To expedite this, the agent's workflows package recurring analyses into reusable instruction sets. Examples include workflows for weekly business reports and table validations. By encoding context and best practices once, workflows streamline repeat analyses and ensure consistent results across users.

Traka za unos u korisničkom sučelju s tekstom rezerviranog mjesta „Postavi pitanje o podacima“. Ispod se nalazi gumb s oznakom „Upotrijebi radni tijek”, a desno su ikone mikrofona i slanja. Traka ima zaobljene kutove i smještena je na tamnoj pozadini.

Moving fast without breaking trust

Building an always-on, evolving agent means quality can drift just as easily as it can improve. Without a tight feedback loop, regressions are inevitable and invisible. The only way to scale capability without breaking trust is through systematic evaluation.

In this section, we’ll discuss how we leverage OpenAI’s Evals API(otvara se u novom prozoru) to measure and protect the agent’s response quality.

Its Evals are built on curated sets of question-answer pairs. Each question targets an important metric or analytical pattern we care deeply about getting right, paired with a manually authored “golden” SQL query that produces the expected result. For each eval, we send the natural language question to its query-generation endpoint, execute the generated SQL, and compare the output against the result of the expected SQL.

Dijagram pod nazivom „Evaluacijski kanal agenta za podatke“. Parovi za procjenu Q&A s očekivanim SQL-om ulaze u korak generiranja koji proizvodi SQL i rezultate. OpenAI Evals uspoređuje generirane i očekivane rezultate koristeći usporedbu dataframea i SQL-a te prikazuje ocjenu i rasuđivanje.

Evaluation doesn’t rely on naive string matching. Generated SQL can differ syntactically while still being correct, and result sets may include extra columns that don’t materially affect the answer. To account for this, we compare both the SQL and the resulting data, and feed these signals into OpenAI’s Evals grader. The grader produces a final score along with an explanation, capturing both correctness and acceptable variation.

These evals are like unit tests that run continuously during development to identify regressions as canaries in production; this allows us to catch issues early and confidently iterate as the agent's capabilities expand.

Agent security

Our agent plugs directly into OpenAI’s existing security and access-control model. It operates purely as an interface layer, inheriting and enforcing the same permissions and guardrails that govern OpenAI’s data. 

All of the agent’s access is strictly pass-through, meaning users can only query tables they already have permission to access. When access is missing, it flags this or falls back to alternative datasets the user is authorized to use.

Finally, it's built for transparency. Like any system, it can make mistakes. It exposes its reasoning process by summarizing assumptions and execution steps alongside each answer. When queries are executed, it links directly to the underlying results, allowing users to inspect raw data and verify every step of the analysis.

Lessons learned

Building our agent from scratch surfaced practical lessons about how agents behave, where they struggle, and what actually makes them reliable at scale.

Lesson #1: Less is More

Early on, we exposed our full tool set to the agent, and quickly ran into problems with overlapping functionality. While this redundancy can be helpful for specific custom cases and is more obvious to a human when manually invoking, it’s confusing to agents. To reduce ambiguity and improve reliability, we restricted and consolidated certain tool calls.

Lesson #2: Guide the Goal, Not the Path

We also discovered that highly prescriptive prompting degraded results. While many questions share a general analytical shape, the details vary enough that rigid instructions often pushed the agent down incorrect paths. By shifting to higher-level guidance and relying on GPT‑5’s reasoning to choose the appropriate execution path, the agent became more robust and produced better results.

Lesson #3: Meaning Lives in Code

Schemas and query history describe a table’s shape and usage, but its true meaning lives in the code that produces it. Pipeline logic captures assumptions, freshness guarantees, and business intent that never surface in SQL or metadata. By crawling the codebase with Codex, our agent understands how datasets are actually constructed and is able to better reason about what each table actually contains. It can answer “what’s in here” and “when can I use it” far more accurately than from warehouse signals alone. 

Same vision, new tools

We’re constantly working to improve our agent by increasing its ability to handle ambiguous questions, improving its reliability and accuracy with stronger validations, and integrating it more deeply into workflows. We believe it should blend naturally into how people already work, instead of functioning like a separate tool.

While our tooling will keep benefiting from underlying improvements in agent reasoning, validation, and self-correction, our team’s mission remains the same: seamlessly deliver fast, trustworthy data analysis across OpenAI’s data ecosystem.

Autor

Bonnie Xu, Aravind Suresh i Emma Tang

Priznanja

Posebne zahvale timovima za produktivnost podataka i znanost o podacima, kao i našim brojnim međufunkcionalnim korisnicima na njihovom eksperimentiranju i povratnim informacijama.