10 pontos por GN⁺ 2024-04-04 | 3 comentários | Compartilhar no WhatsApp
  • O SWE-agent corrige bugs e issues em repositórios reais do GitHub ao transformar modelos de linguagem (LMs), como o GPT-4, em agentes de engenharia de software
  • Resolveu 12,29% das issues em todo o conjunto de testes SWE-bench, alcançando o melhor desempenho no conjunto completo de testes

Interface Agente-Computador (ACI)

  • Esses resultados foram alcançados ao projetar comandos e formatos de feedback centrados em LM para facilitar que o agente navegue pelo repositório, visualize arquivos de código, edite e execute.
  • Isso é chamado de Interface Agente-Computador (ACI), e o repositório SWE-agent foi criado para permitir iterar facilmente sobre o design de ACI para agentes de programação em nível de repositório.
  • Mostra que um bom design de ACI traz resultados muito melhores ao usar agentes.

Configuração

  • Instale o Docker e inicie o Docker localmente.
  • Instale o Miniconda e crie o ambiente swe-agent usando conda env create -f environment.yml.
  • Ative-o com conda activate swe-agent.
  • Execute ./setup.sh para criar a imagem Docker do swe-agent.
  • Crie um arquivo keys.cfg na raiz deste repositório e insira as chaves de API necessárias e o token do GitHub.

Como usar

  • O pipeline do SWE-agent tem duas etapas. A primeira é a etapa de inferência, que recebe uma issue do GitHub como entrada e retorna um pull request tentando resolvê-la.
  • A segunda etapa só é possível para issues presentes no benchmark SWE-bench e é a etapa de avaliação, que verifica se o pull request gerado realmente resolveu a issue.

Avaliação

  • Esta etapa só é possível para issues do conjunto SWE-bench.
  • Para avaliar o pull request gerado, vá até o diretório evaluation/ e execute ./run_eval.sh .

Opinião do GN⁺

  • O SWE-agent apresenta uma abordagem inovadora que amplia as possibilidades de automação no processo de desenvolvimento de software ao usar modelos de linguagem para resolver issues reais do GitHub.
  • Essa tecnologia tem potencial para permitir que desenvolvedores saiam de tarefas repetitivas de correção de bugs e se concentrem em resolver problemas mais criativos e complexos.
  • Ao enfatizar a importância do design de ACI, destaca a relevância de projetar interfaces que otimizem a interação entre máquinas e humanos.

3 comentários

 
botplaysdice 2024-04-05

Se esse tipo de agent trabalhar até fazendo perguntas assim para o desenvolvedor, parece que pode ser realmente muito bom.

"Transformei o método de reprodução descrito no bug report em código de teste para reproduzir o problema. Você pode dar uma olhada neste código para ver se foi isso mesmo que eu entendi?"

"Em vez deste design, acho que se refatorarmos assim e assim dá para reduzir 20.312 linhas de código no projeto como um todo, do you approve?"

 
fastkoder 2024-04-04

Parece ser um open source bem interessante.

 
GN⁺ 2024-04-04
Comentários no Hacker News
  • Comentário sobre relatórios de bug:

    • A demonstração mostra um relatório de bug claro sobre operações com matrizes.
    • A maioria dos relatórios de bug reais é ambígua, no estilo "cliquei em X e Y aconteceu".
    • A dificuldade de corrigir bugs está em descobrir a causa.
    • Sabemos que LLMs conseguem corrigir falhas simples, mas fica a dúvida sobre o que isso de fato prova.
    • Pergunta se alguém analisou o artigo em detalhe e quais seriam as diferenças em relação a esses problemas.
  • Comentário sobre o projeto:

    • Considera o projeto muito interessante.
    • Já fez experimentos parecidos antes, mas eles frequentemente terminavam em fracassos caóticos e caros.
    • O SWE-bench mostrou 12% de taxa de sucesso, mas pergunta sobre os outros 88%.
    • Pergunta se o SWE-bench foi criado por esse grupo e se já tentaram medir uma pontuação de "limite superior humano especializado".
    • Compartilha a experiência de que tarefas do SWE-bench escolhidas aleatoriamente também eram difíceis de "resolver" até para humanos experientes.
  • Comentário sobre a metodologia usada:

    • Parece que foi usada a metodologia do LangChain.
    • Dá alguns prompts como exemplo e fornece um link do GitHub.
  • Comentário sobre IA e bug trackers:

    • Prevê o fim dos bug trackers públicos se pull requests gerados por IA se tornarem populares.
    • A opinião é que os bugs não vão desaparecer; o problema será que o custo de revisar pull requests trará uma perda muito maior do que o benefício para o projeto.
  • Comentário sobre o benchmark SWEbench:

    • O benchmark SWEbench inclui apenas projetos de código em Python, então não representa todas as linguagens de programação e frameworks.
    • Apresenta que está desenvolvendo uma estrutura de avaliação de tarefas SWE mais geral para JS, SQL, Python etc.
  • Comentário sobre comparação de demos:

    • Opina que a demo é muito parecida com o projeto Devin e foi conferir isso.
    • Questiona a confiabilidade da demo e gostaria de ouvir uma avaliação de terceiros.
  • Comentário sobre trabalho de revisão:

    • Pergunta quanto trabalho extra de fato foi gerado para pessoas reais ao revisar as correções sugeridas pela IA.
  • Comentário sobre projetos semelhantes:

    • Diz que está trabalhando em um projeto parecido e fornece um link do GitHub.
    • Foca em como lidar com situações em que o modelo segue na direção errada.
    • Enfatiza que completar o ciclo de feedback entre desenvolvedor e IA é a chave para um verdadeiro ganho de produtividade.
  • Comentário com sugestão aos autores:

    • Aponta que a taxa de sucesso só tem significado para pesquisadores e sugere adicionar ao README exemplos de testes que o SWE-agent passou e não passou.
  • Comentário sobre contribuição para projetos open source:

    • Como desenvolvedor iniciante, quer uma ferramenta que ajude a encontrar formas de contribuir para projetos open source.
    • Compartilha a experiência de que, apesar de a documentação de empacotamento em Python ser difícil, conseguiu superar isso e tornar o processo fácil.
    • Diz que pretende encontrar um projeto que não tenha sido modernizado, propor melhorias e implementá-las.
    • Quer trocar ideias com pessoas que tenham ideias ou inspirações parecidas.