Податоците овозможуваат како системите учат, производите се развиваат и како компаниите донесуваат одлуки. Но, добивањето одговори брзо, точно и со вистинскиот контекст често е потешко отколку што би требало. За да го олесниме ова додека OpenAI се проширува, изградивме наш сопствен прилагоден внатрешен агент со ВИ за податоци што истражува и анализира на нашата платформа.
Нашиот агент е прилагодена алатка само за внатрешна употреба (не е надворешна понуда), специјално изградена околу податоците, дозволите и работните текови на OpenAI. Покажуваме како го изградивме и го користиме за да истакнеме примери за реалните и значајни начини на кои вештачката интелигенција може да ја поддржи секојдневната работа во нашите тимови. Алатките на OpenAI што ги користевме за да го изградиме и извршуваме (Codex, нашиот водечки модел GPT‑5, Evals API(се отвора во нов прозорец) и Embeddings API(се отвора во нов прозорец)) се истите алатки што ги правиме достапни за развивачите насекаде.
Нашиот агент им овозможува на вработените да преминат од прашање до увид за неколку минути, а не за денови. Ова го намалува прагот за извлекување податоци и нијансирана анализа низ сите функции, а не само од нашиот тим за податоци. Денес, тимови за инженерство, наука за податоци, пласман на пазарот, финансии и истражување во OpenAI се потпираат на агентот за да одговорат на прашања за податоци со големо влијание. На пример, може да помогне да се одговори на прашањето како да се оценат лансирањата и да се разбере здравјето на бизнисот, сето тоа преку интуитивниот формат на природен јазик. Агентот комбинира знаење на ниво на табела поддржано од Codex со контекст на производ и организација. Неговиот систем за меморија што континуирано учи значи дека се подобрува со секое користење.

Во оваа објава, ќе објасниме зошто ни беше потребен прилагоден агент со ВИ за податоци, што е тоа што ги прави неговиот контекст на податоци збогатен со код и самостојното учење толку корисни, и лекциите што ги научивме по пат.
Платформата за податоци на OpenAI опслужува повеќе од 3.500 внатрешни корисници кои работат во инженерство, производи и истражување, опфаќајќи над 600 петабајти податоци низ 70.000 збирки на податоци. Со таа големина, едноставното наоѓање на вистинската табела може да биде еден од делови од извршувањето на анализа што одзема најмногу време.
Како што рече еден внатрешен корисник:
„Имаме многу табели што се прилично слични, и трошам многу време обидувајќи се да сфатам по што се разликуваат и која да ја користам. Некои вклучуваат одјавени корисници, а некои не. Некои имаат преклопувачки полиња; тешко е да се каже што е што.“
Дури и кога се избрани точните табели, може да биде предизвик да се произведат точни резултати. Аналитичарите мора да размислуваат за податоците и односите во табелите за да се осигураат дека трансформациите и филтрите се применети правилно. Вообичаени начини на неуспех, многукратните спојувања, грешки при потиснување на филтри и необработени нулта вредности, можат тивко да ги поништат резултатите. На ниво на OpenAI, аналитичарите не треба да трошат време на дебагирање на SQL семантиката или перформансите на прашањата; нивниот фокус треба да биде на дефинирање метрики, валидација на претпоставки и носење одлуки базирани на податоци.

Оваа SQL изјава има повеќе од 180 линии. Не е лесно да се знае дали ги спојуваме правилните табели и ги пребаруваме точните колони.
Ајде да разгледаме што претставува нашиот агент, како го уредува контекстот и како постојано се подобрува.
Нашиот агент е овозможен од GPT‑5.2 и е дизајниран да расудува врз платформата за податоци на OpenAI. Достапен е секаде каде што вработените веќе работат: како агент за Slack, преку веб-интерфејс, во IDE, во Codex CLI преку MCP(се отвора во нов прозорец) и директно во внатрешната апликација ChatGPT на OpenAI преку MCP конектор(се отвора во нов прозорец).
Корисниците можат да поставуваат сложени, отворени прашања што обично би барале повеќе рунди на рачно истражување. Земи го овој промпт за пример, кој користи комплет на податоци за тест: „За патувањата со такси во Њујорк, кои парови на поштенски кодови од земање до оставање се најнепредвидливи, со најголем јаз меѓу типичните и најлошите времиња на патување, и кога се јавува таа варијабилност?“
Агентот ја спроведува анализата од почеток до крај, од разбирање на прашањето до истражување на податоците, извршување на пребарувања и синтетизирање на наоди.

