Présentation de SWE-agent : Une nouvelle interface pour les agents de modèle linguistique
L'agent SWE améliore la performance des agents LM dans les tâches d'ingénierie logicielle grâce à une interface spécialisée.
― 7 min lire
Table des matières
- Le besoin de meilleures interfaces
- Qu'est-ce que SWE-agent ?
- Évaluation de SWE-agent
- La conception de l'interface agent-ordinateur
- Composants de SWE-agent
- Recherche et navigation
- Visualiseur de fichiers
- Éditeur de fichiers
- Gestion de contexte
- Configuration expérimentale
- Métriques de performance
- Résultats
- Analyse de la conception de l'ACI
- Conclusion
- Travaux futurs
- Source originale
- Liens de référence
Les agents de modèles de langue (LM) deviennent de plus en plus utiles pour gérer des tâches complexes dans des environnements numériques. Tout comme les humains utilisent des outils logiciels performants pour des tâches comme la programmation, on pense que les agents LM devraient avoir leurs propres interfaces uniques pour les aider à mieux performer. Cet article parle de la conception de SWE-agent, un système qui permet aux agents LM d'interagir de manière indépendante avec des ordinateurs pour relever des défis en ingénierie logiciel.
Le besoin de meilleures interfaces
Actuellement, les modèles de langue rencontrent souvent des difficultés lorsqu'ils exécutent des tâches de programmation. Alors que de nombreux agents fonctionnent bien avec des applications simples comme les interpréteurs Python ou les shells Linux, ils ont du mal avec des tâches plus compliquées que les développeurs humains gèrent avec des outils avancés comme les environnements de développement intégrés (IDEs). Les IDEs offrent des fonctionnalités comme la navigation dans le code et la vérification de la syntaxe, ce qui aide les humains à écrire du code de manière plus efficace.
Des recherches en interaction humain-ordinateur (HCI) suggèrent que des interfaces mieux conçues peuvent améliorer la performance. Cela soulève la question : les agents LM peuvent-ils également bénéficier d'interfaces améliorées lorsqu'ils effectuent des tâches d'ingénierie logicielle ?
Qu'est-ce que SWE-agent ?
Pour répondre à cette question, nous introduisons SWE-agent, un LM qui fonctionne à travers une interface spécialement conçue connue sous le nom d'interface agent-ordinateur (ACI). L'ACI établit comment l'agent communique avec l'ordinateur, détaillant les commandes qu'il peut utiliser et comment le feedback de l'ordinateur est présenté.
SWE-agent est conçu pour automatiser des tâches comme naviguer dans des dépôts de code, modifier des fichiers de code et exécuter des tests. La conception ne simplifie pas seulement ces tâches pour l'agent, mais améliore également sa capacité à comprendre et manipuler le code.
Évaluation de SWE-agent
Nous avons évalué la performance de SWE-agent en utilisant deux benchmarks : SWE-bench et HumanEvalFix. Il a obtenu des résultats impressionnants, surpassant les modèles précédents dans l'utilisation de commandes interactives pour résoudre des tâches de programmation. En permettant aux agents de fonctionner avec une ACI bien structurée, nous avons considérablement amélioré leur performance par rapport aux méthodes traditionnelles.
La conception de l'interface agent-ordinateur
L'ACI (interface agent-ordinateur) est cruciale pour améliorer la performance de l'agent. Nous nous sommes concentrés sur plusieurs principes de conception pour guider notre travail :
Actions simples et claires : Les commandes pour l'agent doivent être simples. Les commandes complexes avec de nombreuses options peuvent embrouiller le LM. En simplifiant les commandes, nous aidons les agents à exécuter des tâches plus efficacement.
Opérations compactes et efficaces : Les fonctions importantes devraient être consolidées en moins de commandes. Cela réduit la quantité de communication allée-retour nécessaire et aide l'agent à progresser vers ses objectifs plus rapidement.
Feedback informatif et concis : Un feedback de bonne qualité devrait informer l'agent sur ses actions sans l'accabler de détails inutiles. Le feedback doit être pertinent et utile.
Garde-fous pour éviter les erreurs : Tout comme les humains peuvent faire des erreurs, les LM peuvent également introduire des erreurs. Construire des fonctionnalités dans l'ACI qui détectent et alertent l'agent de ces erreurs peut l'aider à se remettre rapidement et à éviter de répéter les erreurs.
En respectant ces principes, nous avons conçu une interface qui aide considérablement la capacité du LM à réaliser des tâches d'ingénierie logicielle.
Composants de SWE-agent
SWE-agent se compose de plusieurs composants principaux : recherche/navigation, visualiseur de fichiers, éditeur de fichiers et gestion de contexte. Ensemble, ces composants permettent à l'agent d'interagir efficacement avec les bases de code.
Recherche et navigation
Naviguer dans des bases de code nécessite de trouver des fichiers et des informations pertinentes. L'agent peut rechercher des termes, des définitions de classe ou des noms de fonction. Nous avons introduit trois commandes spéciales-findfile, searchfile et searchdir-pour aider dans ce processus. Ces commandes fournissent des résultats récapitulatifs pour aider l'agent à localiser le contenu nécessaire sans l'accabler de données inutiles.
Visualiseur de fichiers
Une fois que l'agent a identifié un fichier à examiner, il peut utiliser un visualiseur de fichiers interactif. Cet outil affiche une partie du fichier, permettant à l'agent de faire défiler et d'accéder à des lignes spécifiques. Le visualiseur aide l'agent à voir le contexte du code avec lequel il travaille, garantissant qu'il prend des décisions éclairées lors de l'édition.
Éditeur de fichiers
L'éditeur de fichiers est conçu pour permettre aux agents de créer et de modifier du code de manière efficace. Il s'intègre parfaitement avec le visualiseur de fichiers, permettant au LM de remplacer des lignes de code en une seule action. L'éditeur fournit un feedback immédiat, montrant à l'agent le code mis à jour après une modification.
Gestion de contexte
Une gestion efficace du contexte est essentielle pour maintenir les interactions claires et concentrées. SWE-agent utilise divers prompts, messages d'erreur, et un processeur d'historique pour fournir à l'agent des informations pertinentes tout en minimisant le contexte inutile. Cette fonctionnalité aide les agents à éviter la confusion et leur permet de se concentrer sur la tâche à accomplir.
Configuration expérimentale
SWE-agent a été évalué en utilisant le jeu de données SWE-bench, qui se compose de diverses tâches de programmation issues de dépôts réels. Nous nous sommes concentrés sur la capacité de l'agent à résoudre des problèmes et à appliquer des stratégies de débogage efficaces.
Nous avons également évalué les compétences en édition de code de SWE-agent avec une tâche de codage courte connue sous le nom de HumanEvalFix. L'évaluation a démontré que SWE-agent surpassait constamment d'autres modèles.
Métriques de performance
Nous avons mesuré le succès de SWE-agent en utilisant plusieurs métriques. La principale métrique était le pourcentage d'instances où tous les tests ont réussi après que l'agent a généré une solution. Nous avons également surveillé le coût engagé lors des interactions de l’agent.
Résultats
Les résultats ont montré que SWE-agent a atteint un taux de résolution de 12,47 % sur l'ensemble du jeu de tests SWE-bench, une amélioration substantielle par rapport aux méthodes précédentes.
Dans HumanEvalFix, SWE-agent a démontré un taux de réussite impressionnant, soulignant son efficacité dans des scénarios de codage réels.
Analyse de la conception de l'ACI
À travers des tests approfondis, nous avons découvert des comportements spécifiques liés à la conception de l'ACI. Par exemple, les agents commençaient souvent par reproduire le problème ou localiser sa cause dans le code. Comprendre ce comportement nous a aidés à affiner encore plus le design de l'ACI.
Bien que les agents aient généralement bien performé, il y avait des défis-surtout dans l'édition. De nombreuses modifications ont conduit à des erreurs, mais les agents étaient souvent capables de se remettre de ces erreurs en ajustant leurs actions en fonction du feedback.
Conclusion
SWE-agent représente un pas en avant significatif dans l'utilisation des modèles de langue pour les tâches d'ingénierie logicielle. En concevant une interface agent-ordinateur spécialisée, nous avons montré que les agents LM peuvent atteindre des niveaux de performance beaucoup plus élevés que ceux utilisant des outils interactifs conventionnels. Ce travail ouvre de nouvelles avenues pour rechercher comment les interfaces peuvent impacter le comportement et la performance des agents à l'avenir.
Travaux futurs
Les recherches futures devraient explorer des améliorations supplémentaires à l'ACI et comment différents choix de design affectent la performance des agents. De plus, étendre SWE-agent à d'autres langages de programmation et environnements serait bénéfique pour comprendre sa polyvalence.
En continuant à affiner notre approche, nous pouvons encore améliorer la façon dont les agents LM réalisent des tâches complexes, ce qui pourrait accroître leur utilité dans divers domaines.
Titre: SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering
Résumé: Language model (LM) agents are increasingly being used to automate complicated tasks in digital environments. Just as humans benefit from powerful software applications, such as integrated development environments, for complex tasks like software engineering, we posit that LM agents represent a new category of end users with their own needs and abilities, and would benefit from specially-built interfaces to the software they use. We investigate how interface design affects the performance of language model agents. As a result of this exploration, we introduce SWE-agent: a system that facilitates LM agents to autonomously use computers to solve software engineering tasks. SWE-agent's custom agent-computer interface (ACI) significantly enhances an agent's ability to create and edit code files, navigate entire repositories, and execute tests and other programs. We evaluate SWE-agent on SWE-bench and HumanEvalFix, achieving state-of-the-art performance on both with a pass@1 rate of 12.5% and 87.7%, respectively, far exceeding the previous state-of-the-art achieved with non-interactive LMs. Finally, we provide insight on how the design of the ACI can impact agents' behavior and performance.
Auteurs: John Yang, Carlos E. Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, Ofir Press
Dernière mise à jour: 2024-11-11 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2405.15793
Source PDF: https://arxiv.org/pdf/2405.15793
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://github.com/meta-llama/llama3
- https://swe-agent.com/
- https://github.com/swe-agent-anon/repo
- https://github.com/psf/requests/blob/091991be0da19de9108dbe5e3752917fea3d7fdc/requests/utils.py#L655
- https://github.com/matplotlib/matplotlib/
- https://github.com/sympy/sympy
- https://nips.cc/public/guides/CodeSubmissionPolicy
- https://neurips.cc/public/EthicsGuidelines
- https://github.com/augustt198/latex2sympy
- https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- https://github.com/PyCQA/pylint/blob/main/LICENSE
- https://github.com/astropy/astropy/issues/1977
- https://github.com/astropy/astropy/pull/2373
- https://github.com/pydata/xarray/pull/3425
- https://httpbin.org/get