10 puntos por GN⁺ 2024-04-04 | 3 comentarios | Compartir por WhatsApp
  • SWE-agent corrige bugs e issues en repositorios reales de GitHub al convertir modelos de lenguaje (LMs) como GPT-4 en agentes de ingeniería de software
  • Resolvió el 12.29% de los issues en todo el conjunto de pruebas SWE-bench, logrando el mejor rendimiento sobre el conjunto completo de pruebas

Interfaz agente-computadora (ACI)

  • Estos resultados se lograron diseñando comandos y formatos de retroalimentación centrados en el LM, para que al agente le resulte fácil explorar el repositorio, ver archivos de código, editarlos y ejecutarlos.
  • A esto lo llaman interfaz agente-computadora (ACI), y construyeron el repositorio de SWE-agent para facilitar la iteración del diseño de ACI para agentes de programación a nivel de repositorio.
  • Demuestra que un buen diseño de ACI produce resultados mucho mejores al usar agentes.

Configuración

  • Instala Docker e inícialo localmente.
  • Instala Miniconda y crea el entorno swe-agent usando conda env create -f environment.yml.
  • Actívalo con conda activate swe-agent.
  • Ejecuta ./setup.sh para crear la imagen de Docker de swe-agent.
  • Crea el archivo keys.cfg en la raíz de este repositorio e ingresa las API keys necesarias y el token de GitHub.

Uso

  • El pipeline de SWE-agent tiene dos etapas. La primera es la etapa de inferencia, que recibe un issue de GitHub como entrada y devuelve un pull request que intenta resolverlo.
  • La segunda etapa solo es posible para issues del benchmark SWE-bench, y es la etapa de evaluación que verifica si el pull request generado realmente resolvió el issue.

Evaluación

  • Esta etapa solo es posible para issues del conjunto SWE-bench.
  • Para evaluar el pull request generado, ve al directorio evaluation/ y ejecuta ./run_eval.sh .

Opinión de GN⁺

  • SWE-agent presenta un enfoque innovador que aprovecha modelos de lenguaje para resolver issues reales de GitHub, ampliando las posibilidades de automatización dentro del proceso de desarrollo de software.
  • Esta tecnología tiene el potencial de permitir que los desarrolladores se liberen de tareas repetitivas de corrección de bugs y se concentren en resolver problemas más creativos y complejos.
  • Al destacar la importancia del diseño de ACI, subraya la relevancia de diseñar interfaces que optimicen la interacción entre máquinas y humanos.

3 comentarios

 
botplaysdice 2024-04-05

Si ese tipo de agente trabajara incluso haciéndole este tipo de preguntas al desarrollador, de verdad estaría muy bien.

"Tomé el método de reproducción descrito en el reporte de bug y lo convertí en código de prueba para reproducir el problema. ¿Puedes revisar este código para ver si entendí bien?"

"Más que este diseño, si lo refactorizamos de esta y esta manera, creo que podríamos reducir 20,312 líneas de código en todo el proyecto. do you approve?"

 
fastkoder 2024-04-04

Parece un proyecto de código abierto muy atractivo.

 
GN⁺ 2024-04-04
Opiniones en Hacker News
  • Comentario sobre el reporte de bug:

    • La demo muestra un reporte de bug claro sobre operaciones de matrices.
    • La mayoría de los reportes de bugs reales son ambiguos, del tipo "hice clic en X y ocurrió Y".
    • La dificultad de resolver un bug está en identificar la causa.
    • Sabemos que los LLMs pueden corregir defectos simples, pero se cuestiona qué demuestra realmente eso.
    • Se pregunta si alguien ha revisado el paper en detalle y cuáles son las diferencias con esos problemas.
  • Comentario sobre el proyecto:

    • Lo consideran un proyecto muy genial.
    • Antes probaron experimentos similares, pero a menudo terminaban en fracasos caóticos y costosos.
    • Aunque mostró una tasa de éxito de 12% en swe-bench, preguntan qué pasó con el 88% restante.
    • Se preguntan si swe-bench fue creado por ese grupo y si alguna vez midieron una puntuación de "límite superior humano experto".
    • Comparten que, en tareas de swe-bench elegidas al azar, incluso a humanos expertos les resultó difícil "resolverlas".
  • Comentario sobre la metodología utilizada:

    • Parece que usaron la metodología de langchain.
    • Dan como ejemplo algunos prompts y comparten un enlace de GitHub.
  • Comentario sobre la IA y los bug trackers:

    • Si los pull requests generados por IA se vuelven populares, prevén el fin de los bug trackers públicos.
    • Opinan que el problema no es que los bugs desaparezcan, sino que el beneficio para el proyecto frente al costo de revisar pull requests sería una gran pérdida.
  • Comentario sobre el benchmark SWEbench:

    • El benchmark SWEbench solo incluye proyectos de código en Python, así que no representa todos los lenguajes de programación ni frameworks.
    • Presentan que están desarrollando un framework de evaluación más general para tareas SWE en JS, SQL, Python, etc.
  • Comentario sobre la comparación de la demo:

    • Opinan que la demo es muy similar al proyecto Devin, así que fueron a comprobarlo.
    • Cuestionan la confiabilidad de la demo y quieren escuchar una evaluación de terceros.
  • Comentario sobre el trabajo de revisión:

    • Preguntan cuánto trabajo adicional real generó para personas revisar las correcciones propuestas por la IA.
  • Comentario sobre proyectos similares:

    • Dicen que están trabajando en un proyecto parecido y comparten un enlace de GitHub.
    • Se enfocan en cómo manejar cuando el modelo toma una dirección equivocada.
    • Enfatizan que cerrar el ciclo de retroalimentación entre desarrollador e IA es la clave para una mejora real de productividad.
  • Comentario con una sugerencia para los autores:

    • Señalan que la tasa de éxito solo tiene sentido para investigadores, y sugieren agregar al README ejemplos de pruebas que SWE-agent sí pasó y otras que no.
  • Comentario sobre contribuir a proyectos open source:

    • Como desarrollador principiante, quieren una herramienta que ayude a encontrar maneras de contribuir a proyectos open source.
    • Comparten que, aunque la documentación de packaging en Python era críptica, lograron superarlo y ahora se volvió algo fácil.
    • Dicen que planean encontrar proyectos no modernizados para proponer e implementar mejoras.
    • Quieren compartir ideas con personas que tengan ideas o inspiración similares.