Одговорот на агентот на прашањето.
Една од супермоќите на агентот е како расудува низ проблемите. Наместо да следи фиксно сценарио, агентот го оценува својот напредок. Ако некој меѓурезултат изгледа погрешно (на пр., ако има нула редови поради неточно спојување или филтер), агентот истражува што тргнало наопаку, го приспособува својот пристап и се обидува повторно. Во текот на овој процес, го задржува целиот контекст и ги пренесува научените лекции понатаму меѓу чекорите. Овој затворен циклус, процес на самостојно учење ја префрла итерацијата од корисникот во самиот агент, овозможувајќи побрзи резултати и постојано поквалитетни анализи од рачните работни текови.

Расудувањето на агентот за да ги идентификува најнедоверливите парови за подгнување–оставање на такси во Њујорк.
Агентот го покрива целиот процес на аналитика: откривање на податоци, извршување на SQL и објавување на тетратки и извештаи. Го разбира внатрешното знаење на компанијата, може да пребарува на веб за надворешни информации и се подобрува со текот на времето преку научена употреба и меморија.
Висококвалитетните одговори зависат од богат и точен контекст. Без контекст, дури и најсилните модели може да произведат погрешни резултати, како на пример значително да го преценат бројот на корисници или погрешно да ја протолкуваат внатрешната терминологија.

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

Меморијата на агентот овозможува побрзи пребарувања преку наоѓање на точните табели.
За да се избегнат овие начини на неуспех, агентот е изграден врз повеќе слоеви на контекст кои го поврзуваат со податоците и институционалното знаење на OpenAI.
- Заземјување со метаподатоци: Агентот се потпира на метаподатоци од шемата (имиња на колони и типови на податоци) за да го информира пишувањето на SQL и користи потекло на табелите (на пр., односи на табели нагоре и надолу по текот) за да обезбеди контекст за тоа како се поврзани различните табели.
- Инференција на пребарувања: Внесувањето на историски пребарувања му помага на агентот да разбере како да ги пишува своите пребарувања и кои табели обично се поврзуваат заедно.
- Курирани описи на табели и колони обезбедени од експерти во полето, кои ја доловуваат намерата, семантиката, деловното значење и познатите ограничувања што не можат лесно да се заклучат од шеми или од претходни барања.
Самите метаподатоци не се доволни. За навистина да ги разликуваш табелите, треба да разбереш како се создадени и од каде потекнуваат.
- Со изведување на дефиниција на табела на ниво на код, агентот создава подлабоко разбирање за тоа што всушност содржат податоците.
- Нијансите за тоа што е зачувано во табелата и како се добива од аналитички настани обезбедуваат дополнителни информации. На пример, може да даде контекст за уникатноста на вредностите, колку често се ажурираат податоците во табелата, опсегот на податоците (на пр., ако табелата исклучува одредени полиња, има ова ниво на грануларност), итн.
- Ова обезбедува подобрен контекст за користење, покажувајќи како табелата се користи не само во SQL, туку и во Spark, Python и други податочни системи.
- Ова значи дека агентот може да разликува помеѓу табели што изгледаат слично, но се разликуваат на суштински начини. На пример, може да утврди дали табелата вклучува само сообраќај на ChatGPT од прва страна. Овој контекст исто така автоматски се освежува, така што останува ажуриран без потреба од рачно одржување.
- Агентот може да пристапи до Slack, Google Docs и Notion, кои го опфаќаат критичниот контекст на компанијата, како што се лансирања, инциденти со доверливост, внатрешни кодни имиња и алатки, како и канонските дефиниции и логиката на пресметување за клучните метрики.
- Овие документи се внесуваат, вградуваат и складираат со метаподатоци и дозволи. Услугата за преземање управува со контролата на пристап и кеширањето во време на извршување, овозможувајќи му на агентот ефикасно и безбедно да ги повлече овие информации.

- Кога агентот добива корекции или открива нијанси за одредени прашања за податоци, може да ги зачува овие сознанија за следниот пат, што му овозможува постојано да се подобрува со своите корисници.
- Како резултат, идните одговори започнуваат од попрецизна основа, наместо постојано да се соочуваат со истите проблеми.
- Целта на меморијата е да ги задржи и повторно искористи неочигледните корекции, филтри и ограничувања кои се критични за точноста на податоците, но тешко се заклучуваат само од другите слоеви.
- На пример, во еден случај, агентот не знаеше како да филтрира за одреден аналитички експеримент (се потпираше на совпаѓање со специфична низа дефинирана во експериментална порта). Меморијата беше од клучно значење тука за да се осигура дека може правилно да филтрира, наместо нејасно да се обидува да прави совпаѓање на низи.
- Кога ќе му дадеш корекција на агентот или кога ќе научи нешто од вашиот разговор, ќе ти даде промпт да ја зачуваш таа меморија за следниот пат.
- Спомените може рачно да се создаваат и уредуваат од страна на корисниците.
- Сеќавањата се дефинирани на глобално и лично ниво, а алатките на агентот го прават нивното уредување лесно.

