Pular para o conteúdo principal
OpenAI

29 de janeiro de 2026

Engenharia

Por dentro do agente de dados interno da OpenAI

Por Bonnie Xu, Aravind Suresh e Emma Tang

Carregando…

Os dados impulsionam a forma como os sistemas aprendem, os produtos evoluem e as empresas tomam decisões. Mas obter respostas de forma rápida, correta e com o contexto adequado costuma ser mais difícil do que deveria. Para facilitar esse processo à medida que a OpenAI cresce, criamos nosso próprio agente de dados de IA personalizado, desenvolvido internamente, que explora e raciocina sobre nossa própria plataforma.

Nosso agente é uma ferramenta personalizada, de uso exclusivamente interno (não uma oferta externa), desenvolvida especificamente para os dados, permissões e fluxos de trabalho da OpenAI. Estamos mostrando como construímos e usamos essa ferramenta para ajudar a revelar exemplos reais e impactantes de como a IA pode apoiar o trabalho diário em nossas equipes. As ferramentas da OpenAI que usamos para construir e executar o projeto (Codex, nosso modelo principal GPT‑5, a API Evals(abre em uma nova janela) e a API Embeddings(abre em uma nova janela)) são as mesmas ferramentas que disponibilizamos para desenvolvedores em todo o mundo.

Nosso agente de dados Permite que os funcionários passem da dúvida à compreensão em minutos, não em dias. Isso facilita a coleta de dados e a realização de análises detalhadas em todas as funções, não apenas pela nossa equipe de dados. Hoje, equipes de Engenharia, Ciência de Dados, Estratégia de Mercado, Finanças e Pesquisa da OpenAI contam com o agente para responder a perguntas de dados de alto impacto. Por exemplo, pode ajudar a responder perguntas sobre como avaliar lançamentos e compreender a saúde dos negócios, tudo isso através do formato intuitivo da linguagem natural. O agente combina o conhecimento em nível de tabela, baseado no Codex, com o contexto do produto e da organização. Seu sistema de memória de aprendizado contínuo significa que ele também melhora a cada vez que é usado.

Captura de tela mostrando um usuário solicitando o ChatGPT WAU em 6 de outubro de 2025, comparada com o DevDay de 2023. O agente reporta ≈800 milhões de usuários ativos semanais (WAU) para 2025 e ≈100 milhões para 2023, com notas indicando uma variação de +700 milhões e um aumento de aproximadamente 8 vezes, seguidas de contexto explicativo.

Neste post, vamos explicar por que precisávamos de um agente de dados de IA personalizado, o que torna seu contexto de dados enriquecido por código e sua capacidade de autoaprendizagem tão úteis, e as lições que aprendemos ao longo do processo.

Por que precisávamos de uma ferramenta personalizada?

A plataforma de dados da OpenAI atende a mais de 3.500 usuários internos que trabalham nas áreas de Engenharia, Produto e Pesquisa, abrangendo mais de 600 petabytes de dados em 70 mil conjuntos de dados. Nesse tamanho, simplesmente encontrar a tabela certa pode ser uma das partes mais demoradas da análise.

Como disse um usuário interno:

“Temos muitas tabelas bastante semelhantes, e eu passo muito tempo tentando descobrir as diferenças entre elas e qual usar.” Algumas incluem usuários desconectados, outras não. Algumas têm campos sobrepostos; é difícil distinguir uma da outra.”

Mesmo com as tabelas corretas selecionadas, produzir resultados corretos pode ser um desafio. Os analistas devem analisar os dados das tabelas e os relacionamentos entre elas para garantir que as transformações e os filtros sejam aplicados corretamente. Modos de falha comuns — junções muitos-para-muitos, erros de pushdown de filtro e valores nulos não tratados — podem invalidar resultados silenciosamente. Na escala da OpenAI, os analistas não deveriam precisar perder tempo depurando a semântica do SQL ou o desempenho das consultas: seu foco deveria ser definir métricas, validar hipóteses e tomar decisões baseadas em dados.

