Os coprogramadores de IA talvez não gerem tantos bugs quanto temiam o PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Co-programadores de IA talvez não gerem tantos bugs quanto se temia

Modelos de aprendizado de máquina que potencializam ferramentas de conclusão de código de última geração, como GitHub Copilot, podem ajudar os desenvolvedores de software a escrever códigos mais funcionais, sem torná-los menos seguros.

Esse é o resultado provisório de uma pesquisa, ainda que pequena, com 58 pessoas, conduzida por um grupo de cientistas da computação da Universidade de Nova York.

In um papel distribuído via ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt e Siddharth Garg contam como colocaram à prova a segurança do código-fonte criado com a ajuda de grandes modelos de linguagem (LLMs).

LLMs como a família OpenAI GPT foram treinados em grandes quantidades de dados de texto públicos ou código-fonte público no caso do Codex da OpenAI, um descendente do GPT e a base do Copilot do GitHub. Como tal, podem reproduzir erros cometidos no passado por programadores humanos, ilustrando a máxima “entra lixo, sai lixo”. Havia o temor de que essas ferramentas regurgitassem e sugerissem códigos ruins aos desenvolvedores, que os inseririam em seus projetos.

Além do mais, a segurança do código pode ser contextual: o código que é seguro isoladamente pode ser inseguro quando executado em uma sequência específica com outro software. Portanto, essas ferramentas de preenchimento automático podem oferecer sugestões de código que por si só são boas, mas conectadas a outro código, agora são vulneráveis ​​a ataques ou simplesmente quebradas. Dito isto, acontece que essas ferramentas podem não tornar os humanos piores em programação.

De certa forma, os pesquisadores estavam apagando o seu próprio fogo. Há cerca de um ano, dois dos mesmos cientistas da computação contribuíram para um artigo intitulado “Asleep at the Keyboard? Avaliando a segurança das contribuições de código do GitHub Copilot.” Esse trabalho encontrou cerca de cento 40 dos resultados do Copilot incluíam fraquezas potencialmente exploráveis ​​(CWEs).

“A diferença entre os dois artigos é que 'Asleep at the Keyboard' estava analisando a geração de código totalmente automatizada (sem humanos no circuito) e não tínhamos usuários humanos para comparar, então não podíamos dizer nada sobre como a segurança do Copilot em comparação com a segurança do código escrito por humanos”, disse Brendan Dolan-Gavitt, coautor de ambos os artigos e professor assistente no departamento de ciência da computação e engenharia da NYU Tandon, em um e-mail para O registro.

“O documento de estudo do usuário tenta resolver diretamente essas peças que faltam, fazendo com que metade dos usuários receba assistência do Codex (o modelo que alimenta o Copilot) e fazendo com que a outra metade escreva o código por conta própria. No entanto, também é mais restrito do que 'Asleep at the Keyboard': analisamos apenas uma tarefa e um idioma (escrever uma lista vinculada em C).”

No último relatório, “Implicações de segurança de assistentes de código de modelo de linguagem grande: um estudo de usuário”, um conjunto ligeiramente variado de pesquisadores da NYU reconhece que trabalhos anteriores falham em modelar realisticamente o uso de ferramentas baseadas em LLM, como o Copilot.

“Primeiro, esses estudos assumem que todo o código é gerado automaticamente pelo LLM (chamaremos isso de modo piloto automático)”, explicam os especialistas em seu artigo.

“Na prática, os LLMs de autocompletar código auxiliam os desenvolvedores com sugestões que eles escolherão aceitar, editar ou rejeitar. Isso significa que, embora os programadores propensos ao viés de automação possam ingenuamente aceitar conclusões com erros, outros desenvolvedores podem produzir códigos com menos erros usando o tempo economizado para corrigir erros.”

Em segundo lugar, eles observam que, embora tenha sido demonstrado que os LLMs produzem códigos com erros, os humanos também o fazem. Os bugs nos dados de treinamento LLM vieram de pessoas.

Portanto, em vez de avaliar os bugs do código gerado pelo LLM por si só, eles se propuseram a comparar como o código produzido por desenvolvedores humanos assistidos por modelos de aprendizado de máquina difere do código produzido pela programação trabalhando por conta própria.

