Saltar para o conteúdo principal
OpenAI

Introdução

O Codex é utilizado diariamente por várias equipas técnicas da OpenAI, como Segurança, Engenharia de Produto, Frontend, API, Infraestrutura e Engenharia de Desempenho. As equipas utilizam-no para acelerar uma série de tarefas de engenharia, desde a compreensão de sistemas complexos e a refatoração de grandes bases de código até ao lançamento de novas funcionalidades e à resolução de incidentes em prazos apertados.

Com base em entrevistas com engenheiros da OpenAI e em dados internos de utilização, compilámos casos de utilização e práticas recomendadas que destacam a forma como o Codex ajuda as nossas equipas a avançar mais rapidamente, a melhorar a qualidade do trabalho e a gerir a complexidade em grande escala.


Caso de utilização 1: Compreensão do código

O Codex ajuda as nossas equipas a familiarizarem-se rapidamente com partes desconhecidas da base de código durante a integração, a depuração ou a investigação de um incidente.

Estas recorrem frequentemente ao Codex para identificar a lógica central de uma funcionalidade, mapear as relações entre serviços ou módulos, e rastrear o fluxo de dados ao longo de um sistema. Além disso, ajuda a identificar padrões de arquitetura ou lacunas na documentação que, de outra forma, exigiriam esforço manual considerável para gerar.

Durante a resposta a incidentes, o Codex ajuda os engenheiros a familiarizarem-se rapidamente com novas áreas ao revelar as interações entre componentes ou rastrear a forma como os estados de falha se propagam pelos sistemas.

Histórias das nossas equipas

«Quando corrijo um bug, uso o modo Perguntar para ver onde mais na base de código o mesmo problema pode surgir»
Engenheiro de Desempenho, Sistemas de Recuperação
Experimente utilizar o Codex para compreender código com estes exemplos de prompts:
  • Onde está implementada a lógica de autenticação neste repo?

  • Resume o fluxo de pedidos neste serviço, desde o ponto de entrada até à resposta.

  • Que módulos interagem com [inserir nome do módulo] e como são processadas as falhas?

Caso de utilização 2: Refatoração e migrações

O Codex é frequentemente utilizado para efetuar alterações que abrangem vários ficheiros ou pacotes. Por exemplo, quando os engenheiros atualizam uma API, alterando a forma como um padrão é implementado ou migrando para uma nova dependência, o Codex facilita a aplicação consistente dessas alterações.

É especialmente útil quando é necessário aplicar a mesma alteração a dezenas de ficheiros, ou quando a alteração exige o conhecimento da estrutura e das dependências que não são facilmente detetadas com uma expressão regular ou com a função «encontrar e substituir».

Também o utilizam para limpeza de código ao dividir módulos demasiado grandes, substituir padrões antigos por modernos ou preparar o código para melhor testabilidade.

Histórias das nossas equipas

«O Codex trocou todas as chamadas getUserById() legadas pelo nosso novo padrão de serviço e abriu o PR. Fez em minutos o que teria demorado horas».
Engenheiro de Backend, ChatGPT Web
Experimente o Codex para refatoração e migrações com este prompt:
  • Divide este ficheiro em módulos separados por área de interesse e gera testes para cada um deles.

  • Converte todo o acesso à base de dados baseado em callback para async/await.

Caso de utilização 3: Otimização de desempenho

O Codex é utilizado para identificar e lidar com pontos de estrangulamento no desempenho.

Durante trabalhos de afinação ou fiabilidade, os engenheiros fazem prompt ao Codex para analisar caminhos de código lentos ou que consomem muita memória, como loops ineficientes, operações redundantes ou consultas dispendiosas, e sugerir alternativas otimizadas, o que muitas vezes resulta em ganhos significativos em termos de eficiência e fiabilidade.

O Codex também é utilizado para suportar o bom estado do código ao identificar padrões de risco ou descontinuados que ainda se encontram em uso. As nossas equipas recorrem ao Codex para ajudar a reduzir a dívida técnica a longo prazo e prevenir proativamente regressões.

Histórias das nossas equipas

«Utilizo o Codex para detetar chamadas repetidas e dispendiosas à DB. É excelente para identificar percursos críticos e elaborar consultas em lote que posso otimizar posteriormente».
Engenheiro de Infraestrutura, Fiabilidade da API
Experimente utilizar o Codex para otimizar o desempenho com estes exemplos de prompts:
  • Otimiza este ciclo para melhorar a eficiência da memória e explica por que razão a tua versão é mais rápida.

  • Identifica operações dispendiosas repetidas neste processador de pedidos e sugere oportunidades de armazenamento em cache.

  • Sugere uma forma mais rápida de agrupar consultas da DB nesta função.