Captura de tela do código SQL que define duas CTEs — order_enriched e monthly_segment — que unem dados geográficos do cliente, derivam campos de mês do pedido e calculam agregados mensais, como contagem de pedidos, receita bruta, receita com impostos e média de dias entre o envio e o recebimento.

Esta instrução SQL tem mais de 180 linhas. Não é fácil saber se estamos unindo as tabelas corretas e consultando as colunas corretas.

Como funciona

Vamos analisar o que é o nosso agente, como ele seleciona o contexto e como ele se aprimora continuamente.

Nosso agente é baseado no GPT‑5.2 e foi projetado para raciocinar sobre a plataforma de dados da OpenAI. Está disponível em todos os locais onde os funcionários já trabalham: como um agente do Slack, por meio de uma interface web, dentro de IDEs, no Codex CLI via MCP(abre em uma nova janela) e diretamente no aplicativo interno ChatGPT da OpenAI por meio de um conector MCP(abre em uma nova janela).

Diagrama intitulado "Como funciona o agente de dados". Os pontos de entrada — Agent-UI, Local Agent-MCP, Remote Agent-MCP e Slack Agent — alimentam uma Agent-API. A API conecta-se ao conhecimento de dados internos e ao contexto da empresa, sincroniza-se com um data warehouse e fontes de plataforma e troca solicitações com o GPT-5.2. modelo via Agent-MCP.

Os usuários podem fazer perguntas complexas e abertas que normalmente exigiriam várias rodadas de exploração manual. Considere este exemplo de pergunta, que usa um conjunto de dados de teste: “Para viagens de táxi em Nova York, quais pares de CEPs de partida e chegada são os menos confiáveis, com a maior diferença entre os tempos de viagem típicos e os tempos de viagem no pior cenário, e quando ocorre essa variabilidade?”

O agente realiza a análise de ponta a ponta, desde a compreensão da questão até a exploração dos dados, execução de consultas e síntese das conclusões.

Captura de tela mostrando um usuário perguntando quais pares de CEPs de embarque e desembarque de táxi em Nova York são os mais "pouco confiáveis". O agente explica usando ~21 mil viagens de samples.nyctaxi.trips, Define o caso típico (p. 50) versus o pior caso (p. 95), aplica filtros e descreve como identifica quando ocorreu a viagem mais longa de cada par de CEPs.

A resposta do agente à pergunta.

Uma das superpotências do agente é a sua capacidade de raciocinar sobre os problemas. Em vez de seguir um roteiro fixo, o agente avalia seu próprio progresso. Se um resultado intermediário parecer incorreto (por exemplo, se tiver zero linhas devido a uma junção ou filtro incorreto), o agente investiga o que deu errado, ajusta sua abordagem e tenta novamente. Ao longo de todo esse processo, o contexto completo é mantido e os aprendizados são aplicados entre as etapas. Esse processo de autoaprendizagem em circuito fechado transfere a iteração do usuário para o próprio agente, possibilitando resultados mais rápidos e análises de qualidade consistentemente superior aos fluxos de trabalho manuais.

Captura de tela de um fluxo de trabalho de tarefas mostrando o plano passo a passo de um agente de IA para analisar a duração de viagens de táxi em Nova York. Inclui objetivos, buscas internas, inspeção de esquema, trechos de código e raciocínio sobre o cálculo de spreads p50/p95, identificação de pares de CEP não confiáveis e planejamento de consultas SQL.

O raciocínio do agente para identificar os pares de táxi mais problemáticos para embarque e desembarque em Nova York.

O agente abrange todo o fluxo de trabalho de análise: descoberta de dados, execução de SQL e publicação de notebooks e relatórios. Compreende o conhecimento interno da empresa, consegue pesquisar informações externas na web e melhora com o tempo através do uso e da memorização.

O contexto é tudo.

Respostas de alta qualidade dependem de um contexto rico e preciso. Sem contexto, mesmo modelos robustos podem produzir resultados incorretos, como estimar erroneamente o número de usuários ou interpretar erroneamente a terminologia interna.

