Sari la conținutul principal
OpenAI

29 ianuarie 2026

Inginerie

Prezentarea agentului de date intern al OpenAI

De Bonnie Xu, Aravind Suresh și Emma Tang

Se încarcă…

Datele influențează modul în care sistemele învață, produsele evoluează și modul în care companiile iau decizii. Dar obținerea de răspunsuri rapide, corecte și cu contextul potrivit este adesea mai dificilă decât ar trebui să fie. Pentru a face acest lucru mai ușor pe măsură ce OpenAI se extinde, am construit propriul nostru agent de date cu IA personalizat, intern care explorează și dezvoltă un raționament asupra propriei noastre platforme.

Agentul nostru este un instrument intern personalizat (nu o ofertă externă), construit special în jurul datelor, permisiunilor și fluxurilor de lucru OpenAI. Arătăm cum l-am creat și folosit pentru a scoate la iveală exemple de modalități reale și eficiente în care inteligența artificială poate sprijini munca zilnică a echipelor noastre. Instrumentele OpenAI pe care le-am folosit pentru a-l crea și rula (Codex, modelul nostru de vârf GPT‑5, API-ul Evals(se deschide într-o fereastră nouă) și API-ul Embeddings(se deschide într-o fereastră nouă)) sunt aceleași instrumente pe care le punem la dispoziția dezvoltatorilor de pretutindeni.

Agentul nostru de date le permite angajaților să treacă de la întrebare la informație în doar câteva minute, nu în zile. Acest lucru reduce barierele în calea extragerii datelor și a unei analize nuanțate în toate departamentele, nu doar pentru echipa noastră de date. Astăzi, echipele de inginerie, știință a datelor, lansare pe piață, finanțe și cercetare de la OpenAI utilizează agentul pentru a răspunde la întrebări cu impact ridicat privind datele. De exemplu, poate ajuta la evaluarea lansărilor și la înțelegerea stării afacerii, totul prin intermediul formatului intuitiv al limbajului natural. Agentul combină cunoștințele la nivel de tabel bazate pe Codex cu contextul produsului și al organizației. Sistemul său de memorie care se învață continuu înseamnă că se îmbunătățește cu fiecare interacțiune.

Captură de ecran care arată un utilizator care cere ChatGPT WAU pe 6 octombrie 2025 comparativ cu DevDay 2023. Agentul raportează ≈800M WAU pentru 2025 și ≈100M pentru 2023, cu note care arată o schimbare de +700M și o creștere de ~8×, urmate de context explicativ.

În această postare, vom analiza de ce aveam nevoie de un agent de date cu IA personalizat, ce face ca contextul său de date îmbogățit cu cod și auto-învățarea să fie atât de utile și lecțiile pe care le-am învățat pe parcurs.

De ce am avut nevoie de un instrument personalizat

Platforma de date OpenAI deservește peste 3,5 mii de utilizatori interni care lucrează în inginerie, produs și cercetare, acoperind peste 600 petabyți de date din 70.000 de seturi de date. La o asemenea dimensiune, simpla găsire a tabelului potrivit poate fi unul dintre cele mai laborioase aspecte ale analizei.

După cum a spus un utilizator intern:

„Avem o mulțime de tabele destul de similare și petrec mult timp încercând să-mi dau seama prin ce diferă și pe care să le folosesc. Unele includ utilizatori deconectați, altele nu. Unele au câmpuri care se suprapun; e greu de spus ce reprezintă fiecare.”

Chiar și cu tabelele selectate corect, obținerea unor rezultate corecte poate fi dificilă. Analiștii trebuie să analizeze datele din tabel și relațiile dintre tabele pentru a se asigura că transformările și filtrele sunt aplicate corect. Modurile comune de eșec — îmbinări many-to-many, erori de filtrare pushdown și valori nule neprelucrate — pot invalida rezultatele în mod silențios. La scara OpenAI, analiștii nu ar trebui să fie nevoiți să investească timp în depanarea semanticii SQL sau a performanței interogărilor: accentul lor ar trebui să fie pus pe definirea indicatorilor, validarea presupunerilor și luarea deciziilor bazate pe date.