Caso de utilização 4: Melhorar a cobertura de testes

O Codex ajuda os engenheiros a escrever testes mais rapidamente, especialmente em locais onde a cobertura é insuficiente ou inexistente.

Ao trabalhar numa correção de bug ou numa refatoração, os engenheiros pedem frequentemente ao Codex para sugerir testes que abranjam casos extremos ou caminhos de falha prováveis. No caso de código novo, o Codex pode gerar testes unitários ou de integração com base na assinatura da função e na lógica circundante.

O Codex é particularmente útil para identificar condições de limite, como entradas vazias, comprimento máximo ou estados invulgares e válidos, que muitas vezes escapam aos testes iniciais.

Histórias das nossas equipas

«À noite, indico ao Codex os módulos com baixa cobertura e, de manhã, encontro PRs com testes unitários executáveis».
Engenheiro de Frontend, ChatGPT Desktop
Experimente utilizar o Codex para otimizar o desempenho com estes exemplos de prompts:
  • Escreve testes unitários para esta função, incluindo casos extremos e percursos de falha.

  • Gera um teste baseado em propriedades para este utilitário de ordenação.

  • Expande este ficheiro de teste para abranger cenários em falta relacionados com entradas nulas e estados inválidos.

Caso de utilização 5: Aumentar a velocidade de desenvolvimento

O Codex ajuda as equipas a avançar mais rapidamente ao acelerar o início e o fim do ciclo de desenvolvimento.

Ao lançar uma novo funcionalidade, os engenheiros utilizam-na para criar uma estrutura básica, gerando pastas, módulos e esboços de API para obter código executável rapidamente sem ter de programar manualmente cada elemento.

À medida que o lançamento dos projetos se aproxima, o Codex ajuda a cumprir prazos apertados ao processar tarefas menores e essenciais, como a triagem de bugs, a resolução de lacunas de implementação de última hora, e a geração de scripts de implementação, hooks de telemetria ou ficheiros de configuração.

Também é utilizado para transformar feedback de produtos em código inicial. Os engenheiros colam frequentemente um pedido ou uma especificação do utilizador e pedem ao Codex para gerar um rascunho inicial a que podem voltar mais tarde para aperfeiçoar.

«Passei o dia inteiro em reuniões e, mesmo assim, consegui intercalar 4 PRs porque o Codex estava a funcionar em segundo plano».
Engenheiro de Produto, ChatGPT Enterprise
Experimente utilizar o Codex para acelerar a velocidade de desenvolvimento com estes exemplos de prompts:
  • Cria uma estrutura para uma nova rota de API para POST /events com validação básica e registo.

  • Gera um hook de telemetria para rastrear sucesso/falha do novo fluxo de integração, utilizando este modelo [inserir um exemplo do seu código de telemetria].

  • Cria uma implementação preliminar com base nesta especificação: [inserir a especificação ou o feedback do produto].

Caso de utilização 6: Manter-se no fluxo

O Codex ajuda os nossos engenheiros a manterem-se produtivos quando as suas agendas são fragmentadas e repletas de interrupções.
Este é utilizado para registar trabalhos inacabados, transformar notas em protótipos funcionais ou derivar tarefas exploratórias que podem ser retomadas mais tarde. Isto facilita a interrupção e a retoma do trabalho sem perder o contexto, especialmente quando estão de serviço ou têm muitas reuniões.

«Se detetar uma correção rápida, inicio uma tarefa no Codex em vez de trocar de branch e revejo o PR quando tiver tempo».
Engenheiro de Infraestrutura, ChatGPT API
Experimente utilizar o Codex para se manter no fluxo criativo com estes exemplos de prompts:

Caso de utilização 7: Exploração e geração de ideias

O Codex também é útil para trabalho de natureza aberta, como encontrar soluções alternativas ou validar decisões de design. Pode escrever um prompt para encontrar diferentes formas de resolver um problema, explorar padrões desconhecidos ou testar suposições em condições de pressão. Isto ajuda a identificar compromissos, expandir as opções de design e afinar as escolhas de implementação.

