Пређите на главни садржај
OpenAI

29. јануар 2026.

Инжењеринг

Унутар OpenAI-јевог интерног агента за податке

Аутори: Bonnie Xu, Aravind Suresh и Emma Tang

Учитавање…

Подаци покрећу начин на који системи уче, производи се развијају и компаније доносе одлуке. Али брзо, тачно и у правом контексту доћи до одговора често је теже него што би требало да буде. Да бисмо то олакшали како OpenAI расте, направили смо сопственог прилагођеног интерног AI агента за податке који истражује и резонује над нашом платформом.

Наш агент је прилагођен интерни алат намењен само за унутрашњу употребу (није спољна понуда), направљен посебно око OpenAI-јевих података, дозвола и токова рада. Показујемо како смо га направили и користимо да бисмо приказали примере стварних, значајних начина на које AI може да подржи свакодневни рад у нашим тимовима. OpenAI алати које смо користили да га направимо и покрећемо (Codex, наш најпознатији модел GPT‑5, Evals API(отвара се у новом прозору) и Embeddings API(отвара се у новом прозору)) исти су алати које стављамо на располагање програмерима свуда.

Наш агент за податке омогућава запосленима да од питања до увида стигну за неколико минута, а не дана. То снижава праг за извлачење података и нијансиране анализе у свим функцијама, не само у нашем тиму за податке. Данас се тимови из инжењеринга, науке о подацима, припреме за излазак на тржиште, финансија и истраживања у OpenAI-ју ослањају на агента да одговори на важна питања о подацима. На пример, може да помогне да се одговори како проценити лансирања и разумети здравље пословања, све кроз интуитиван формат природног језика. Агент комбинује знање о табелама које покреће Codex са производним и организационим контекстом. Његов систем Меморије који непрекидно учи значи да се побољшава са сваким наредним кораком.

Снимак екрана приказује корисника који тражи ChatGPT WAU за 6. октобар 2025. у поређењу са DevDay 2023. Агент пријављује ≈800M WAU за 2025. и ≈100M за 2023, уз напомене које показују промену од +700M и повећање од ~8×, након чега следи објашњавајући контекст.

У овом тексту ћемо објаснити зашто нам је био потребан прилагођени AI агент за податке, шта његов контекст података обогаћен кодом и самостално учење чини толико корисним и које смо лекције успут научили.

Зашто нам је био потребан прилагођени алат

OpenAI-јева платформа података служи за више од 3,5 хиљ. интерних корисника који раде у инжењерингу, производима и истраживању, обухватајући више од 600 петабајта података у 70 хиљ. скупова података. На тој скали, само проналажење праве табеле може бити један од најзахтевнијих делова анализе.

Како је један интерни корисник рекао:

„Имамо много табела које су прилично сличне, и трошим огромно време покушавајући да схватим по чему се разликују и коју да користим. Неке укључују одјављене кориснике, неке не. Неке имају поља која се преклапају; тешко је разазнати шта је шта.“

Чак и када су изабране исправне табеле, добијање тачних резултата може бити изазовно. Аналитичари морају да резонују о подацима у табелама и односима између табела како би осигурали да се трансформације и филтери правилно примењују. Уобичајени начини отказа — many-to-many спајања, грешке при протискивању филтера и необрађене null вредности — могу неприметно да учине резултате неважећим. На OpenAI-јевој скали, аналитичари не би требало да троше време на отклањање проблема са SQL семантиком или перформансама упита: њихов фокус треба да буде на дефинисању метрика, провери претпоставки и доношењу одлука заснованих на подацима.

Снимак екрана SQL кода који дефинише два CTE-а — order_enriched и monthly_segment — који спајају географске податке о купцима, изводе поља месеца поруџбине и рачунају месечне агрегате као што су број поруџбина, бруто приход, приход са порезом и просечан број дана од слања до пријема.

Ова SQL наредба има више од 180 линија. Није лако знати да ли спајамо праве табеле и постављамо упите над правим колонама.

Како функционише

Хајде да прођемо кроз то шта је наш агент, како прикупља контекст и како наставља сам да се побољшава.

Наш агент покреће GPT‑5.2 и осмишљен је да резонује над OpenAI-јевом платформом података. Доступан је свуда где запослени већ раде: као Slack агент, преко веб интерфејса, унутар IDE-ова, у Codex CLI-ју преко MCP-а(отвара се у новом прозору) и директно у OpenAI-јевој интерној ChatGPT апликацији преко MCP конектора(отвара се у новом прозору).

Дијаграм под насловом „Како ради агент за податке“. Улазне тачке — Agent-UI, Local Agent-MCP, Remote Agent-MCP и Slack Agent — улазе у Agent-API. API се повезује са интерним знањем о подацима и контекстом компаније, синхронизује се са складиштем података и изворима платформе и размењује захтеве са моделом GPT-5.2 преко Agent-MCP-а.

