ChatGPT transforma-se em ChatRepair para automatizar a correção de bugs gastando bem menos

kaspersky-testa-a-capacidade-do-chatgpt-de-detectar-links-de-phishing

O ChatGPT, o chatbot OpenAI que responde a instruções escritas, está sendo bastante utilizado para reparar bugs de software sem gastar muito. Os primeiros expementos ocorrem na Universidade de Illinois Urbana-Champaign que passou a adotar este recurso e gastar pouco. Assim, o ChatGPT transforma-se em ChatRepair para automatizar a correção de bugs gastando bem menos.

Chunqiu Steven Xia, assistente de pesquisa de pós-graduação, e Lingming Zhang, professor associado de ciência da computação, revelam o final surpreendente no título de seu recente artigo de pré-impressão, “Keep the Conversation Going: Fixing 162 of 337 bugs for $ 0,42 each using ChatGPT .”

Você certamente poderia pagar mais. Os dois pesquisadores decidiram melhorar o Reparo Automatizado de Programas (APR), uma disciplina emergente focada no desenvolvimento de técnicas para corrigir erros de programação automaticamente.

As técnicas tradicionais de APR, eles explicam em seu artigo, tendem a produzir patches que carecem de variedade e requerem muitos ajustes manuais. Trabalhos mais recentes com LLMs produziram melhores resultados, mas ainda usaram a mesma técnica subjacente – gerando muitos patches a partir de uma amostra de entrada inicial e, em seguida, validando cada um.

ChatGPT transforma-se em ChatRepair para automatizar a correção de bugs gastando bem menos

Essa abordagem, eles afirmam, produz patches incorretos repetidos e falha em aprender com suas falhas. E isso tem um custo muito real em termos de tempo e recursos computacionais.

ChatGPT transforma-se em ChatRepair para automatizar a correção de bugs gastando bem menos

Xia e Zhang desenvolveram um processo automatizado de reparo de bugs que eles chamam de ChatRepair, que incorpora informações sobre falhas de teste de software e aprende com informações de conversas, bem como sucessos e falhas, ao longo do caminho. É um pouco mais complicado do que dizer “Corrija seus bugs, HAL” – como pode ser visto na ilustração que acompanha o artigo – mas talvez seja preferível a uma mensagem de erro enigmática.

Diagrama do fluxo de conversa do ChatRepair – Clique para ampliar

“Em vez de gerar patches diretamente com base no código de bugs, como fazem as técnicas APR baseadas em LLM, o ChatRepair também fornece informações valiosas sobre falhas de teste para ajudar ainda mais os LLMs na geração de patches”, explicam os boffins em seu artigo.

“Além disso, em vez de amostrar continuamente a partir do mesmo prompt como as técnicas anteriores de APR baseadas em LLM, o ChatRepair mantém o controle do histórico de conversas e aprende mais com as tentativas anteriores de correção do mesmo bug com falha e sucesso por meio de prompts.”

O código pode estar errado, mas é útil

Ao incorporar patches incorretos com dados de falha de teste relacionados, Xia e Zhang mostraram que poderiam refinar os prompts alimentados ao ChatRepair à medida que o modelo elaborava melhorias no código. Isso evita cometer os mesmos erros repetidamente, ao mesmo tempo em que gera variações em patches plausíveis que aumentam a probabilidade de uma correção correta.

Em um e-mail para The Register – não escrito pelo ChatGPT, temos certeza – Xia disse que a inclusão de dados de falha de teste contribuiu significativamente para a melhoria do ChatRepair.

“Observamos que a inclusão de informações úteis, como erro de falha de teste ou até mesmo o próprio nome do teste com falha, pode fornecer informações adicionais, como o tipo de bug (por exemplo, exceção de ponteiro nulo) e o comportamento correto esperado do código”, explicou ele. “Em comparação com as ferramentas APR anteriores que não fazem uso de tais informações de falha de teste, o ChatRepair aproveita a poderosa capacidade de compreensão do ChatGPT para corrigir mais bugs.”

Xia disse que o valor de incorporar essas informações pode ser visto em uma comparação de linha de base que envolveu a execução do ChatGPT sem dados de falha de teste. O acesso aos dados de falha de teste aumentou o número de bugs corrigidos em mais de 40%, disse ele.

Outras vantagens deste uso

Melhor ainda, ao não gerar repetidamente os mesmos patches ineficazes, os pesquisadores podem evitar o custo de chamadas de API redundantes e tempo de execução de GPU desperdiçado – uma preocupação comum entre aqueles que exploram como podem integrar os modelos da OpenAI em seus produtos.

“Para manter o custo baixo, aproveitamos o aspecto conversacional do ChatGPT, onde ele é capaz de acompanhar os resultados anteriores e ajustar sua geração futura com base no histórico anterior e no feedback fornecido por nós (informações de falha de teste)”, explicou Xia.

“Usamos essa capacidade para fornecer ao ChatGPT patches incorretos gerados anteriormente, portanto, podemos evitar a amostragem repetida dos mesmos patches incorretos repetidamente e reduzir o número de amostras e o custo para corrigir o bug”.

Xia disse que, embora a APR pretenda automatizar totalmente o reparo de bugs de software com o mínimo de esforço do desenvolvedor, esse objetivo ainda está muito longe.

“O ChatRepair mostrou pela primeira vez que esse processo de reparo pode ser uma conversa”, disse Xia. “Acredito que podemos obter um desempenho ainda melhor tendo um desenvolvedor humano no circuito também para acelerar o processo de reparo.”

“Para fazer isso, o trabalho futuro deve definitivamente se concentrar mais na dinâmica entre LLMs poderosos como ChatGPT e desenvolvedores humanos para adicionar intuição humana e compreensão da base de código para uma melhor correção combinada de bugs”.