پرش به محتوای اصلی
OpenAI

۹ بهمن ۱۴۰۴

مهندسی

درون عامل داده داخلی OpenAI

نوشته Bonnie Xu، Aravind Suresh و Emma Tang

در حال بارگذاری…

داده‌ها نحوه یادگیری سیستم‌ها، تکامل محصولات و تصمیم‌گیری شرکت‌ها را قدرت می‌بخشند. اما دریافت پاسخ‌ها به‌سرعت، به‌درستی، و با زمینه‌ی مناسب اغلب دشوارتر از آن است که باید باشد. برای آسان‌تر کردن این کار با گسترش OpenAI، ما عامل داده AI سفارشی داخلی خودمان را ساختیم که پلتفرم خودمان را کاوش کرده و درباره آن استدلال می‌کند.

عامل ما یک ابزار سفارشی داخلی است (نه یک محصول خارجی)، که به‌طور خاص بر اساس داده‌ها، مجوزها و جریان‌های کاری OpenAI طراحی شده است. ما نشان می‌دهیم که چگونه آن را ساخته‌ایم و از آن استفاده می‌کنیم تا نمونه‌هایی از روش‌های واقعی و مؤثری برجسته شود که AI می‌تواند از کارهای روزمره در تیم‌های ما پشتیبانی کند. ابزارهای OpenAI که برای ساخت و اجرای آن استفاده کردیم (Codex، الگو پرچمی GPT‑5 ما، Evals API(در یک پنجره جدید باز می‌شود) و Embeddings API(در یک پنجره جدید باز می‌شود)) همان ابزارهایی هستند که در اختیار توسعه‌دهندگان در همه‌جا قرار می‌دهیم.

عامل داده‌ای ما به کارمندان اجازه می‌دهد در عرض چند دقیقه، نه چند روز، از سوال به بینش برسند. این کار آستانه لازم برای استخراج داده‌ها و تحلیل‌های دقیق در تمام بخش‌ها را پایین می‌آورد، نه فقط توسط تیم داده ما. امروز، تیم‌های مهندسی، علوم داده، Go-To-Market، امور مالی و تحقیقات در OpenAI به عامل تکیه می‌کنند تا به پرسشسؤالات داده‌محور با تأثیر بالا پاسخ دهند. برای مثال، می‌تواند به شما کمک کند تا به این پرسش پاسخ دهید که چگونه عرضه‌ها را ارزیابی کنید و سلامت کسب‌وکار را درک کنید، همه از طریق قالب شهودی زبان طبیعی. عامل، دانش سطح جدول مبتنی بر Codex را با زمینه محصول و سازمانی ترکیب می‌کند. سیستم حافظه‌ای که به طور مداوم یاد می‌گیرد، به این معناست که با هر بار استفاده نیز بهبود می‌یابد.

تصویری که نشان می‌دهد کاربری در تاریخ ۶ اکتبر ۲۰۲۵ درخواست ChatGPT WAU را در مقایسه با DevDay سال ۲۰۲۳ مطرح می‌کند. عامل حدود ۸۰۰ میلیون کاربر فعال هفتگی (WAU) برای سال ۲۰۲۵ و حدود ۱۰۰ میلیون برای سال ۲۰۲۳ گزارش می‌دهد، همراه با یادداشت‌هایی که نشان‌دهنده‌ی افزایش بیش از ۷۰۰ میلیون و رشد حدوداً ۸ برابری هستند و در ادامه نیز زمینه‌ی توضیحی ارائه می‌شود.

در این پست، توضیح خواهیم داد چرا به یک عامل دادهٔ AI سفارشی نیاز داشتیم، چه چیزی زمینهٔ دادهٔ غنی‌شده با کد و خودیادگیری آن را تا این حد مفید می‌کند، و درس‌هایی که در طول مسیر آموختیم.

چرا به یک ابزار سفارشی نیاز داشتیم

پلتفرم داده OpenAI به بیش از ۳,۵۰۰ کاربر داخلی که در حوزه‌های مهندسی، محصول و پژوهش فعالیت می‌کنند، خدمات ارائه می‌دهد و بیش از ۶۰۰ پتابایت داده را در ۷۰,۰۰۰ مجموعه‌داده پوشش می‌دهد. در آن اندازه، صرفاً پیدا کردن جدول مناسب می‌تواند یکی از زمان‌برترین بخش‌های انجام تحلیل باشد.

همان‌طور که یکی از کاربران داخلی اظهار داشت:

«ما تعداد زیادی جدول داریم که تا حد زیادی شبیه به هم هستند و من زمان زیادی صرف می‌کنم تا بفهمم چه تفاوت‌هایی دارند و کدام یک را باید استفاده کنم. برخی شامل کاربران خارج‌شده از حساب می‌شوند، برخی نمی‌شوند. برخی کادرها هم‌پوشانی دارند؛ تشخیص آن‌ها از هم دشوار است.»

حتی با انتخاب جدول‌های صحیح، تولید نتایج صحیح می‌تواند چالش‌برانگیز باشد. تحلیلگران باید درباره داده‌های جدول و روابط جدول استدلال کنند تا اطمینان حاصل شود که تبدیل‌ها و فیلترها به‌درستی اعمال می‌شوند. حالت‌های رایج خرابی—اتصال‌های چندبه‌چند، خطاهای پایین‌دستی فیلتر، و مقادیر تهیِ رسیدگی‌نشده—می‌توانند بی‌سروصدا نتایج را نامعتبر کنند. در مقیاس OpenAI، تحلیل‌گران نباید مجبور باشند زمان خود را صرف اشکال‌زدایی معناشناسی SQL یا عملکرد کوئری کنند: تمرکز آن‌ها باید بر تعریف معیارها، اعتبارسنجی فرضیات، و اتخاذ تصمیمات مبتنی بر داده باشد.

تصویری از کد SQL که دو CTE —با نام‌های order_enriched و monthly_segment— را تعریف می‌کند واین‌ها داده‌های جغرافیایی مشتری را با سفارش‌ها ترکیب کرده، کادرهای مرتبط با ماه سفارش ایجاد می‌کنند و تجمیع‌های ماهانه‌ای مانند تعداد سفارش‌ها، درآمد ناخالص، درآمد همراه با مالیات، و میانگین روزهای ارسال تا دریافت را محاسبه می‌کنند.

این عبارت SQL بیش از 180 خط طول دارد. تشخیص اینکه آیا داریم جداول درستی را به هم متصل می‌کنیم و ستون‌های مناسبی را کوئری می‌زنیم، کار ساده‌ای نیست.

چگونگی عملکرد

بیایید بررسی کنیم که عامل ما چیست، چگونه زمینه را تنظیم می‌کند و چگونه به بهبود مستمر خود ادامه می‌دهد.

عامل ما توسط GPT‑5.2 توانمند شده و برای استدلال بر روی پلتفرم داده‌های OpenAI طراحی شده است. این در هر جایی که کارکنان از قبل کار می‌کنند در دسترس است: به‌عنوان یک عامل در Slack، از طریق یک رابط وب، داخل IDEها، در Codex CLI از طریق MCP(در یک پنجره جدید باز می‌شود)، و مستقیماً در اپ داخلی ChatGPT در OpenAI از طریق یک کانکتور MCP(در یک پنجره جدید باز می‌شود).

نموداری با عنوان «چگونه عامل داده کار می‌کند» نقاط ورود (Entrypoints) — شامل رابط کاربری عامل (Agent-UI)، عامل محلی MCP (Local Agent-MCP)، عامل راه‌دور MCP (Remote Agent-MCP)، و عامل Slack — همگی به یک رابط API عامل (Agent-API) متصل می‌شوند. API به دانش داده‌های داخلی و زمینهٔ شرکت متصل می‌شود، با یک انبار داده و منابع پلتفرم همگام‌سازی می‌کند و درخواست‌ها را با GPT-5.2 مبادله می‌کند. مدل از طریق Agent-MCP.

کاربران می‌توانند پرسش‌های پیچیده و باز بپرسند که معمولاً به چندین دور بررسی دستی نیاز دارد. این دستور نمونه را در نظر بگیرید که از یک مجموعه‌داده‌ی آزمایشی استفاده می‌کند: «در سفرهای تاکسی نیویوک، کدام جفت کد پستی مبدا تا مقصد بیشترین اختلاف بین زمان معمول و بدترین حالت سفر را دارند و این نوسان چه زمانی رخ می‌دهد؟»

عامل تحلیل را به‌صورت جامع انجام می‌دهد، از درک پرسش تا بررسی داده‌ها، اجرای کوئری‌ها و ترکیب یافته‌ها.

تصویری از صفحه‌ای که در آن کاربر می‌پرسد کدام جفت کد پستی سوار شدن → پیاده شدن تاکسی‌های نیویورک بیشترین «عدم اطمینان» را دارند. عامل با استفاده از حدود ۲۱ هزار سفر از جدول samples.nyctaxi.trips توضیح می‌دهد، مقدار معمول (p50) را در مقابل بدترین حالت (p95) تعریف می‌کند، فیلترهایی اعمال می‌نماید و شرح می‌دهد که چگونه زمان وقوع طولانی‌ترین سفر برای هر جفت کد پستی را شناسایی می‌کند.