Captură de ecran a codului SQL care definește două CTE-uri — order_enriched și monthly_segment — care unesc datele geografice ale clienților, derivă câmpurile lună-comandă și calculează agregate lunare, cum ar fi numărul de comenzi, veniturile brute, veniturile cu impozite și media zilelor de livrare-recepție.

Această declarație SQL are peste 180 de linii. Nu este ușor de știut dacă îmbinăm tabelele corecte și interogăm coloanele potrivite.

Cum funcționează

Să vedem ce este agentul nostru, cum gestionează contextul și cum se autoperfecționează în mod constant.

Agentul nostru este susținut de GPT‑5.2 și este conceput să funcționeze pe platforma de date OpenAI. Este disponibil oriunde lucrează deja angajații: ca agent Slack, printr-o interfață web, în IDE-uri, în Codex CLI prin MCP(se deschide într-o fereastră nouă) și direct în aplicația ChatGPT internă a OpenAI printr-un conector MCP(se deschide într-o fereastră nouă).

Diagramă intitulată „Cum funcționează agentul de date”. Punctele de intrare — Agent-UI, Local Agent-MCP, Remote Agent-MCP și Slack Agent — se conectează la un Agent-API. API-ul se conectează la cunoștințele interne despre date și contextul companiei, se sincronizează cu un depozit de date și sursele platformei și face schimb de solicitări cu modelul GPT-5.2 prin Agent-MCP.

Utilizatorii pot pune întrebări complexe, deschise, care ar necesita de obicei mai multe rânduri de explorare manuală. Iată un exemplu de solicitare care folosește un set de date de testare: „Pentru cursele de taxi din NYC, care perechi de coduri poștale de la preluare la destinație sunt cele mai nefiabile, cu cel mai mare decalaj între timpii de călătorie tipici și cei din cel mai defavorabil caz, și când apare această variabilitate?”

Agentul gestionează analiza complet, de la înțelegerea întrebării până la explorarea datelor, rularea interogărilor și sintetizarea constatărilor.

Captură de ecran care arată un utilizator întrebând care perechi de coduri poștale de preluare→destinație pentru taxiurile din NYC sunt cele mai „nefiabile.” Agentul explică folosind ~21k curse din samples.nyctaxi.trips, definește cazul tipic (p50) vs. cel mai defavorabil caz (p95), aplică filtre și descrie cum identifică momentul în care a avut loc cea mai lungă călătorie a fiecărei perechi de coduri poștale.

Răspunsul agentului la întrebare.

Una dintre superputerile agentului este modul în care dezvoltă raționamente pentru rezolvarea problemelor. În loc să urmeze un scenariu fix, agentul își evaluează propriul progres. Dacă un rezultat intermediar pare greșit (de exemplu, dacă are zero rânduri din cauza unei îmbinări sau a unui filtru incorect), agentul investighează ce a mers prost, își ajustează abordarea și încearcă din nou. Pe parcursul acestui proces, păstrează contextul complet și transferă învățămintele între pași. Acest proces de auto-învățare, cu buclă închisă, mută iterația de la utilizator la agentul în sine, permițând rezultate mai rapide și analize de o calitate constant superioară față de fluxurile de lucru manuale.

Captură de ecran a unui flux de lucru care prezintă planul pas cu pas al unui agent de inteligență artificială pentru analiza duratelor curselor de taxi din New York. Include obiective, căutări interne, inspecția schemei, fragmente de cod și raționament despre calcularea dispersiei p50/p95, identificarea perechilor de coduri poștale nefiabile și planificarea interogărilor SQL.

Raționamentul agentului pentru a identifica cele mai nefiabile perechi de preluare-destinație a taxiurilor din New York.

Agentul acoperă întregul flux de lucru analitic: descoperirea datelor, rularea SQL și publicarea blocnotesurilor și rapoartelor. Înțelege cunoștințele interne ale companiei, poate căuta informații externe pe web și se îmbunătățește în timp prin utilizarea învățată și prin memorie.

Contextul contează cel mai mult

Răspunsurile de înaltă calitate depind de un context bogat și precis. Fără context, chiar și modelele performante pot produce rezultate greșite, cum ar fi estimarea extrem de greșită a numărului de utilizatori sau interpretarea greșită a terminologiei interne.