- Кога нема претходен контекст за табела или кога постојните информации се застарени, агентот може да изврши барања во живо во складиштето на податоци за директно да ја прегледа и испита табелата. Ова му овозможува да ги валидира шемите, да ги разбере податоците во реално време и да одговори соодветно.
- Агентот може и да комуницира со други системи на платформи на податоци (услуга за метаподатоци, Airflow, Spark) по потреба за да добие поширок контекст за податоците што постои надвор од складиштето.
Ние извршуваме дневен офлајн процес кој ја собира употребата на табели, човечките анотации и збогатувањето добиено од Codex во единствена, нормализирана претстава. Овој збогатен контекст потоа се претвора во вградувања користејќи го API за вградувања на OpenAI(се отвора во нов прозорец) и се складира за подоцнежно преземање. Во моментот на барањето, агентот го извлекува само најрелевантниот вграден контекст преку генерирање со засилено преземање(се отвора во нов прозорец) (RAG) наместо да скенира необработени метаподатоци или евиденции. Ова го прави разбирањето на табелите брзо и скалабилно, дури и низ десетици илјади табели, додека ја одржува латентноста при извршување предвидлива и ниска. Барањата за време на извршување се испраќаат до нашето складиште на податоци во реално време, по потреба.
Заедно, овие слоеви осигуруваат дека расудувањето на агентот е засновано на податоците, кодот и институционалното знаење на OpenAI, значително намалувајќи ги грешките и подобрувајќи го квалитетот на одговорите.
Одговорите од типот „промпт со еден пример“ функционираат кога проблемот е јасен, но повеќето прашања не се такви. Почесто, за да се постигне точниот резултат, потребно е постојано усовршување и корекција на насоката.
Агентот е создаден да се однесува како соиграч со кој можеш да размислуваш. Тоа е разговорен, секогаш активен систем кој се справува и со брзи одговори и со итеративно истражување.
Пренесува целосен контекст низ повеќе интеракции, така што корисниците можат да поставуваат дополнителни прашања, да ја прилагодат својата намера или да сменат насока без да мора да повторуваат сè. Ако агентот почне да тргнува по погрешен пат, корисниците можат да го прекинат среде анализа и да го пренасочат, исто како кога работат со човечки соработник кој слуша наместо да продолжи да тера по свое.
Кога инструкциите се нејасни или нецелосни, агентот проактивно поставува појаснувачки прашања. Ако не добиеш одговор, ќе се применат разумни стандардни поставки за да се продолжи напред. На пример, ако корисникот праша за раст на бизнисот без да наведе временски опсег, може да се претпостави дека се мисли на последните седум или триесет дена. Овие претпоставки му овозможуваат да остане одзивен и неблокирачки, а сепак да се приближи кон правилниот исход.
Резултатот е агент што работи добро и кога точно знаеш што сакаш (на пр., „Кажи ми за оваа табела“) и исто толку добро кога истражуваш (на пр., „Гледам пад тука, можеме ли да го разложиме ова по тип на клиент и временска рамка?“).
По воведувањето, забележавме дека корисниците често ги извршуваат истите анализи за рутинска и повторувачка работа. За да го забрзаат ова, агентските работни текови ги групираат повторливите анализи во повторно употребливи збирки на инструкции. Примери вклучуваат работни текови за неделни деловни извештаи и проверки на табели. Со еднократно кодирање на контекстот и најдобрите практики, работните текови ги поедноставуваат повторливите анализи и обезбедуваат доследни резултати за сите корисници.