Os cientistas da computação da NYU recrutaram 58 participantes da pesquisa – estudantes de graduação e pós-graduação em cursos de desenvolvimento de software – e os dividiram em um grupo de controle, que trabalharia sem sugestões, e um grupo assistido, que teve acesso a um sistema de sugestões customizado construído usando o OpenAI. API Codex. Eles também usaram o modelo Codex para criar 30 soluções para determinados problemas de programação como ponto de comparação. Este grupo de piloto automático funcionou principalmente como um segundo grupo de controle.

Tanto o grupo Assistido quanto o de Controle foram autorizados a consultar recursos da web, como Google e Stack Overflow, mas não pedir ajuda a terceiros. O trabalho foi feito no Visual Studio Code em um contêiner baseado na Web construído com código aberto Anubis.

Os participantes foram solicitados a completar um programa de lista de compras usando a linguagem de programação C porque “é fácil para os desenvolvedores expressarem inadvertidamente padrões de design vulneráveis ​​em C” e porque o conjunto de ferramentas do compilador C usado não verifica erros no mesmo grau que os conjuntos de ferramentas para linguagens modernas, como Go e Rust, sim.

Quando os pesquisadores analisaram manualmente o código produzido pelos grupos de Controle e Assistente, descobriram que, ao contrário do trabalho anterior, as sugestões de código de IA não pioraram as coisas em geral.

Parece claro, mas há detalhes

“Não encontramos nenhuma evidência que sugira que a assistência do Codex aumente a incidência de bugs de segurança”, afirmou o artigo, ao mesmo tempo em que observou que o pequeno tamanho da amostra do estudo significa que mais estudos são necessários. “Pelo contrário, há algumas evidências que sugerem que CWEs/LoC [linhas de código] diminuem com a assistência do Codex.”

“É difícil concluir isso com muita confiança estatística”, disse Siddharth Garg, pesquisador de segurança cibernética e professor associado do departamento de engenharia da NYU Tandon, em entrevista por telefone ao O registro.

É difícil concluir isso com muita confiança estatística

No entanto, disse ele, “os dados sugerem que os usuários do Copilot não estavam em situação muito pior”.

Dolan-Gavitt é igualmente cauteloso quanto às descobertas.

“A análise atual dos resultados do nosso estudo de usuários não encontrou nenhuma diferença estatisticamente significativa – ainda estamos analisando isso, inclusive qualitativamente, então eu não tiraria conclusões fortes disso, especialmente porque foi um estudo pequeno (58 usuários no total) e o os usuários eram todos estudantes, e não desenvolvedores profissionais”, disse ele.

“Ainda assim, podemos dizer que com estes utilizadores, nesta tarefa, o impacto na segurança de ter assistência de IA provavelmente não foi grande: se tivesse um impacto muito grande, teríamos observado uma diferença maior entre os dois grupos. Estamos fazendo um pouco mais de análise estatística para tornar isso preciso agora.”

Além disso, alguns outros insights surgiram. Uma delas é que os participantes do grupo Assistente foram mais produtivos, gerando mais linhas de código e completando uma fração maior das funções da tarefa.

“Os usuários do grupo Assistido passaram em mais testes funcionais e produziram mais código funcional”, disse Garg, acrescentando que resultados desse tipo podem ajudar as empresas que procuram ferramentas de codificação assistiva a decidir se devem implantá-las.

Outra é que os pesquisadores conseguiram distinguir o resultado produzido pelos grupos Controle, Assistido e Piloto Automático, o que pode acalmar preocupações sobre trapaça de poder de IA em ambientes educacionais.

Os especialistas também descobriram que as ferramentas de IA precisam ser consideradas no contexto de erros do usuário. “Os usuários fornecem avisos que podem incluir bugs, aceitam avisos de bugs que acabam nos programas 'concluídos' e também aceitam bugs que são removidos posteriormente”, diz o jornal. “Em alguns casos, os usuários também acabam com mais bugs do que o sugerido pelo modelo!”

Espere mais trabalho nesse sentido. ®

Carimbo de hora:

Mais de O registro