É igualmente utilizado para identificar bugs relacionados. Perante um problema conhecido ou um método obsoleto, o Codex consegue identificar padrões semelhantes noutras partes do código, facilitando a deteção de regressões ou a conclusão do trabalho de limpeza.

«O Codex ajuda-me a resolver o problema de arranque, bastando colar as especificações e a documentação para que este crie uma estrutura de código ou me mostre o que esqueci».
Engenheiro de Produto, ChatGPT Desktop
Experimente utilizar o Codex para explorar e gerar ideias com estes exemplos de prompts:
  • Como é que isto funcionaria se o sistema fosse orientado por eventos em vez de pedido/resposta?

  • Encontra todos os módulos que criam manualmente cadeias de caracteres SQL em vez de utilizar o nosso gerador de consultas.

  • Reescreve isto num estilo mais funcional, evitando mutações e efeitos secundários.


Práticas recomendadas

O Codex funciona melhor quando lhe é dada estrutura, contexto e margem para iteração. Seguem-se alguns dos hábitos que as equipas da OpenAI estão a cultivar para obter valor consistente do Codex no trabalho diário.

Comece com o modo Perguntar

Para grandes alterações, comece por escrever um prompt a pedir ao Codex um plano de implementação com o modo Perguntar, que servirá depois de base para os prompts de seguimento quando mudar para o modo Código. Este fluxo de dois passos mantém o Codex focado e ajuda a evitar erros no output. O Codex funciona melhor com tarefas bem delimitadas, cuja conclusão iria demorar cerca de uma hora para si ou um colega, ou cuja implementação exigiria algumas centenas de linhas de código. À medida que os modelos melhoram, é de se esperar que o tamanho das tarefas que podem assumir aumente.

Melhorar de forma iterativa o ambiente de desenvolvimento do Codex

Definir um script de startup, variáveis de ambiente e acesso à Internet reduz significativamente a taxa de erros do Codex. À medida que executa tarefas, procure erros de compilação que possam ser corrigidos na configuração do ambiente do Codex. Este processo pode exigir algumas iterações, mas oferece ganhos significativos em termos de eficiência a longo prazo.

Estruture o seu prompt como se estivesse a escrever um pedido no GitHub

O Codex responde melhor quando os prompts refletem a forma como descreveria uma alteração num PR ou num pedido. Isto significa incluir caminhos de ficheiros, nomes de componentes, diffs e excertos de documentação, quando relevante. Utilizar prompts com padrões como «Implementa isto da mesma forma que é feito em [módulo X]» melhora os resultados.

Utilize a fila de tarefas do Codex como um backlog simplificado

Crie tarefas para registar ideias tangenciais, trabalhos parciais ou correções incidentais. Não há pressão para criar um PR completo de uma só vez. O Codex funciona bem como uma área de preparação a que pode recorrer quando voltar a estar concentrado.

Utilize o ficheiro AGENTS.md para fornecer contexto persistente

Mantenha um ficheiro AGENTS.md para ajudar o Codex a funcionar de forma mais eficaz no seu repo em todos os prompts. Estes ficheiros incluem normalmente convenções de nomenclatura, lógica de negócio, peculiaridades conhecidas ou dependências que o Codex não consegue inferir só partir do código. Saiba mais sobre como estruturar o seu ficheiro AGENTS.md na documentação.

Aproveite «Melhor de N» para melhorar o resultado

A funcionalidade Melhor-de-N permite-lhe gerar simultaneamente várias respostas para uma única tarefa, de modo a explorar rapidamente várias soluções e selecionar a melhor. No caso de tarefas mais complexas, pode rever várias iterações e combinar partes de diferentes respostas para obter um resultado mais sólido.


Olhar em frente

O Codex ainda está em pré-visualização para investigação, mas já tem um impacto significativo na forma como desenvolvemos, ajudando-nos a avançar mais rápido, a escrever código de melhor qualidade e a assumir tarefas que, de outra forma, nunca teriam sido consideradas prioritárias.

Estamos entusiasmados com o potencial futuro, à medida que os nossos modelos melhoram e o Codex se integra cada vez mais nos fluxos de trabalho. Mal podemos esperar por descobrir formas ainda mais poderosas de desenvolver software com o Codex. Continuaremos a partilhar o que aprendermos ao longo do caminho.

Quer levar a IA para o seu negócio?

Saiba como ajudamos empresas a criar estratégias de IA escaláveis e responsáveis.