پاسخ عامل به سوال.

یکی از توانایی‌های ویژه عامل، شیوه‌ استدلال آن در حل مسائل است. به‌جای پیروی از یک اسکریپت ثابت، عامل پیشرفت خود را ارزیابی می‌کند. اگر یک نتیجه میانی نادرست به نظر برسد (مثلاً اگر به دلیل یک پیوند یا فیلتر نادرست، صفر ردیف داشته باشد)، عامل بررسی می‌کند چه چیزی اشتباه شده است، رویکرد خود را تنظیم می‌کند و دوباره تلاش می‌کند. در طول این فرایند، زمینه را به‌طور کامل حفظ می‌کند و آموخته‌ها را بین مراحل منتقل می‌کند. این فرایند حلقه‌بسته و خودیادگیر تکرار را از کاربر به خودِ عامل منتقل می‌کند و نتایج سریع‌تر و تحلیل‌هایی با کیفیت به‌طور مداوم بالاتر از گردش‌های کاری دستی را ممکن می‌سازد.

تصویری از جریان کاری یک وظیفه که برنامه‌ی گام‌به‌گام یک عامل AI را برای تحلیل مدت‌زمان سفرهای تاکسی نیویورک نشان می‌دهد. این تصویر شامل اهداف، جست‌وجوهای داخلی، بررسی ساختار داده، قطعه‌کدها، و استدلال‌هایی درباره‌ی محاسبه‌ی بازه‌ی p50/p95، شناسایی جفت‌های کد پستی غیرقابل‌اعتماد، و برنامه‌ریزی برای نوشتن کوئری‌های SQL است.

استدلال عامل برای شناسایی غیرقابل‌اعتمادترین جفت‌های سوار و پیاده شدن تاکسی در نیویورک.

عامل کل گردش کار تحلیل را پوشش می‌دهد: کشف داده‌ها، اجرای SQL و انتشار نوت‌بوک‌ها و گزارش‌ها. این ابزار دانش داخلی شرکت را درک می‌کند، می‌تواند برای اطلاعات خارجی در وب جستجو کند، و با استفاده و حافظه‌ای که می‌آموزد به مرور زمان بهبود می‌یابد.

زمینه همه چیز است

پاسخ‌های با کیفیت بالا به زمینه‌ای غنی و دقیق وابسته‌اند. بدون زمینه، حتی مدل‌های قوی می‌توانند نتایج نادرستی تولید کنند؛ مثلاً تعداد کاربران را به‌طور چشمگیری اشتباه برآورد کنند یا اصطلاحات داخلی را نادرست تفسیر کنند.

تصویری از صفحه‌ای که در آن کاربر پرسیده است: «تعداد کاربران فعال روزانه (DAU) لاگین‌شده قابلیت تولید تصویر ChatGPT در ۳۰ روز گذشته چقدر بوده است؟» و در خط وضعیت زیر آن نوشته شده: «در حال پردازش به مدت ۲۲ دقیقه و ۴۱ ثانیه»، که نشان‌دهنده‌ی اجرای یک کوئری طولانی‌مدت است.

عامل بدون حافظه، ناتوان در اجرای مؤثر کوئری.

تصویری از صفحه‌ای که در آن کاربری پرسیده است: «تعداد کاربران فعال روزانه (DAU) لاگین‌شده برای قابلیت تولید تصویر ChatGPT در ۳۰ روز گذشته چقدر بوده است؟»در زیر این پیام، یک خط وضعیت دیده می‌شود که نوشته: «کار کرد به مدت ۱ دقیقه و ۲۲ ثانیه»، که نشان می‌دهد کوئری هنوز در حال اجراست و زمان زیادی برای تکمیل آن صرف شده است.

حافظه‌ی عامل امکان اجرای سریع‌تر کوئری‌ها را فراهم می‌کند، زیرا با شناسایی جداول صحیح، مسیر دسترسی به داده‌ها را کوتاه‌تر می‌سازد.

برای جلوگیری از این حالت‌های شکست، عامل بر اساس چندین لایه زمینه ساخته شده است که آن را در داده‌ها و دانش نهادی OpenAI تثبیت می‌کند.

نموداری با عنوان «لایه‌های زمینه‌ای عامل داده» که شش لایه پشته‌ای را نشان می‌دهد: ۱) استفاده از جدول، ۲) حاشیه‌نویسی‌های انسانی، ۳) غنی‌سازی Codex، ۴) دانش نهادی، ۵) حافظه، و ۶) زمینه زمان اجرا. هر لایه به‌صورت یک نوار افقی در قالب یک هرم ظاهر می‌شود.