Captură de ecran a unui utilizator care întreabă: „Care a fost DAU-ul ChatGPT Images cu autentificare pentru ultimele 30 de zile?” cu o linie de stare dedesubt care arată că agentul „Lucrează de 22 m 41 s,” indicând o interogare de lungă durată în curs.

Agentul fără memorie, incapabil să interogheze eficient.

Captură de ecran care arată un utilizator care întreabă: „Care a fost DAU-ul conectat la ChatGPT Image Gen în ultimele 30 de zile?”. Sub mesaj, o linie de stare spune „A funcționat timp de 1 minut și 22 de secunde”, indicând faptul că interogarea rulează încă și durează mult timp pentru a se finaliza.

Memoria agentului permite interogări mai rapide prin găsirea tabelelor corecte.

Pentru a evita aceste moduri de eșec, agentul este creat pe baza mai multor straturi de context care îl fundamentează pe datele și cunoștințele instituționale ale OpenAI.

Diagramă intitulată „Straturile de context ale agentului de date” care prezintă șase niveluri suprapuse: 1) Utilizarea tabelului, 2) Adnotări umane, 3) Îmbogățirea Codex, 4) Cunoștințe instituționale, 5) Memorie și 6) Contextul de execuție. Fiecare strat apare ca o bară orizontală în formă de piramidă.

Stratul #1: Utilizarea tabelului

  • Fundamentarea pe metadate: Agentul se bazează pe metadatele schemei (numele coloanelor și tipurile de date) pentru a influența scrierea SQL și utilizează descendența tabelului (de exemplu, relațiile dintre tabelele din amonte și din aval) pentru a oferi contextul relației dintre diferite tabele.
  • Inferența interogărilor: Ingerarea interogărilor istorice ajută agentul să înțeleagă cum să-și scrie propriile interogări și ce tabele sunt de obicei îmbinate.

Strat #2: Adnotările umane

  • Descrieri atent selecționate ale tabelelor și coloanelor, furnizate de experți în domeniu, care surprind intenția, semantica, semnificația comercială și avertismentele cunoscute care nu pot fi deduse ușor din scheme sau interogări anterioare.

Doar metadatele nu sunt suficiente. Ca să distingi cu adevărat tabelele, trebuie să înțelegi cum au fost create și de unde provin.

Stratul #3: Îmbogățirea Codex

  • Prin derivarea unei definiții la nivel de cod a unui tabel, agentul își construiește o înțelegere mai profundă a ceea ce conțin efectiv datele. 
    • Nuanțele legate de conținutul tabelului și modul în care este derivat dintr-un eveniment analitic oferă informații suplimentare. De exemplu, poate oferi context privind unicitatea valorilor, frecvența actualizării datelor din tabel, domeniul de aplicare al datelor (de exemplu, dacă tabelul exclude anumite câmpuri, are acest nivel de granularitate) etc.
  • Aceasta oferă un context de utilizare îmbunătățit, arătând modul în care tabelul este utilizat dincolo de SQL în Spark, Python și alte sisteme de date.
  • Aceasta înseamnă că agentul poate deosebi tabele care arată similar, dar diferă în moduri esențiale. De exemplu, poate spune dacă un tabel include doar trafic ChatGPT de primă parte. Acest context este actualizat automat, astfel încât rămâne actualizat fără întreținere manuală.
Diagramă intitulată „Flux de cunoaștere îmbogățit cu Codex.” Tabelele populare susțin mai multe sarcini Codex, care extrag detalii din baza de cod OpenAI, inclusiv scopul unui tabel, granularitatea și cheile primare, tiparele de utilizare în aval, opțiuni alternative de tabele și actualitatea datelor.

Stratul 4: Cunoștințe instituționale 

  • Agentul poate accesa Slack, Google Docs și Notion, care cuprind informații esențiale despre companie, cum ar fi lansări, incidente legate de fiabilitate, nume de cod și instrumente interne, precum și definițiile oficiale și logica de calcul pentru indicatorii cheie.
  • Aceste documente sunt preluate, încorporate și stocate cu metadate și permisiuni. Un serviciu de recuperare gestionează controlul accesului și cache-ul în timpul execuției, permițându-i agentului să preia aceste informații eficient și în siguranță.
