O OpenAI Codex é uma inteligência artificial desenvolvido pela instituição OpenAI em 2021 baseado no modelo de linguagem GPT-3, que analisa a linguagem natural (prompt engineering[1]) e gera um código de programação em resposta, para auxiliar não programador a criar aplicativos e websites.[2][3]

O Codex é um descendente do GPT-3 da OpenAI ajustado para uso em aplicativos de programação. A OpenAI lançou uma API para o Codex em uma versão beta.[4] Em março de 2023, a OpenAI fechou o acesso ao Codex,[5] mas, devido a apelos públicos de pesquisadores, a instituição reverteu a situação.[6] O modelo do Codex ainda pode ser usado por pesquisadores do programa de acesso à pesquisa da OpenAI.[7]

Recursos

editar

Com base no GPT-3, uma rede neural formada por textos, o Codex foi também formado por 159 gigabytes de código Python de 54 milhões de arquivos do GitHub.[8][9] Além de auxiliar na programação de aplicativos e websites, também alimenta o GitHub Copilot, uma ferramenta de autocomplemento de programação para IDE selecionados, como o Visual Studio Code e o Neovim.[4][1] Um caso de uso típico do Codex é um usuário digitar o comando (prompt engineering) na forma de um comentário python, como por exemplo:

"//compute the moving average of an array for a given window size"

"calcular a média variável de uma matriz para um determinado tamanho de janela" e, em seguida, usar a IA para sugerir um bloco de código que satisfaça esse prompt.[10] A OpenAI afirmou que o Codex pode concluir aproximadamente 37% das solicitações e tem como objetivo tornar a programação humana mais rápida, em vez de substituí-la. A instituição afirmou que a IA destaca-se no "mapeamento de problemas simples para códigos existentes", que eles descrevem como "provavelmente a parte menos divertida da programação".[11][12] Jeremy Howard, cofundador da Fast.ai, declarou que "o Codex é uma forma de escrever um código sem ter que escrever tanto código" e que "nem sempre está correto, mas está próximo o suficiente".[13] De acordo com um artigo escrito por pesquisadores da OpenAI, quando o Codex tentou um teste por 100 vezes, ele gerou soluções funcionais para 70,2% das solicitações.[14] A OpenAI afirma que o Codex pode criar um código em mais de uma dúzia de linguagens de programação, incluindo: Go, JavaScript, Perl, PHP, Ruby, Shell, Swift e, TypeScript (embora seja mais eficaz em Python).[4] De acordo com a VentureBeat, as demonstrações apresentadas pela OpenAI mostraram recursos impressionantes de resolução de correferência; foram capazes de criar um jogo de navegador em JavaScript e gerar gráficos de dados científicos usando matplotlib.[12] A instituição mostrou que esta IA pode interagir com serviços e aplicativos como: Mailchimp, Microsoft Word, Spotify e, Google Calendar.[12][15] A Microsoft está interessada em explorar os recursos do Codex.[15] Mais um exemplo, para criar um personagem no estilo Minecraft usando uma biblioteca que o Codex não conhece, basta descrever a biblioteca da API para a IA no prompt;[1] neste exemplo o Codex deve usar a API Simulated Player do Minecraft (biblioteca typescript para controlar um personagem no jogo através de comandos: mover, conversar, olhar o inventário, criar itens, etc).[1] Pode informar comandos específicos desta API para a IA usar e autocompletar o código no contexto:[1][16]

Comando:
/* Minecraft bot commands using the Simulated Player API. When the comment is
conversational, the bot will respond as a helpful Minecraft bot. Otherwise,
 it will do as asked.*/

// API REFERENCE:
// moveRelative(leftRight: number, backwardForward: number, speed?: number): void - Orders the simulated player to walk in the given direction relative to the player's current rotation (o jogador simulado ande na direção dada em relação à rotação atual do jogador).
// stopMoving(): void - Stops moving/walking/following if the simulated player is moving (Para de se mover/andar/seguir se o jogador simulado estiver se movendo).
// lookAtEntity(entity: Entity): void - Rotates the simulated player's head/body to look at the given entity (Gira a cabeça/corpo do jogador simulado para olhar para a entidade dada).
// jumpUp(): boolean - Causes the simulated player to jump (Faz o jogador simulado pular).
// chat(message: string): void - Sends a chat message from the simulated player (Envia uma mensagem de bate-papo do jogador simulado).
// listInventory(object: Block | SimulatedPlayer | Player): InventoryComponentContainer - returns a container enumerating all the items a player or treasure chest has (retorna um contêiner enumerando todos os itens que um jogador ou baú de tesouro tem).