Изградбата на секогаш активен, еволуирачки агент значи дека квалитетот може да се промени исто толку лесно колку што може и да се подобри. Без тесен циклус на повратни информации, регресиите се неизбежни и невидливи. Единствениот начин да се зголеми способноста без да се наруши довербата е преку систематска проценка.
Во овој дел, ќе разговараме како го користиме Evals API на OpenAI(се отвора во нов прозорец) за да го измериме и заштитиме квалитетот на одговорите на агентот.
Неговите евалуации се изградени врз курирани збирки од парови прашање-одговор. Секое прашање е насочено кон важен показател или аналитичка шема која ни е многу важна за да бидеме точни, спарено со рачно напишано „златно“ SQL-барање што го дава очекуваниот резултат. За секоја евалуација, го испраќаме прашањетo на природен јазик до крајната точка за генерирање на барање, го извршуваме генерираниот SQL и го споредуваме излезот со резултатот од очекуваниот SQL.
Проценката не се потпира на наивно совпаѓање на низи. Генерираниот SQL може синтаксички да се разликува, но сепак да биде точен, а множествата резултати може да вклучуваат дополнителни колони што не влијаат значајно на одговорот. За да го земеме ова предвид, ги споредуваме и SQL и добиените податоци, и ги внесуваме овие сигнали во оценувачот на OpenAI Evals. Оценувачот дава конечна оценка заедно со објаснување, опфаќајќи и точност и прифатливи варијации.
Овие евалуации се како единични тестови што континуирано се извршуваат за време на развојот за да идентификуваат регресии како предупредувања во продукција; ова ни овозможува рано да ги откриеме проблемите и со доверба да итерираме како што се прошируваат можностите на агентот.
Нашиот агент директно се поврзува со постојниот модел за безбедност и контрола на пристап на OpenAI. Функционира исклучиво како интерфејсен слој, наследувајќи и спроведувајќи ги истите дозволи и заштитни мерки што ги регулираат податоците на OpenAI.
Целиот пристап на агентот е строго pass-through, што значи дека корисниците можат да прават барања само за табели до кои веќе имаат дозвола за пристап. Кога недостасува пристап, го означува ова или се префрла на алтернативни комплети на податоци кои корисникот е овластен да ги користи.
И секако, изградено е за транспарентност. Како и секој систем, може да направи грешки. Го открива процесот на расудување преку резимирање на претпоставките и чекорите на извршување покрај секој одговор. Кога се извршуваат барања, тие се поврзуваат директно со основните резултати, овозможувајќи им на корисниците да ги прегледаат необработените податоци и да го потврдат секој чекор од анализата.
Изградбата на нашиот агент од нула ни откри практични лекции за тоа како се однесуваат агентите, каде имаат потешкотии и што навистина ги прави доверливи на големо ниво.
На самиот почеток, му го претставивме целиот наш комплет на алатки на агентот и брзо се соочивме со проблеми поради преклопување на функционалностите. Иако оваа редундантност може да биде корисна за специфични прилагодени случаи и е поочигледна за луѓето при рачно повикување, таа е збунувачка за агентите. За да се намали нејасноста и да се подобри доверливоста, ги ограничивме и консолидиравме одредени повици на алатки.
Исто така, откривме дека премногу прецизното насочување ги влоши резултатите. Иако многу прашања имаат општа аналитичка форма, деталите се разликуваат доволно со што ригидните инструкции често го насочуваат агентот по погрешни патеки. Со користење на насоки на повисоко ниво и потпирање на расудувањето на GPT‑5 за избор на соодветниот пат на извршување, агентот стана поотпорен и постигна подобри резултати.
Шемите и историјата на прашањата ја опишуваат формата и употребата на табелата, но вистинското значење е во кодот што ја создава. Логиката на процесот ги опфаќа претпоставките, гаранциите за свежина и деловната намера кои никогаш не се појавуваат во SQL или метаподатоците. Со пребарување на кодната база со Codex, нашиот агент разбира како се конструираат збирките на податоци и може подобро да расудува за тоа што содржи секоја табела. Може да одговори на „што има овде“ и „кога можам да го користам“ многу попрецизно отколку само врз основа на сигналите од складиштето.
Постојано работиме на подобрување на нашиот агент со зголемување на неговата способност да одговара на двосмислени прашања, подобрување на неговата доверливост и точност преку посилни валидации и подлабока интеграција во работните текови. Веруваме дека треба природно да се вклопи во начинот на кој луѓето веќе работат, наместо да функционира како одделна алатка.
Иако нашите алатки ќе продолжат да имаат корист од основните подобрувања во расудувањето на агентите, валидацијата и самокорекцијата, мисијата на нашиот тим останува иста: беспрекорно да испорачува брза и доверлива анализа на податоци низ екосистемот на податоци на OpenAI.
Автор
Признанија
Посебна благодарност до тимовите за продуктивност на податоци и наука за податоци, како и до нашите многубројни корисници од различни функции за нивните експерименти и повратни информации.