Корисници могу да постављају сложена, отворена питања која би обично захтевала више кругова ручног истраживања. Узмимо овај пример инструкције, који користи тест скуп података: „За вожње NYC таксија, који парови ZIP кодова од места преузимања до одредишта су најнепоузданији, са највећим јазом између типичног и најгорег времена путовања, и када долази до те варијабилности?“

Агент обавља анализу од почетка до краја, од разумевања питања до истраживања података, покретања упита и синтезе налаза.

Снимак екрана приказује корисника који пита који су NYC taxi парови ZIP кодова преузимање→одредиште нај„непоузданији“. Агент објашњава да користи ~21k вожњи из samples.nyctaxi.trips, дефинише типично (p50) наспрам најгорег случаја (p95), примењује филтере и описује како утврђује када се догодила најдужа вожња за сваки ZIP пар.

Одговор агента на питање.

Једна од супермоћи агента је начин на који резонује кроз проблеме. Уместо да прати фиксну скрипту, агент процењује сопствени напредак. Ако међурезултат делује погрешно (нпр. ако има нула редова због нетачног спајања или филтера), агент истражује шта је пошло наопако, прилагођава приступ и покушава поново. Током тог процеса задржава пун контекст и преноси научено између корака. Овај затворени процес самосталног учења пребацује итерацију са корисника на самог агента, омогућавајући брже резултате и доследно квалитетније анализе од ручних токова рада.

Снимак екрана тока задатка који приказује корак-по-корак план AI агента за анализу трајања вожњи NYC таксија. Укључује циљеве, интерне претраге, преглед шеме, исечке кода и резоновање о израчунавању распона p50/p95, идентификовању непоузданих ZIP парова и планирању SQL упита.

Резоновање агента за идентификовање најнепоузданијих NYC taxi парова преузимање–одредиште.

Агент покрива цео аналитички ток рада: откривање података, покретање SQL-а и објављивање свески и извештаја. Разуме интерно знање компаније, може да претражује веб ради спољних информација и временом се побољшава кроз научену употребу и Меморију.

Контекст је све

Квалитетни одговори зависе од богатог, тачног контекста. Без контекста, чак и снажни модели могу да дају погрешне резултате, као што су драстично погрешне процене броја корисника или погрешно тумачење интерне терминологије.

Снимак екрана корисника који пита: „Колики је био ChatGPT Image Gen logged-in DAU у последњих 30 дана?“ са статусном линијом испод која показује да агент „Ради већ 22 м 41 с“, што указује на дуготрајан упит који је у току.

Агент без меморије, неспособан да ефикасно поставља упите.

Снимак екрана приказује корисника који пита: „Колики је био ChatGPT Image Gen logged-in DAU у последњих 30 дана?“ Испод поруке, статусна линија каже „Радило 1 м 22 с“, што показује да се упит и даље извршава и да му треба доста времена да се заврши.

Меморија агента омогућава брже упите тако што проналази исправне табеле.

Да бисмо избегли ове начине отказа, агент је изграђен око више слојева контекста који га утемељују у OpenAI-јевим подацима и институционалном знању.

Дијаграм под насловом „Слојеви контекста агента за податке“ приказује шест наслаганих нивоа: 1) Употреба табела, 2) Људске напомене, 3) Codex обогаћивање, 4) Институционално знање, 5) Меморија и 6) Контекст у извршавању. Сваки слој је приказан као хоризонтална трака у облику пирамиде.

Слој бр. 1: Употреба табела

  • Утемељење у метаподацима: Агент се ослања на метаподатке шеме (називе колона и типове података) да би усмеравао писање SQL-а и користи линију порекла табела (нпр. односе узводних и низводних табела) да пружи контекст о томе како су различите табеле повезане.
  • Закључивање из упита: Уношење историјских упита помаже агенту да разуме како да пише сопствене упите и које се табеле обично спајају.

Слој бр. 2: Људске напомене

  • Курирани описи табела и колона које дају стручњаци за домен, хватајући намеру, семантику, пословно значење и позната ограничења која се не могу лако извести из шема или претходних упита.

Сами метаподаци нису довољни. Да бисте заиста разликовали табеле, потребно је да разумете како су настале и одакле потичу.

Слој бр. 3: Обогаћивање помоћу Codex-а

  • Извођењем дефиниције табеле на нивоу кода, агент гради дубље разумевање онога што подаци заиста садрже. 
    • Нијансе о томе шта је ускладиштено у табели и како је изведено из аналитичког догађаја пружају додатне информације. На пример, могу да дају контекст о јединствености вредности, колико често се подаци у табели ажурирају, о обухвату података (нпр. ако табела искључује одређена поља, има овај ниво грануларности) итд.
  • То пружа обогаћен контекст употребе показујући како се табела користи изван SQL-а у Spark-у, Python-у и другим системима података.
  • То значи да агент може да разликује табеле које изгледају слично, али се критично разликују. На пример, може да утврди да ли табела укључује само first-party ChatGPT саобраћај. Овај контекст се такође аутоматски освежава, па остаје ажуран без ручног одржавања.