Captura de tela de um usuário perguntando: "Qual foi o número de usuários ativos diários (DAU) conectados ao ChatGPT Image Gen nos últimos 30 dias?", com uma linha de status abaixo mostrando que o agente está "Trabalhando há 22 minutos e 41 segundos", indicando uma consulta de longa duração em andamento.

O agente sem memória é incapaz de realizar consultas eficazes.

Captura de tela mostrando um usuário perguntando: “Qual foi o DAU do ChatGPT Imagens com login nos últimos 30 dias?” Abaixo da mensagem, uma linha de status diz “Worked for 1m 22s,” indicando que a consulta ainda está em execução e está demorando muito para ser concluída.

A memória do agente permite consultas mais rápidas, localizando as tabelas corretas.

Para evitar esses modos de falha, o agente é construído em torno de múltiplas camadas de contexto que o fundamentam nos dados e no conhecimento institucional da OpenAI.

Diagrama intitulado “Camadas de contexto do agente de dados” mostrando seis níveis empilhados: 1) Uso da tabela, 2) Anotações humanas, 3) Enriquecimento do Codex, 4) Conhecimento institucional, 5) Memória e 6) Contexto de tempo de execução. Cada camada aparece como uma barra horizontal em formato de pirâmide.

Camada #1: Utilização da tabela

  • Fundamentação de metadados: O agente se baseia em metadados de esquema (nomes de colunas e tipos de dados) para orientar a escrita de SQL e usa a linhagem da tabela (por exemplo, relacionamentos entre tabelas anteriores e posteriores) para fornecer contexto sobre como as diferentes tabelas se relacionam.
  • Inferência de consultas: a ingestão de consultas históricas ajuda o agente a entender como escrever suas próprias consultas e quais tabelas são normalmente unidas.

Camada #2: Anotações Humanas

  • Descrições selecionadas de tabelas e colunas fornecidas por especialistas do domínio, capturando a intenção, a semântica, o significado comercial e as limitações conhecidas que não são facilmente inferidas a partir de esquemas ou consultas anteriores.

Os metadados por si só não são suficientes. Para realmente diferenciar as tabelas, é preciso entender como elas foram criadas e qual a sua origem.

Camada #3: Enriquecimento do Codex

  • Ao derivar uma definição de tabela em nível de código, o agente constrói uma compreensão mais profunda do que os dados realmente contêm. 
    • As nuances sobre o que está armazenado na tabela e como isso é derivado de um evento analítico fornecem informações adicionais. Por exemplo, pode fornecer contexto sobre a unicidade dos valores, a frequência com que os dados da tabela são atualizados, o escopo dos dados (por exemplo, se a tabela exclui determinados campos, ela tem esse nível de granularidade), etc.
  • Isso proporciona um contexto de uso aprimorado, mostrando como a tabela é utilizada além do SQL no Spark, Python e outros sistemas de dados.
  • Isso significa que o agente consegue distinguir entre tabelas que parecem semelhantes, mas diferem em aspectos cruciais. Por exemplo, pode indicar se uma tabela inclui apenas tráfego ChatGPT de primeira parte. Esse contexto também é atualizado automaticamente, mantendo-se sempre em dia sem necessidade de manutenção manual.
Diagrama intitulado “Fluxo de conhecimento enriquecido pelo Codex”. As tabelas populares alimentam diversas tarefas do Codex, que extraem detalhes da base de código da OpenAI, incluindo a finalidade da tabela, granularidade e chaves primárias, padrões de uso subsequentes, opções de tabelas alternativas e atualização dos dados.

Camada #4: Conhecimento Institucional 

  • O agente pode acessar o Slack, o Google Docs e o Notion, que capturam o contexto crítico da empresa, como lançamentos, incidentes de confiabilidade, nomes de código internos e ferramentas, além das definições canônicas e da lógica de computação para métricas-chave.
  • Esses documentos são ingeridos, incorporados e armazenados com metadados e permissões. Um serviço de recuperação gerencia o controle de acesso e o armazenamento em cache em tempo de execução, permitindo que o agente obtenha essas informações de forma eficiente e segura.