لایه شماره ۱: استفاده از جدول

  • زمینه‌سازی با فراداده: عامل برای نوشتن SQL به فرادادهٔ الگو (نام ستون‌ها و انواع داده‌ها) تکیه می‌کند و از تبارشناسی جدول (مانند روابط جدول‌های بالادستی و پایین‌دستی) برای ارائهٔ زمینه در مورد چگونگی ارتباط جداول مختلف استفاده می‌کند.
  • استنتاج کوئری: وارد کردن کوئری‌های تاریخی به عامل کمک می‌کند تا بفهمد چگونه کوئری‌های خود را بنویسد و کدام جدول‌ها معمولاً با هم پیوند می‌خورند.

لایه شماره ۲: حاشیه‌نویسی انسانی

  • توضیحات گزینش‌شده از جدول‌ها و ستون‌ها که توسط کارشناسان حوزه ارائه شده‌اند و قصد، معناشناسی، معنای کسب‌وکاری و ملاحظات شناخته‌شده‌ای را که به‌راحتی از الگوها یا کوئری‌های گذشته قابل استنباط نیستند، ثبت می‌کنند.

فراداده به تنهایی کافی نیست. برای اینکه واقعاً بتوانید جدول‌ها را از هم تشخیص دهید، باید درک کنید که چگونه ایجاد شده‌اند و منشأ آن‌ها کجاست.

لایه شماره ۳: غنی‌سازی Codex

  • با استخراج یک تعریف در سطح کد از یک جدول، عامل درک عمیق‌تری از محتوای واقعی داده‌ها به دست می‌آورد. 
    • جزئیات مربوط به آنچه در جدول ذخیره می‌شود و نحوه استخراج آن از یک رویداد تحلیلی، اطلاعات اضافی ارائه می‌دهد. برای مثال، می‌تواند دربارهٔ منحصربه‌فرد بودن مقادیر، این‌که داده‌های جدول هر چند وقت یک‌بار به‌روزرسانی می‌شوند، دامنهٔ داده‌ها (مثلاً اگر جدول برخی فیلدها را حذف کند، این سطح از دانه‌بندی را دارد)، و غیره، زمینه ارائه دهد.
  • این با نشان دادن اینکه جدول فراتر از SQL در Spark، Python و سایر سیستم‌های داده چگونه استفاده می‌شود، زمینه‌ی استفاده‌ی بهبودیافته‌ای فراهم می‌کند.
  • این بدان معناست که عامل می‌تواند بین جدول‌هایی که ظاهراً مشابه هستند اما از نظر حیاتی متفاوت‌اند، تمایز قائل شود. برای مثال، می‌تواند تشخیص دهد که آیا یک جدول فقط شامل ترافیک طرف اول ChatGPT است. این زمینه همچنین به‌طور خودکار به‌روزرسانی می‌شود، بنابراین بدون نیاز به نگهداری دستی، به‌روز می‌ماند.
نموداری با عنوان «روند دانش غنی‌شده با Codex» جداول پرکاربرد به چندین وظیفه‌ی Codex متصل می‌شوند؛ این وظایف جزئیاتی را از پایگاه کد OpenAI استخراج می‌کنند، از جمله هدف جدول، سطح جزئیات و کلیدهای اصلی آن، الگوهای استفاده در مراحل بعدی، گزینه‌های جایگزین برای جدول، و تازگی داده‌ها.

لایه شماره ۴: دانش نهادی 

  • عامل می‌تواند به Slack، Google Docs و Notion دسترسی داشته باشد که زمینهٔ حیاتی شرکت را ثبت می‌کنند، مانند راه‌اندازی‌ها، رخدادهای قابلیت اطمینان، نام‌های رمز داخلی و ابزارها، و تعاریف مرجع و منطق محاسبه برای معیارهای کلیدی.
  • این اسناد دریافت، تعبیه و همراه با فراداده و مجوزها ذخیره می‌شوند. یک سرویس بازیابی، کنترل دسترسی و کش‌کردن را در زمان اجرا مدیریت می‌کند و به عامل امکان می‌دهد این اطلاعات را به‌طور کارآمد و ایمن دریافت کند.