Diagram titled “Codex-enriched knowledge pipeline.” Popular tables feed into multiple Codex tasks, which extract details from the OpenAI codebase, including a table’s purpose, grain and primary keys, downstream usage patterns, alternate table options, and data freshness.

Слој бр. 4: Институционално знање 

  • Агент може да приступи Slack-у, Google Docs-у и Notion-у, који бележе критичан контекст компаније као што су лансирања, инциденти поузданости, интерни кодни називи и алати, као и канонске дефиниције и логика израчунавања кључних метрика.
  • Ови документи се уносе, претварају у embeddings и чувају са метаподацима и дозволама. Сервис за проналажење управља контролом приступа и кеширањем у време извршавања, омогућавајући агенту да ову информацију ефикасно и безбедно прибави.
Снимак екрана корисника који пита зашто је употреба конектора опала у децембру. Агент објашњава да је пад настао због проблема са логовањем који је почео 13. новембра 2025, што је довело до потцењене употребе после лансирања ChatGPT 5.1. Старија телеметрија је била празна док новији догађај није постао извор истине.

Слој бр. 5: Меморија

  • Када агент добије исправке или открије нијансе у вези са одређеним питањима о подацима, може да сачува та сазнања за следећи пут, што му омогућава да се непрестано побољшава са својим корисницима. 
    • Као резултат тога, будући одговори почињу са тачније полазне основе уместо да се изнова сударају са истим проблемима.
    • Циљ Меморије је да задржи и поново употреби неочигледне исправке, филтере и ограничења који су кључни за исправност података, али их је тешко извести само из других слојева. 
    • На пример, у једном случају агент није знао како да филтрира одређени аналитички експеримент (ослањао се на поклапање са одређеним стрингом дефинисаним у капији експеримента). Меморија је овде била пресудно важна да би могао исправно да филтрира, уместо да нејасно покушава да упари стрингове.
  • Када агенту дате исправку или када пронађе нешто што треба научити из вашег разговора, тражиће од вас да сачувате ту меморију за следећи пут. 
    • Корисници такође могу ручно да креирају и уређују меморије.
    • Меморије су обухваћене на глобалном и личном нивоу, а алати агента омогућавају лако уређивање.
Банер обавештења који приказује „Агент за податке жели да сачува 2 научене ствари у меморију“, са означеном ставком „ChatGPT Top-level Metrics“ и поруком потврде десно која гласи „Сачувано у глобалну меморију“ уз зелену квачицу.

Слој бр. 6: Контекст у време извршавања

  • Када за неку табелу не постоји претходни контекст или када су постојеће информације застареле, агент може да изда live упите складишту података како би директно прегледао и испитао табелу. То му омогућава да потврди шеме, разуме податке у реалном времену и у складу с тим одговори.
  • Агент такође по потреби може да разговара са другим системима Data Platform-а (сервис метаподатака, Airflow, Spark) да би добио шири контекст података који постоји изван складишта.

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(отвара се у новом прозору) and stored for retrieval. At query time, the agent pulls only the most relevant embedded context via retrieval-augmented generation(отвара се у новом прозору) (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.

Дијаграм под насловом „Преузимање контекста у агенту за податке“. Офлајн слојеви претпроцесирања — употреба табела, људске напомене, Codex обогаћивање, институционално знање и меморија — улазе у RAG embedding-е. Преузимање уживо приказује агента како поставља упит бази података преко семантичке претраге или тачног текстуалног преузимања да би произвео контекст у извршавању.

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.

UI трака за унос са текстом чуваром места „Поставите питање о подацима.“ Испод ње је дугме са ознаком „Користи ток рада“, а десно су иконе микрофона и слања. Трака има заобљене углове и налази се на тамној позадини.

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(отвара се у новом прозору) 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.

Дијаграм под насловом „Пайплајн евалуације агента за податке“. Парови питања и одговора са очекиваним SQL-ом улазе у корак генерације који производи SQL и резултате. OpenAI Evals пореди генерисане и очекиване резултате помоћу поређења dataframe-а и SQL-а, и даје оцену и резоновање.

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.

Аутор

Bonnie Xu, Aravind Suresh и Emma Tang

Захвалнице

Посебно хвала тимовима за продуктивност података и науку о подацима, као и многим нашим међуфункционалним корисницима на експериментисању и повратним информацијама.