Captură de ecran cu un utilizator care întreabă de ce a scăzut utilizarea conectorului în decembrie. Agentul explică că această scădere s-a datorat unei probleme de înregistrare în jurnal care a început pe 13 noiembrie 2025, provocând o subestimare a utilizării după lansarea ChatGPT 5.1. Telemetria moștenită s-a epuizat până când un eveniment mai nou a devenit sursa adevărului.

Stratul #5: Memoria

  • Când agentul primește corecții sau descoperă nuanțe despre anumite întrebări legate de date, poate salva aceste învățăminte pentru data viitoare, permițându-i să se îmbunătățească constant împreună cu utilizatorii săi. 
    • Ca urmare, răspunsurile viitoare pornesc de la o bază mai precisă, în loc să întâlnească în mod repetat aceleași probleme.
    • Scopul memoriei este de a reține și reutiliza corecții, filtre și constrângeri care nu sunt evidente, dar care sunt esențiale pentru corectitudinea datelor, însă dificil de dedus exclusiv din celelalte straturi. 
    • De exemplu, într-un caz, agentul nu știa cum să filtreze pentru un anumit experiment de analiză (se baza pe potrivirea cu un șir specific definit într-o etapă a experimentului). Memoria a fost extrem de importantă aici pentru a se asigura că poate filtra corect, în loc să încerce vag să potrivească șiruri.
  • Când îi oferi agentului o corecție sau când găsește o informație utilă în conversația ta, îți va solicita să salvezi acea amintire pentru data viitoare. 
    • Amintirile pot fi, de asemenea, create și editate manual de către utilizatori.
    • Amintirile sunt gestionate la nivel global și personal, iar instrumentele agentului facilitează editarea lor.
Banner de notificare care afișează mesajul „Agentul de date dorește să salveze 2 informații de învățare în memorie”, cu un element etichetat „Indicatori de nivel superior ChatGPT” și un mesaj de confirmare în partea dreaptă care afișează mesajul „Salvat în memoria globală” cu o bifă verde.

Layer #6: Contextul de execuție

  • Când nu există un context anterior pentru un tabel sau când informațiile existente sunt învechite, agentul poate lansa interogări live către depozitul de date pentru a inspecta și interoga tabelul direct. Acest lucru îi permite să valideze schemele, să înțeleagă datele în timp real și să răspundă corespunzător.
  • Agentul poate, de asemenea, să comunice cu alte sisteme ale platformei de date (serviciu de metadate, Airflow, Spark), după cum este necesar, pentru a obține un context de date mai amplu care există în afara depozitului.

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(se deschide într-o fereastră nouă) and stored for retrieval. At query time, the agent pulls only the most relevant embedded context via retrieval-augmented generation(se deschide într-o fereastră nouă) (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.

Diagrama intitulată „Recuperarea contextului în agentul de date”. Straturile de preprocesare offline — utilizarea tabelelor, adnotările umane, îmbogățirea Codex, cunoștințele instituționale și memoria — sunt integrate în încorporările RAG. Recuperarea în timp real arată agentul interogând o bază de date prin căutare semantică sau recuperare de text exact pentru a produce context în timpul execuției.

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.

Bară de introducere a interfeței cu utilizatorul cu textul de substituție „Pune o întrebare despre date”. Mai jos se află un buton etichetat cu „Utilizează un flux de lucru”, iar în dreapta sunt pictograme pentru microfon și trimitere. Bara are colțuri rotunjite și se află pe un fundal întunecat.

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(se deschide într-o fereastră nouă) 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.

Diagrama intitulată „Procesul de evaluare al agentului de date”. Evaluarea întrebărilor și răspunsurilor se asociază cu fluxul SQL așteptat într-un pas de generare care produce SQL și rezultate. OpenAI Evals compară rezultatele generate cu cele așteptate folosind comparații în dataframe și SQL, generând un scor și un raționament.

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, Emma Tang

Mulțumiri

Am dori să le mulțumim în mod special echipelor de Productivitate a Datelor și Știința Datelor, precum și numeroșilor noștri utilizatori interfuncționali pentru experimente și feedback.