تصویر صفحه‌ای از کاربری که می‌پرسد چرا استفاده از کانکتور در دسامبر کاهش یافته است. عامل توضیح می‌دهد که افت به دلیل یک مشکل ثبت گزارش از ۱۳ نوامبر ۲۰۲۵ بوده است که باعث کم‌شماری استفاده پس از عرضه ChatGPT 5.1 شد. تله‌متری قدیمی خالی ماند تا زمانی که یک رویداد جدید به منبع اصلی حقیقت تبدیل شد.

لایه شماره ۵: حافظه

  • وقتی به عامل اصلاحاتی داده می‌شود یا ظرافت‌هایی درباره برخی پرسش‌های داده‌ای کشف می‌کند، می‌تواند این آموخته‌ها را برای دفعه بعد ذخیره کند و به آن اجازه می‌دهد تا همراه با کاربرانش به طور مداوم بهبود یابد. 
    • در نتیجه، پاسخ‌های آینده از یک مبنای دقیق‌تر آغاز می‌شوند، به جای اینکه بارها با همان مسائل مواجه شوند.
    • هدف حافظه این است که اصلاحات، فیلترها و محدودیت‌های غیر بدیهی را که برای صحت داده‌ها حیاتی هستند اما استنباط آن‌ها از سایر لایه‌ها به تنهایی دشوار است، حفظ کرده و مجدداً استفاده کند. 
    • برای مثال، در یک مورد، عامل نمی‌دانست چگونه برای یک آزمایش تحلیلی خاص فیلتر کند (این کار به تطبیق با یک رشته خاص که در یک دروازه آزمایش تعریف شده بود، متکی بود). حافظه در اینجا بسیار مهم بود تا اطمینان حاصل شود که می‌تواند به‌درستی فیلتر کند، به‌جای اینکه به‌صورت مبهم تلاش کند رشته‌ها را تطبیق دهد.
  • هنگامی که به عامل یک اصلاح می‌دهید یا زمانی که از مکالمه‌تان یک یادگیری پیدا می‌کند، به شما اعلان می‌کند که آن حافظه را برای دفعه بعد ذخیره کنید. 
    • خاطرات همچنین می‌توانند به‌صورت دستی توسط کاربران ایجاد و ویرایش شوند.
    • حافظه‌ها در سطح جهانی و شخصی تعریف می‌شوند و ابزارهای عامل ویرایش آن‌ها را آسان می‌سازند.
بنر اعلان با پیام «عامل داده می‌خواهد ۲ یادگیری را در حافظه ذخیره کند»، شامل آیتمی با برچسب «شاخص‌های سطح‌بالای ChatGPT» و پیامی در سمت راست با عنوان «در حافظه‌ی جهانی ذخیره شد» همراه با علامت تیک سبز.

لایه شماره ۶: زمینه زمان اجرا

  • هنگامی که هیچ زمینهٔ قبلی برای یک جدول وجود ندارد یا اطلاعات موجود منسوخ شده است، عامل می‌تواند کوئری‌های زنده‌ای به انبار داده ارسال کند تا جدول را مستقیماً بررسی و پرس‌وجو کند. این به آن اجازه می‌دهد تا الگوها را اعتبارسنجی کند، داده‌ها را به‌صورت بلادرنگ درک کند و بر اساس آن‌ها پاسخ دهد.
  • عامل همچنین قادر است در صورت نیاز با سایر سامانه‌های پلتفرم داده (مانند سرویس فراداده، 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 وارد می‌شوند. بازیابی زنده نشان می‌دهد که عامل با استفاده از جست‌وجوی معنایی یا بازیابی دقیق متنی در حال کوئری گرفتن از یک پایگاه داده است تا زمینه‌ای در زمان اجرا تولید کند.

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.

نوار ورودی رابط کاربری با متن جای‌نگهدار «یک سؤال داده‌ای بپرسید» در زیر آن دکمه‌ای با عنوان «استفاده از یک گردش‌کار» قرار دارد، و در سمت راست، آیکون‌های میکروفن و ارسال دیده می‌شوند. نوار دارای گوشه‌های گرد است و بر روی یک پس‌زمینه تیره قرار گرفته است.

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.

نموداری با عنوان «روند ارزیابی عامل داده». جفت‌های ارزیابی Q&A با SQL مورد انتظار به مرحله‌ای از تولید وارد می‌شوند که SQL و نتایج را تولید می‌کند. OpenAI Evals با مقایسه‌ی نتایج تولیدشده و نتایج مورد انتظار از طریق مقایسه‌ی دیتافریم‌ها و کوئری‌های 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

قدردانی‌ها

تشکر ویژه از تیم‌های Data Productivity (بهره‌وری داده) و علم داده، و همچنین از کاربران بین‌وظیفه‌ای متعدد ما برای آزمایش‌ها و بازخوردهایشان.