Le premier ingénieur logiciel en IA Devin a été officiellement dévoilé, faisant immédiatement exploser toute la communauté technologique.
Bien que Devin ne puisse pas résoudre facilement les tâches de codage, il peut compléter de manière indépendante tout le cycle de développement logiciel - de la planification du projet au déploiement. Il fait de son mieux pour creuser, mais ne se limite pas à la création de sites Web, à la recherche et à la correction indépendantes de bugs, à la formation et au réglage fin des modèles d'IA, etc.
Ce genre de capacité de développement logiciel « incroyablement forte » a désespéré de nombreux codeurs, s'écriant : « La fin des programmeurs arrive-t-elle vraiment ? Le benchmark SWE-Bench est particulièrement accrocheur.
SWE-Bench est un test pour évaluer les capacités d'ingénierie logicielle de l'IA, en se concentrant sur la capacité des grands modèles à résoudre les problèmes réels de GitHub. Devin est en tête de liste avec un taux de résolution indépendante de problèmes de 13,86 %, « tuant instantanément » le score de seulement 1,74 % du GPT-4, laissant loin derrière de nombreux grands modèles d'IA. Cette performance puissante amène les gens à se demander :
"Quel rôle l'IA jouera-t-elle dans le futur développement de logiciels ?"
DevBench
,révélant pour la première fois dans quelle mesure les grands modèles peuvent démarrer à partir du PRD, terminer la conception, le développement et les tests d'un projet complet.
DevBench évalue pour la première fois les performances des grands modèles à toutes les étapes, depuis le document d'exigences du produit (PRD) jusqu'à l'achèvement du développement du projet, y compris la conception du logiciel, la construction de l'environnement de dépendances, la génération de code au niveau de la base de code, les tests d'intégration et les tests unitaires. . Des expériences ont prouvé que DevBench peut révéler les lacunes des grands modèles de langage tels que GPT, CodeLlama et DeepSeek-Coder à différentes étapes du développement logiciel, telles que
capacités de programmation orientées objet insuffisantes
, incapacité à écrire un script de construction plus complexe(script de construction), et
incompatibilité des paramètres d'appel de fonction et d'autres problèmes. Les grands modèles de langage sont encore loin de pouvoir mener à bien de manière indépendante le développement d'un projet logiciel de petite et moyenne taille. Actuellement, les articles DevBench ont été publiés sur la plateforme de préimpression arXiv, et le code et les données pertinents sont open source sur GitHub. (Lien en fin d'article)Quelles sont les tâches de DevBench ?
△
L'image montre un aperçu du framework DevBench
Les benchmarks de programmation traditionnels se concentrent souvent sur un seul aspect de la génération de code et ne peuvent pas refléter pleinement la complexité des tâches de programmation du monde réel. L'émergence de DevBench brise cette limitation. Il simule différentes étapes du développement logiciel à travers une série de tâches soigneusement conçues, fournissant ainsi une plate-forme pour une évaluation complète des capacités LLM.DevBench est construit autour de cinq tâches clés, chacune se concentrant sur une étape clé du cycle de vie du développement logiciel, et la conception modulaire permet des tests et une évaluation indépendants de chaque tâche.
Conception de logiciels :
Utilisez le document d'exigences du produit PRD pour créer des diagrammes UML et des conceptions architecturales afin d'afficher les classes, les attributs, les relations et la disposition structurelle du logiciel. Cette tâche fait référence à MT-Bench et adopte la méthode d'évaluation LLM-as-a-Judge. L'évaluation repose principalement sur deux indicateurs principaux : les principes généraux de conception de logiciels (tels qu'une cohésion élevée et un faible couplage, etc.) et la fidélité (fidélité) .
Paramètres d'environnement : Générez les fichiers de dépendances requis pour initialiser l'environnement de développement en fonction du document d'exigences fourni. Au cours du processus d'évaluation, le fichier de dépendances sera construit dans un environnement d'isolation de base donné (conteneur Docker) via des instructions de référence. Ensuite, dans l'environnement de dépendance construit par ce modèle, la tâche évalue le taux de réussite de l'exécution du code de référence en exécutant l'exemple de code d'utilisation de référence (exemple d'utilisation) dans l'entrepôt de code.
Implémentation du code : Sur la base du document d'exigences et de la conception de l'architecture, le modèle doit terminer la génération du fichier de code de l'ensemble de la base de code. DevBench a développé un framework de tests automatisés et l'a personnalisé pour le langage de programmation spécifique utilisé, intégrant PyTest de Python, GTest de C++, JUnit de Java et Jest de JavaScript. Cette tâche évalue le taux de réussite de la base de code générée par le modèle en exécutant des tests d'intégration de référence et des tests unitaires dans un environnement de référence. Tests d'intégration : Le modèle génère un code de test d'intégration basé sur les exigences pour vérifier les fonctions d'interface externe de la base de code. Cette tâche exécute les tests d'intégration générés sur le code d'implémentation de base et rapporte le taux de réussite des tests. Tests unitaires : Le modèle génère un code de test unitaire en fonction des exigences. Encore une fois, cette tâche exécute les tests unitaires générés sur le code d’implémentation de base. En plus de l'indicateur de taux de réussite, cette tâche introduit également des indicateurs d'évaluation de la couverture des déclarations pour évaluer quantitativement l'exhaustivité du test. Le processus de préparation des données DevBench comprend trois étapes : préparation de l'entrepôt, nettoyage du code et préparation des documents. Au final, l'ensemble de données DevBench contient 4 langages de programmation, plusieurs champs et un total de 22 bases de codes. La complexité de ces référentiels de code et la diversité des paradigmes de programmation utilisés posent des défis importants aux modèles de langage. Quelques exemples intéressants : TextCNN Le grand modèle peut-il écrire complètement un modèle TextCNN pour la classification binaire de texte ? Être capable d'extraire vous-même l'ensemble de données de HF et d'exécuter la formation est une exigence de base. Le modèle doit également personnaliser les hyperparamètres, enregistrer les journaux et stocker les points de contrôle en fonction des exigences du document, tout en garantissant la reproductibilité de l'expérience. (https://github.com/open-compass/DevBench/tree/main/benchmark_data/python/TextCNN) Inscription et connexion Les projets front-end s'appuient souvent sur davantage de bibliothèques de composants et de front -end frameworks, le modèle peut-il gérer facilement les projets front-end où des conflits de versions peuvent survenir ? (https://github.com/open-compass/DevBench/tree/main/benchmark_data/javascript/login-registration) Gestion des personnes Comment le modèle maîtrise-t-il la création et la gestion de SQLite bases de données ? En plus des opérations de base d'ajout, de suppression, de modification et d'interrogation, le modèle peut-il encapsuler la gestion et l'exploitation des informations sur le personnel du campus et des bases de données relationnelles dans des outils de ligne de commande faciles à utiliser ? (https://github.com/open-compass/DevBench/tree/main/benchmark_data/cpp/people_management) Jeu de relation d'acteur Vérification de conjecture de la « théorie des six degrés de séparation » dans le industrie du cinéma et de la télévision ? Le modèle doit obtenir des données de l'API TMDB et construire un réseau de connexions entre des acteurs populaires grâce à leurs collaborations dans des films. (https://github.com/open-compass/DevBench/tree/main/benchmark_data/java/Actor_relationship_game) ArXiv digest Le gadget de récupération de papier ArXiv a également été facilement maîtrisé ? L'API d'ArXiv ne prend pas en charge la fonction de « filtrage des articles des N derniers jours », mais elle peut « trier par heure de publication ». Le modèle peut-il être utilisé pour développer un outil de recherche d'articles utile ? (https://github.com/open-compass/DevBench/tree/main/benchmark_data/python/ArXiv_digest) L'équipe de recherche a utilisé DevBench pour analyser les LLM actuellement populaires, y compris GPT-4 - Turbo est entièrement testé. Les résultats montrent que bien que ces modèles fonctionnent bien sur des tâches de programmation simples, ils rencontrent toujours des difficultés importantes lorsqu'ils sont confrontés à des défis complexes de développement logiciel réel. Surtout lorsqu’il s’agit de structures de code et de logique complexes, les performances du modèle doivent être améliorées. DevBench révèle non seulement les limites des LLM existants dans le développement de logiciels, mais fournit également des informations précieuses pour les futures améliorations des modèles. Grâce à ce test de référence, les chercheurs peuvent mieux comprendre les forces et les faiblesses des LLM, les optimiser de manière ciblée et promouvoir le développement ultérieur de l'IA dans le domaine du génie logiciel. De plus, l'ouverture et l'extensibilité du framework DevBench lui permettent de continuer à s'adapter à différents langages de programmation et scénarios de développement. DevBench est encore en cours de développement et les amis de la communauté sont invités à participer à la co-construction. Devin ouvre la voie sur SWE-Bench. Ses excellentes performances peuvent-elles être étendues à d'autres scénarios d'évaluation ? Alors que les capacités de développement de logiciels d’IA continuent de se développer, cette bataille entre les codeurs et l’IA est très attendue. DevBench a désormais rejoint le système d'évaluation des capacités des grands modèles OpenCompass Sinan. OpenCompass est un guichet unique pour divers modèles tels que les grands modèles linguistiques et les grands modèles multimodaux développés et lancés par. la plateforme d’évaluation du Laboratoire d’Intelligence Artificielle de Shanghai. OpenCompass présente les caractéristiques de reproductibilité, de dimensions de capacité complètes, de prise en charge de modèles riches, d'évaluation efficace distribuée, de paradigmes d'évaluation diversifiés et d'expansion flexible. Basé sur un système de compétences et une chaîne d'outils de haute qualité à plusieurs niveaux, OpenCompass a innové un certain nombre de méthodes d'évaluation des compétences et prend en charge divers critères d'évaluation bilingues de haute qualité en chinois et en anglais, couvrant la langue et la compréhension, le bon sens et le raisonnement logique, le calcul et l'application mathématiques, et plus encore, de multiples aspects tels que les capacités de codage du langage de programmation, les agents, la création et le dialogue peuvent permettre d'obtenir un diagnostic complet des véritables capacités des grands modèles. DevBench a élargi les capacités d'évaluation d'OpenCompass dans le domaine des agents. Article DevBench : https://arxiv.org/abs/2403.08604Quelles données contient DevBench ?
Résultats expérimentaux
Il existe également le système d'évaluation des grands modèles OpenCompass
GitHub : https://github.com/open-compass/devBench/
OpenCompass https://github.com/open- boussole/boussole ouverte
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!