/* Include some example usage of the API (Inclua alguns exemplo de usao da API) */
// Move left
bot.moveRelative(1, 0, 1);
// Stop!
bot.stopMoving();
// Move backwards for half a second
bot.moveRelative(0, -1, 1);
await setTimeout(() => bot.stopMoving(), 500);
// Move forward a bit

Resultado:
bot.moveRelative(0, 1, 1);
await setTimeout(() => bot.stopMoving(), 500);

Hiperparâmetros

editar

É possível ajustar o comportamento dos modelos com vários hiperparâmetros, como número de tokens e temperatura.[1] O hiperparâmetro temperatureinfluencia como o modelo pode mudar a cada comando, mesmo sendo a mesmo comando, se definir como 0 a IA deve fornecer a mesma resposta a cada vez dentro da mesma sessão.[1] O stop sequenceé útil para impedi-lo de gerar variações de código semelhante, basta definir a sequência de parada no comando/comentário na linguagem de programação desejada: por exemplo, #para Python e //para JavaScript.[1]

Problemas

editar

Demonstrativos da OpenAI mostraram falhas como a ineficiência de códigos e peculiaridades pontuais em algumas amostras de códigos.[12] Em uma entrevista com o The Verge, o diretor técnico da OpenAI, Greg Brockman, disse que "às vezes o Codex não sabe exatamente o que você está pedindo" e que isso pode exigir algumas tentativas e erros.[15] Os pesquisadores da instituição descobriram que o Codex tem dificuldades com solicitações de alto nível e de várias etapas, muitas vezes falhando ou produzindo um comportamento contra-intuitivo.[14]

Além disso, eles apontaram vários problemas de segurança, como excesso de confiança por parte de programadores novatos, preconceitos com base nos dados de treinamento e impactos na segurança devido a códigos vulneráveis.[14] A VentureBeat afirmou que, como o Codex é formado por dados públicos, ele pode ser vulnerável a "envenenamento de dados" por meio de uploads intencionais de códigos maliciosos.[12] De acordo com um estudo realizado por pesquisadores da Universidade de Nova Iorque aproximadamente 40% do código gerado pelo GitHub Copilot (que usa o Codex) em cenários relevantes para CWEs de alto risco incluíam falhas ou outras passíveis falhas de projeto.[17]

Direitos autorais

editar

A Free Software Foundation expressou preocupação com o fato de que os trechos de código gerados pelo Copilot e pelo Codex poderiam violar os direitos autorais, em particular a condição da GPL que exige que os trabalhos secundários sejam licenciados sob termos semelhantes.[18] As questões levantadas incluem se o treinamento em arquivos públicos se enquadra no uso justo ou não, como os desenvolvedores poderiam descobrir códigos gerados com violações, se os modelos de aprendizado de máquina poderiam ser considerados código-fonte modificável ou uma compilação de dados do treinamento e se os próprios modelos de aprendizado de máquina poderiam ser protegidos por direitos autorais e por quem.[18][19] Um estudo interno do GitHub descobriu que aproximadamente 0,1% do código gerado continha cópias diretas dos dados de treinamento. Em um exemplo, o modelo gerou o código de dados de treinamento implementando o algoritmo da raiz quadrada inversa rápida, incluindo comentários e um aviso de direitos autorais incorreto.[10] Em resposta, a OpenAI declarou que "a incerteza jurídica sobre as implicações de direitos autorais do treinamento de sistemas de IA impõe custos substanciais aos desenvolvedores de IA e, portanto, deve ser resolvida com propriedade".[10] As questões de direitos autorais do Codex foram comparadas ao processo judicial Authors Guild, Inc. v. Google, Inc., no qual os juízes decidiram que o uso de trechos de texto de milhões de livros digitalizados pelo Google Livros constituía uso justo.[10][20]