Captura de tela de um usuário perguntando por que o uso do conector caiu em dezembro. O agente explica que a queda ocorreu devido a um problema de registro de logs que começou em 13 de novembro de 2025, causando uma subnotificação do uso após o lançamento do ChatGPT 5.1. Os dados de telemetria legados ficaram vazios até que um evento mais recente se tornou a fonte da verdade.

Camada #5: Memória

  • Quando o agente recebe correções ou descobre nuances sobre determinadas questões de dados, ele consegue salvar esses aprendizados para a próxima vez, permitindo que ele melhore constantemente junto com seus usuários. 
    • Como resultado, as respostas futuras partem de uma base mais precisa, em vez de se depararem repetidamente com os mesmos problemas.
    • O objetivo da memória é reter e reutilizar correções, filtros e restrições não óbvias que são essenciais para a correção dos dados, mas difíceis de inferir apenas a partir das outras camadas. 
    • Por exemplo, em um caso, o agente não sabia como filtrar um experimento analítico específico (ele dependia da correspondência com uma string específica definida em um portão de experimento). A memória foi crucial nesse processo para garantir que o filtro fosse capaz de funcionar corretamente, em vez de tentar encontrar correspondências de strings de forma imprecisa.
  • Quando você fornece uma correção ao agente ou quando ele extrai uma lição da sua conversa, ele lhe sugerirá que salve essa informação para a próxima vez. 
    • As memórias também podem ser criadas e editadas manualmente pelos usuários.
    • As memórias são delimitadas em níveis global e pessoal, e as ferramentas do agente facilitam a sua edição.
Uma notificação em forma de banner mostra a mensagem "O agente de dados deseja salvar 2 aprendizados na memória", com um item rotulado como "Métricas de nível superior do ChatGPT" e uma mensagem de confirmação à direita que diz "Salvo na memória global" com uma marca de seleção verde.

Camada #6: Contexto de tempo de execução

  • Quando não existe contexto prévio para uma tabela ou quando as informações existentes estão desatualizadas, o agente pode enviar consultas em tempo real ao data warehouse para inspecionar e consultar a tabela diretamente. Isso permite validar schemas, entender os dados em tempo real e responder de forma adequada.
  • O agente também é capaz de se comunicar com outros sistemas da Plataforma de Dados (serviço de metadados, Airflow, Spark) conforme necessário para obter um contexto de dados mais amplo que exista fora do data warehouse.

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(abre em uma nova janela) and stored for retrieval. At query time, the agent pulls only the most relevant embedded context via retrieval-augmented generation(abre em uma nova janela) (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 intitulado “Recuperação de contexto no agente de dados”. Camadas de pré-processamento offline — uso de tabelas, anotações humanas, enriquecimento do Codex, conhecimento institucional e memória — alimentam os embeddings RAG. A recuperação em tempo real mostra o agente consultando um banco de dados por meio de pesquisa semântica ou recuperação exata de texto para produzir contexto em tempo de execução.

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.

Barra de entrada de dados na interface do usuário com o texto de exemplo "Faça uma pergunta sobre dados". Abaixo, há um botão com a etiqueta "Usar um fluxo de trabalho" e, à direita, ícones de microfone e de envio. O balcão tem cantos arredondados e fica sobre um fundo escuro.

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(abre em uma nova janela) 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 intitulado “Pipeline de avaliação do agente de dados”.agente A avaliação de perguntas e respostas, combinada com o SQL esperado, alimenta uma etapa de geração que produz SQL e resultados. O OpenAI Evals compara os resultados gerados com os resultados esperados usando comparação de dataframes e SQL, gerando uma pontuação e uma justificativa.

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.

Autoria

Bonnie Xu, Aravind Suresh, Emma Tang

Agradecimentos

Um agradecimento especial às equipes de Produtividade de Dados e Ciência de Dados, bem como aos nossos diversos usuários multifuncionais, por suas experimentações e feedback.