Referências

editar
  1. a b c d e f g h «How to get Codex to produce the code you want!» [Como fazer com que o Codex produza o código que você deseja!]. Prompt Engineering (em inglês). Consultado em 21 de janeiro de 2025 
  2. Arbulu, Rafael (11 de agosto de 2021). «OpenAI desenvolve ferramenta que traduz inglês para código-fonte». Olhar Digital. Consultado em 21 de janeiro de 2025 
  3. «OpenAI Codex». Comandos de Voz. Consultado em 21 de janeiro de 2025 
  4. a b c Zaremba, Wojciech (10 de agosto de 2021). «OpenAI Codex». OpenAI. Consultado em 3 de setembro de 2021 
  5. Kemper, Jonathan (22 de março de 2023). «OpenAI kills its Codex code model, recommends GPT3.5 instead». THE DECODER. Consultado em 29 de março de 2023 
  6. Logan Kilpatrick [@OfficialLoganK] (22 de março de 2023). «Hey Carolyn, we will continue to support Codex access via our Researcher Access Program. Sorry for any confusion and hopefully the research is going well!» (Tweet). Consultado em 8 de abril de 2023 – via Twitter 
  7. «Researcher Access Program application». openai.com. Consultado em 8 de abril de 2023 
  8. Wiggers, Kyle (8 de julho de 2021). «OpenAI warns AI behind GitHub's Copilot may be susceptible to bias». VentureBeat. Consultado em 3 de setembro de 2021 
  9. Alford, Anthony (31 de agosto de 2021). «OpenAI Announces 12 Billion Parameter Code-Generation AI Codex». InfoQ. Consultado em 3 de setembro de 2021 
  10. a b c d Anderson, Tim; Quach, Katyanna (6 de julho de 2021). «GitHub Copilot auto-coder snags emerge, from seemingly spilled secrets to bad code, but some love it». The Register. Consultado em 4 de setembro de 2021 
  11. Dorrier, Jason (15 de agosto de 2021). «OpenAI's Codex Translates Everyday Language Into Computer Code». SingularityHub. Consultado em 3 de setembro de 2021 
  12. a b c d e Dickson, Ben (16 de agosto de 2021). «What to expect from OpenAI's Codex API». VentureBeat. Consultado em 3 de setembro de 2021 
  13. Metz, Cade (9 de setembro de 2021). «A.I. Can Now Write Its Own Computer Code. That's Good News for Humans.». The New York Times. Consultado em 16 de setembro de 2021 
  14. a b c Chen, Mark; Tworek, Jerry; Jun, Heewoo; Yuan, Qiming; Pinto, Henrique Ponde de Oliveira; Kaplan, Jared; Edwards, Harri; Burda, Yuri; Joseph, Nicholas; Brockman, Greg; Ray, Alex (14 de julho de 2021). «Evaluating Large Language Models Trained on Code». arXiv:2107.03374  [cs] 
  15. a b c Vincent, James (10 de agosto de 2021). «OpenAI can translate English into code with its new machine learning software Codex». The Verge. Consultado em 3 de setembro de 2021 
  16. mrbullwinkle (20 de setembro de 2024). «Como usar os modelos codex para trabalhar com código - Azure OpenAI Service». Microsoft Learn. Consultado em 21 de janeiro de 2025 
  17. Pearce, Hammond; Ahmad, Baleegh; Tan, Benjamin; Dolan-Gavitt, Brendan; Karri, Ramesh (16 de dezembro de 2021). «Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions». arXiv:2108.09293  [cs.CR] 
  18. a b Krill, Paul (2 de agosto de 2021). «GitHub Copilot is 'unacceptable and unjust,' says Free Software Foundation». InfoWorld. Consultado em 3 de setembro de 2021 
  19. Robertson, Donald (28 de julho de 2021). «FSF-funded call for white papers on philosophical and legal questions around Copilot: Submit before Monday, August 23, 2021». Free Software Foundation. Consultado em 4 de setembro de 2021 
  20. Barber, Gregory (12 de julho de 2021). «GitHub's Commercial AI Tool Was Built From Open Source Code». WIRED. Consultado em 4 de setembro de 2021