Intelligentsia dans le génie logiciel : recherche, état actuel et perspectives
Original : https://arxiv.org/abs/2409.09030
résumés
Ces dernières années, les grands modèles de langage (LLM) ont connu un succès remarquable et ont été largement utilisés dans une variété de tâches en aval, en particulier dans le domaine de l'ingénierie logicielle (SE). Nous avons constaté que la notion d'intelligentsia est explicitement ou implicitement adoptée dans de nombreuses études qui combinent les LLM avec l'ingénierie logicielle. Cependant, il manque un article de recherche approfondi pour trier la lignée de développement du travail existant, analyser comment le travail existant combine les techniques de corps intelligents basés sur les LLM pour optimiser différents types de tâches, et clarifier le cadre des corps intelligents basés sur les LLM dans le domaine du génie logiciel. Dans cet article, nous présentons la première étude de recherche sur la combinaison des intelligences LLM avec les SE et proposons un cadre pour les intelligences LLM dans les SE qui comprend trois modules clés : la perception, la mémoire et l'action. Nous résumons également les défis actuels rencontrés dans la combinaison des deux domaines et suggérons des opportunités futures pour les aborder. Nous maintenons un dépôt GitHub d'articles connexes à l'adresse suivante :https://github.com/DeepSoftwareAnalytics/Awesome-Agent4SE.
1 Introduction
Ces dernières années, les grands modèles de langage (LLM) ont connu un succès remarquable et ont été largement utilisés dans de nombreuses tâches en aval, en particulier dans une variété de tâches dans le domaine de l'ingénierie logicielle (SE) Zheng et al.comme résumé dans le code Ahmed et al. (2024) ; Sun et al.2023b) ; Haldar et Hockenmaier (2024) ; Mao et al.2024) ; Guo et al.2023) ; Wang et al.2021), génération de code Jiang et al. (2023a) ; Hu et al.2024b) ; Yang et al.2023a) ; Tian et Chen (2023) ; Li et al.2023e) ; Wang et al.2024b), traduction du code Pan et al. (2024), détection des vulnérabilités et remédiation Zhou et al.2024) ; Islam et Najafirad (2024) ; de Fitero-Dominguez et al. (2024) ; Le et al.2024) ; Liu et al.2024b) ; Chen et al.2023a), etc. Le concept d'intelligibles est introduit à partir du domaine de l'IA, soit explicitement, soit implicitement, dans de nombreuses études qui combinent LLM et SE. L'utilisation explicite implique que le document fait directement référence à l'application de technologies liées aux intelligibles, tandis que l'utilisation implicite suggère que bien que le concept d'intelligibles soit utilisé, il peut être présenté en utilisant une terminologie différente ou sous une autre forme.
Intelligentsia Wang et al.2024c) représente une entité intelligente capable de percevoir, de raisonner et de réaliser des actions. Elle constitue une base technologique importante pour l'accomplissement de diverses tâches et la réalisation de divers objectifs en détectant l'état de l'environnement et en sélectionnant des actions basées sur ses objectifs et sa conception afin de maximiser des paramètres de performance spécifiques. Les intelligences basées sur les LLM utilisent généralement les LLM comme noyau cognitif des intelligences et excellent dans des scénarios tels que l'automatisation, le contrôle intelligent et l'interaction homme-machine, en exploitant les puissantes capacités des LLM en matière de compréhension et de génération du langage, d'apprentissage et de raisonnement, de conscience du contexte et de mémoire, et de multimodalité. Avec le développement de divers domaines, les concepts d'intelligences traditionnelles et d'intelligences basées sur les MLD sont progressivement clarifiés et largement utilisés dans le domaine du traitement du langage naturel (NLP) Xi et al. (2023). Cependant, bien que les travaux existants utilisent ce concept explicitement ou implicitement dans l'ES, il n'existe toujours pas de définition claire des intelligibles. Il manque un article de recherche approfondi pour analyser la manière dont les travaux existants intègrent les techniques de corps intelligents pour optimiser diverses tâches, pour trier la lignée de développement des travaux existants et pour clarifier le cadre des corps intelligents dans l'ES.
Dans cet article, nous fournissons une analyse approfondie de la recherche sur la combinaison des agents basés sur le Large Language Model (LLM) avec le génie logiciel (SE), résumons les défis actuels rencontrés lors de la combinaison des deux, et suggérons des opportunités possibles pour la recherche future en réponse aux défis existants. Plus précisément, nous avons d'abord rassemblé des articles relatifs à l'application de la technologie des agents basés sur le LLM au génie logiciel et obtenu 115 articles après filtrage et évaluation de la qualité. Ensuite, en s'inspirant de la définition traditionnelle de l'agent (Wang et al.2024cXi et al.2023), nous présentons un cadre conceptuel générique pour les agents basés sur le LLM dans l'ES (voir la section 2 sections), y compris les trois composantes clés que sont la perception, la mémoire et l'action. Nous présentons tout d'abord le module de perception (voir section 2.1 Section), ce module peut traiter des entrées provenant de différentes modalités, telles que des entrées textuelles, visuelles, auditives, etc. Ensuite, nous présentons le module de mémoire (voir section 2.2 Section), ce module comprend la mémoire sémantique, la mémoire de tracé et la mémoire procédurale pour aider l'agent à prendre des décisions raisonnées. Enfin, nous introduisons le module d'action (voir section 2.3 Section), le module comprend des actions internes telles que le raisonnement, la recherche et l'apprentissage, ainsi que des actions externes telles que l'interaction avec l'environnement.
Nous détaillons ensuite les défis et les opportunités des agents basés sur le LLM dans l'ES (voir la section 3 sections). Plus précisément, nous proposons les possibilités de recherche futures suivantes pour les agents LLM afin de relever les défis actuels en matière d'ES :
- La plupart des études existantes explorent principalement le module de perception de l'entrée de texte basée sur les jetons, alors que l'exploration d'autres modalités fait défaut.
- Beaucoup de nouvelles tâches restent en dehors du champ d'application de l'apprentissage LLM, et les tâches complexes dans le domaine des SE requièrent des agents avec des capacités multiples. Par conséquent, il est essentiel d'explorer comment les agents basés sur le LLM peuvent assumer de nouveaux rôles et équilibrer efficacement les capacités de rôles multiples.
- Le domaine des SE ne dispose pas d'une base de connaissances reconnue et faisant autorité qui contiendrait un grand nombre de connaissances relatives aux codes et qui servirait de base à la recherche externe.
- L'atténuation de l'illusion des agents LLM améliore la performance globale de l'agent, et l'optimisation de l'agent atténue à son tour le problème de l'illusion des agents LLM.
- Le processus de collaboration multi-agents nécessite d'importantes ressources informatiques, ainsi que des frais généraux de communication supplémentaires dus à la synchronisation et au partage de diverses informations. L'exploration de techniques visant à améliorer l'efficacité de la collaboration multi-agents est également une opportunité pour les travaux futurs.
- Les technologies du domaine de l'ES peuvent également contribuer au développement du domaine de l'agent, et des travaux supplémentaires sont nécessaires à l'avenir pour explorer la manière d'intégrer les technologies avancées du domaine de l'ES dans l'agent et pour promouvoir l'avancement de l'agent et du domaine de l'ES.
En outre, les techniques de l'ES, en particulier celles liées au code, peuvent également faire progresser le domaine des agents, ce qui démontre la relation de renforcement mutuel entre ces deux domaines très différents. Cependant, très peu de travaux ont exploré l'application des techniques d'ES aux agents, et la recherche se concentre encore sur les techniques de base simples de l'ES, telles que les appels de fonction, les requêtes HTTP et d'autres outils. C'est pourquoi ce document se concentre sur les travaux relatifs aux agents dans le domaine de l'ES, et dans la section 3.6 SectionL'application des techniques d'ES aux agents est brièvement abordée dans le cadre des recherches futures.
2 Agents SE basés sur le Grand Modèle de Langage (LLM)
Après avoir rassemblé et analysé les recherches obtenues au cours de la période de collecte des données, nous proposons un cadre d'agent de génie logiciel (SE) basé sur le modèle du grand langage (LLM). Comme le montre la Fig. 2 Un agent unique contient trois modules clés : la perception, la mémoire et l'action. Plus précisément, le module de perception reçoit des informations multimodales de l'environnement externe et les convertit en une forme d'entrée que le LLM peut comprendre et traiter. Le module d'action comprend des actions internes et externes, qui sont responsables du raisonnement des décisions basées sur les entrées du LLM et de l'optimisation des décisions basées sur le retour d'information obtenu à partir de l'interaction avec l'environnement externe, respectivement. Le module de mémoire comprend des mémoires sémantiques, situationnelles et procédurales qui peuvent fournir des informations supplémentaires utiles pour aider le LLM à prendre des décisions raisonnées. En outre, le module d'action peut mettre à jour différentes mémoires dans le module de mémoire par des actions d'apprentissage afin de fournir des informations de mémoire plus efficaces pour les opérations de raisonnement et d'extraction. En outre, la collaboration multi-agents consiste en plusieurs agents uniques responsables d'une partie de la tâche et qui travaillent ensemble pour terminer la tâche par le biais d'une coopération collaborative. Cette section présente les détails de chaque module dans le cadre de l'agent SE basé sur le LLM.
2.1 Perception
Le module perceptif relie l'agent basé sur le LLM à l'environnement externe et joue un rôle central dans le traitement des entrées externes. Il traite différentes entrées modales, telles que les entrées textuelles, visuelles et auditives, et les convertit en un format intégré qui peut être compris et traité par l'agent LLM, jetant ainsi les bases du raisonnement et du comportement décisionnel de l'agent LLM. Ensuite, nous présentons les détails des différentes entrées modales dans le module perceptif.
2.1.1 Saisie de texte
Contrairement aux formats d'entrée de texte dans le traitement du langage naturel (NLP), qui prennent en compte les caractéristiques du code, les formats d'entrée de texte dans le SE incluent le texte sur la base des éléments suivants Jeton les entrées basées sur les arbres/graphes et les entrées hybrides.
Entrées basées sur des jetons. Les entrées à base de jetons (Ahmed et al. 2024; Al-Kaswan et al. 2023; Arakelyan et al. 2023; Beurer-Kellner et al. 2023: : Alqarni et Azim. 2022; Li et al. 2022bGu et al. 2022Du et al. 2021) est l'approche d'entrée la plus dominante, qui traite le code directement comme un texte en langage naturel et utilise les séquences de jetons directement comme entrée du LLM, en ignorant les propriétés du code.
Entrée basée sur des arbres/diagrammes. Contrairement aux langues naturelles, les codes ont des règles structurelles et syntaxiques strictes et sont généralement écrits selon la syntaxe d'un langage de programmation particulier. Sur la base des caractéristiques des codes, les entrées basées sur les arbres/diagrammes (Ma et al. 2023b, aZhang et al. 2023g: : Ochs et al. 2023Bi et al. 2024Shi et al. 2023a, 2021Wang et Li. 2021) peuvent transformer le code en structures arborescentes telles que les arbres syntaxiques abstraits, ou en structures graphiques telles que les graphes de flux de contrôle, afin de modéliser des informations structurées sur le code. Cependant, les travaux actuels relatifs aux agents SE basés sur le LLM n'ont pas exploré ces modalités, ce qui présente à la fois des défis et des opportunités.
Entrée hybride. Entrées mixtes (Niu et al. 2022; Hu et al. 2024aGuo et al. 2022) combine plusieurs modalités pour fournir différents types d'informations au LLM. Par exemple, l'inclusion d'entrées hybrides basées sur des tokens et des arbres peut combiner des informations sémantiques et structurelles sur le code, conduisant à une meilleure modélisation et compréhension du code. Cependant, les travaux relatifs aux agents basés sur le LLM dans l'ES n'ont pas encore exploré cette modalité.
2.1.2 Données visuelles
L'entrée visuelle utilise des données d'images visuelles, telles que des croquis d'interface utilisateur ou des diagrammes de conception UML, comme entrée modale et prend des décisions inférentielles en modélisant et en analysant les images. De nombreux travaux liés au NLP explorent cette modalité. Par exemple, Driess et al.2023) propose PaLM-E, un modèle de langage multimodal incarné dont les entrées sont des phrases multimodales entrelacées avec une estimation visuelle et continue de l'état et un encodage d'entrée textuel. Les domaines traditionnels du génie logiciel comportent également des tâches d'entrée visuelle, telles que la recherche de code d'interface utilisateur (Behrang et al.2018; Reiss et al.2014; Xie et al.2019), qui utilise des croquis d'interface utilisateur comme requêtes pour trouver des extraits de code utiles. Cependant, il y a encore peu de travaux sur la modélisation visuelle en tant qu'entrée dans le LLM.
2.1.3 L'audition
L'entrée auditive interagit avec les LLM sous forme de discours, en utilisant des données auditives telles que l'audio comme entrée. Les domaines traditionnels du génie logiciel comportent des tâches d'entrée auditive, telles que la programmation de recherches vidéo (Bao et al.2020), qui utilise la vidéo comme source d'extraits de code utiles. Cependant, les travaux relatifs à l'entrée auditive pour la MLI sont également relativement rares.
2.2 Mémoire
Les modules de mémoire comprennent la mémoire sémantique, la mémoire situationnelle et la mémoire procédurale, qui peuvent fournir des informations supplémentaires utiles pour aider les MFR à prendre des décisions raisonnées. Nous présenterons ensuite les détails de chacun de ces trois types de mémoire.
2.2.1 Mémoire sémantique
Les mémoires sémantiques stockent les connaissances du monde reconnues des agents LLM, généralement sous la forme de référentiels de recherche de connaissances externes comprenant des documents, des bibliothèques, des API ou d'autres connaissances. De nombreuses études ont exploré l'application de la mémoire sémantique (Wang et al.2024b; Zhang et al.2024Eghbali et Pradel.2024; Patel et al.2023; Zhou et al.2022; Ren et al.2023; Zhang et al.2023d). Plus précisément, la documentation et les API sont les informations les plus courantes que l'on trouve dans les bases de connaissances externes. Par exemple, Zhou et al.2022) a proposé une nouvelle méthode de génération de code en langage naturel appelée DocPrompting, qui exploite explicitement les documents sur la base de l'intention en langage naturel en récupérant des fragments de documents pertinents.Zhang et al. (2024) a construit un benchmark de collationnement manuel appelé CODEAGENTBENCH dédié à la génération de code au niveau de la base de code, contenant de la documentation, des dépendances de code et des informations sur l'environnement d'exécution.Ren et al. (2023) ont proposé une nouvelle méthode de génération de code basée sur l'enchaînement d'invites et fondée sur la connaissance, appelée KPC, qui utilise des connaissances fines sur le traitement des exceptions extraites de la documentation de l'API pour aider la LLM à générer du code. Outre la documentation, les API sont également des informations courantes dans les bases de connaissances externes. Par exemple, Eghbali et Pradel (2024) a proposé une technique de complétion de code basée sur le LLM, appelée De-Hallucinator, qui identifie automatiquement les références API spécifiques au projet liées aux préfixes de code et aux prédictions initiales du modèle et ajoute des informations sur ces références aux indices.Zhang et al. (2023dL'intégration d'un outil de recherche d'API dans le processus de génération permet au modèle de sélectionner automatiquement des API et d'utiliser l'outil de recherche pour obtenir des suggestions. En outre, certains travaux ont également porté sur d'autres informations. Par exemple, Patel et al.2023) ont examiné les capacités et les limites de différents LLM lors de la génération de code basé sur le contexte.Wang et al. (2024b) Mise au point des LLM de code sélectionnés à l'aide de fonctions d'amélioration et des chaînes de documentation correspondantes.
2.2.2 Mémoire situationnelle
La mémoire situationnelle enregistre le contenu pertinent pour le cas en cours ainsi que les informations empiriques obtenues lors de processus décisionnels antérieurs. Le contenu lié au cas actuel (par exemple, les informations pertinentes trouvées dans les bases de données de recherche, les échantillons fournis par les techniques d'apprentissage en contexte (ICL), etc.) peut fournir des connaissances supplémentaires pour le raisonnement LLM, et de nombreuses études ont donc introduit ces informations dans le processus de raisonnement LLM (Zhong et al.2024; Li et al.2023cFeng et Chen.2023; Ahmed et al.2023; Wei et al.2023a; Ren et al.2023; Zhang et al.2023bEghbali et Pradel.2024; Shi et al.2022). Par exemple, Li et al.2023c) a proposé une nouvelle technique d'indication appelée AceCoder, qui sélectionne des programmes similaires comme exemples dans les indications, fournissant une grande quantité de contenu (par exemple, algorithmes, API) lié au code cible.Feng et Chen (2023) a proposé AdbGPT, une approche légère sans formation ni codage en dur qui reproduit automatiquement les erreurs sur la base des rapports d'erreur en utilisant des techniques d'apprentissage en contexte.Ahmed et al.2023) ont constaté que l'inclusion de faits sémantiques peut aider le LLM à améliorer la performance de la tâche de résumé de code.Wei et al. (2023a) propose un nouveau modèle appelé Coeditor, qui prédit les modifications des régions de code sur la base des modifications récentes de la même base de code dans une configuration d'édition de code automatique à plusieurs tours. En outre, l'introduction d'informations empiriques telles que des informations historiques sur les interactions peut aider les agents basés sur le LLM à mieux comprendre le contexte et à prendre des décisions correctes. Certains travaux utilisent des informations empiriques provenant de processus de raisonnement et de prise de décision antérieurs pour obtenir des réponses plus précises en interrogeant et en modifiant les réponses de manière itérative. Par exemple, Ren et al.2023) a proposé la méthode KPC (Prompt Chained Code Generation) basée sur la décomposition de la génération de code en chaînes d'IA avec des étapes itératives de vérification-réécriture.Zhang et al.2023b) a proposé RepoCoder, un cadre simple, polyvalent et efficace pour l'utilisation des informations au niveau de la base de code pour la complétion de code dans un pipeline de génération de recherche itérative.Eghbali et Pradel (2024) ont proposé De-Hallucinator, une technique de complétion de code basée sur LLM qui récupère les références API appropriées en augmentant progressivement les informations contextuelles dans les indices et en itérant le modèle de requête pour rendre ses prédictions plus précises.
2.2.3 Mémoire procédurale
La mémoire procédurale d'un agent dans le domaine du génie logiciel se compose de connaissances implicites stockées dans les poids du Grand Modèle de Langage (LLM) et de connaissances explicites écrites dans le code de l'agent.
La connaissance implicite est stockée dans les paramètres du LLM. Les études existantes proposent généralement de nouveaux LLM avec de riches connaissances implicites pour diverses tâches en aval en formant des modèles à l'aide de grandes quantités de données.Zheng et al. (2023) a organisé le LLM du code dans le domaine des SE en fonction de son type d'affiliation (entreprises, universités, équipes de recherche et communautés open source, individus et contributeurs anonymes).
Connaissances explicites Inscrites dans le code de l'agent pour lui permettre de fonctionner automatiquement. Plusieurs travaux, Patel et al.2023) ; Shin et al.2023) ; Zhang et al.2023a) ont exploré différentes manières de construire le code de l'agent. Plus précisément, Patel et al.2023) utilisent trois types de supervision contextuelle pour spécifier les fonctions de la bibliothèque, y compris les démonstrations, les descriptions et les implémentations.Shin et al. (2023) ont étudié l'efficacité de trois techniques différentes d'ingénierie des repères (c'est-à-dire les repères de base, l'apprentissage contextuel et les repères spécifiques à la tâche) avec un LLM affiné sur trois tâches ASE typiques. Zhang et al. (2023a) a étudié l'utilisation de différents types d'indices (indices de base, indices d'informations complémentaires et indices de réflexion en chaîne) par l'intermédiaire de l'étude ChatGPT Performance de la détection des vulnérabilités des logiciels.
2.3 Mouvement
Le module d'action comprend deux types d'actions : les actions internes et les actions externes. Les actions externes interagissent avec l'environnement externe pour obtenir un retour d'information, y compris le dialogue avec les humains/agents et l'interaction avec l'environnement numérique, tandis que les actions internes raisonnent et prennent des décisions basées sur les entrées du LLM et optimisent les décisions basées sur le retour d'information obtenu, y compris les actions d'inférence, de récupération et d'apprentissage. Nous décrivons ensuite chaque action en détail.
2.3.1 Actions internes
Les actions internes comprennent les actions de raisonnement, de récupération et d'apprentissage. Séparément, l'action de raisonnement est responsable de l'analyse du problème, du raisonnement et de la prise de décision sur la base des données fournies par l'agent LLM. Les actions d'extraction extraient les informations pertinentes de la base de connaissances et aident les actions de raisonnement à prendre des décisions correctes. Les actions d'apprentissage, quant à elles, apprennent et mettent à jour en permanence les connaissances par l'apprentissage et la mise à jour des mémoires sémantiques, procédurales et situationnelles, améliorant ainsi la qualité et l'efficacité du raisonnement et de la prise de décision.
Actions de raisonnement. Un processus de raisonnement rigoureux est essentiel pour que les agents LLM puissent accomplir leurs tâches, et la pensée en chaîne (CoT) est un mode de raisonnement efficace. Avec l'aide de la CoT, les LLM peuvent comprendre en profondeur les problèmes, décomposer les tâches complexes et générer des réponses de haute qualité. Comme le montre la figure 3 Comme nous l'avons vu, les recherches existantes ont exploré différentes formes de TdC, notamment la TdC/planification simple, le SCoT, le brainstorming et la TdC arborescente. Plus précisément, une TdC/planification simple est un paragraphe de l'invite qui décrit le processus de raisonnement du problème. Dans les premiers travaux, une simple phrase a été incluse dans l'invite afin de guider le LLM pour générer une pensée en chaîne afin d'améliorer la résolution du problème. Par exemple, Hu et al.2024bUne approche d'apprentissage contextuel pour guider le débogage du LLM à l'aide de la méthode de "débogage par impression" est proposée. Au fur et à mesure que la technologie LLM évolue, la conception des CoT devient plus complexe. Inspirés par le processus de vérification de la faisabilité des scénarios de test par les développeurs, Su et al. (2023) a conçu le raisonnement en chaîne (CoT) pour extraire les connaissances humanoïdes et le raisonnement logique de LLM.Le et al. (2023) ont proposé un nouveau cadre appelé CodeChain, qui génère des chaînes autocorrectives guidées par un certain nombre de sous-modules représentatifs générés lors des itérations précédentes.Huang et al.2024) a proposé CodeCoT, qui génère des cas de test pour vérifier que le code ne contient pas d'erreurs de syntaxe pendant l'exécution, puis combine la pensée en chaîne avec le processus d'autocontrôle de la génération de code par le biais d'une phase d'autocontrôle.Tian et Chen (2023) présente une nouvelle technique d'incitation, conçoit des incitations sophistiquées à la réflexion et un retour d'information basé sur l'incitation, et explore pour la première fois la manière d'améliorer les performances de génération de code des LLM.
Compte tenu des caractéristiques du code, certaines recherches ont proposé une chaîne de pensée structurée pour introduire des informations structurelles sur le code. Comme le montre la Fig. 3 Comme le montre le point (b), le CoT structuré présente le processus de raisonnement sous la forme d'un pseudo-code, avec des boucles, des branches et d'autres structures. Par exemple, Li et al.2023a) ont proposé des CoT structurés (SCoT), qui peuvent utiliser efficacement les riches informations structurelles du code source, ainsi qu'une nouvelle technique d'indication de génération de code, l'indication SCoT.Christianos et al. (2023) propose un modèle de cadre générique qui utilise la construction de fonctions intrinsèques et extrinsèques pour améliorer la compréhension de la structure du raisonnement et incorporer le raisonnement structuré dans les stratégies des intelligences IA. En outre, plusieurs études ont proposé d'autres formes de CoT, telles que le brainstorming et la CoT arborescente, comme le montre la figure 3 (c) et (d) dans ce qui suit. Le brainstorming consiste à générer des mots-clés pertinents à partir des données d'entrée. Par exemple, Li et al. (2023e) ont proposé un nouveau cadre de brainstorming pour la génération de code qui utilise des étapes de brainstorming pour générer et sélectionner différentes idées, facilitant ainsi le raisonnement algorithmique avant la génération de code. Tree CoT est un exemple de l'approche de Feng et Chen (2023) est proposé, qui explore et met à jour dynamiquement le CoT avec des nœuds dans l'arbre dans différents états, y compris les nœuds terminés, nouveaux, nouvellement dérivés et en attente.
En outre, plusieurs études ont exploré d'autres techniques pour améliorer la capacité de raisonnement et l'efficacité du raisonnement des intelligences sur la base de grands modèles de langage. Par exemple, Wang et al.2024a) a proposé TOOLGEN, qui consiste en une phase d'insertion de déclencheurs et de mise au point du modèle (hors ligne), et en une phase de génération de code d'intégration d'outils (en ligne). TOOLGEN utilise les améliorations du corpus de code donné pour déduire où déclencher l'autocomplétion des outils, et pour marquer les jetons spéciaux Token.Yang et al. (2023a) ont conçu une nouvelle méthode, COTTON, qui génère automatiquement des CoTs à l'aide d'un modèle de langage léger. Zhang et al. (2023c) a proposé un décodage par auto-inférence, un nouveau schéma d'inférence qui génère des ébauches de tokens et vérifie ensuite les tokens issus de ces ébauches à l'aide du modèle de bigramme original en une seule étape.Zhou et al. (2023) introduit un cadre de résolution adaptatif, qui ajuste stratégiquement la stratégie de résolution en fonction de la difficulté du problème, ce qui améliore non seulement l'efficacité du calcul, mais aussi les performances globales.
Opérations d'extraction. Les opérations d'extraction permettent d'extraire des informations pertinentes de la base de connaissances afin d'aider les opérations de raisonnement à prendre les bonnes décisions. Les données d'entrée utilisées pour l'extraction et le type de contenu de sortie obtenu grâce à l'extraction varient. Comme le montre le tableau 1 Comme indiqué, les entrées et les sorties peuvent être du texte, du code ou des messages mixtes contenant du texte et du code. Plus précisément, ils peuvent être classés dans les catégories suivantes : (1) Texte-code. En général, les exigences sont utilisées comme entrées pour récupérer le code pertinent ou les API utilisées, qui sont ajoutées aux messages-guides pour générer des codes de réponse. Par exemple, Zan et al.2022a) proposent un nouveau cadre qui comprend les modules APIRetriever et APICoder. Plus précisément, APIRetriever récupère les API utiles, puis APICoder utilise ces API pour générer du code. de-Hallucinator Eghbali et Pradel (2024) Récupérer les références API appropriées par le biais d'indices et utiliser les indices obtenus pour interroger le modèle de manière itérative. (2) Texte à texte. Parfois, les exigences sont également utilisées comme données d'entrée pour récupérer des documents pertinents ou des questions similaires afin de faciliter la réalisation de la tâche. Par exemple, Zhou et al.2022) a présenté DocPrompting, une méthode de génération de code en langage naturel qui répond explicitement à une intention donnée de la BN en récupérant des fragments de documents pertinents. Zhang et al. (2024) propose CodeAgent, un nouveau cadre d'agent basé sur un grand modèle de langage qui intègre des outils externes pour récupérer des informations pertinentes en vue d'une génération efficace de code au niveau de la base de code, et qui prend en charge l'interaction avec les artefacts logiciels pour la récupération d'informations, la navigation dans les symboles de code et les tests de code. (3) Code-Code. Le code peut également être utilisé comme entrée pour récupérer un code similaire ou apparenté afin de fournir une référence pour la génération du code cible. Par exemple, Zhang et al. (2023b) propose RepoCoder, un cadre simple, générique et efficace qui utilise un processus itératif de génération d'informations pour récupérer des informations au niveau du code basées sur la similarité. (4) Code hybride. Outre l'utilisation d'un seul type d'information (par exemple, un texte ou un code) comme entrée pour récupérer les codes pertinents, plusieurs types d'information peuvent être combinés en informations hybrides pour améliorer la précision de la récupération. Par exemple, Li et al.2022a) utilise un puissant modèle de génération de code en augmentant une requête de document avec des extraits de code générés par le modèle de génération (générant des sections peer-to-peer) et en utilisant ensuite la requête augmentée pour récupérer le code.ToolCoder Zhang et al. (2023d) Utiliser les moteurs de recherche en ligne et les outils de recherche de documentation pour obtenir des recommandations appropriées sur les API afin de faciliter la sélection des API et la génération du code. En outre, la recherche n'est pas limitée à un seul type d'information. (5) Hybride de code. Il utilise le code comme entrée et récupère une variété d'informations pertinentes. Par exemple, Nashid et al. (2023) a proposé une nouvelle technique appelée CEDAR pour la création d'invites qui récupère automatiquement les présentations de code pertinentes pour la tâche du développeur, sur la base d'une analyse de l'intégration ou de la fréquence.Geng et al. (2023) Utilisation d'un paradigme d'apprentissage contextuel pour générer des annotations multi-intensives pour le code, en sélectionnant différents exemples d'annotations de code à partir d'un ensemble d'exemples. (6) Mélange de textes. Il utilise les exigences comme entrée pour récupérer le code pertinent et les problèmes similaires à des fins de référence. Par exemple, Li et al.2023b) a proposé LAIL (LLM-Aware In-context Learning), une nouvelle méthode de sélection basée sur l'apprentissage pour sélectionner les exemples à utiliser pour la génération de code.Li et al. (2023c) introduit un nouveau mécanisme appelé AceCoder qui utilise la récupération à la demande de programmes similaires comme exemples dans les invites pour fournir une grande quantité de contenu pertinent (par exemple, des algorithmes, des API).
Selon une étude précédente, Li et al. (2022c) ; Zhao et al.2024) ; Hu et al.2023a), les méthodes de recherche existantes peuvent être classées en recherche éparse, recherche dense Wang et al. (2024e), et d'autres méthodes Hayati et al. (2018) ; Zhang et al.2020) ; Poesia et al.2022) ; Ye et al.2021) ; Shu et al.2022). Fig. 4 montre le pipeline de la récupération éparse et dense. La méthode d'extraction dense transforme l'entrée en un vecteur à haute dimension et sélectionne les k échantillons présentant la plus grande similarité en comparant les similarités sémantiques, tandis que la méthode d'extraction clairsemée calcule l'échantillon le plus proche de l'entrée. BM25 ou des mesures telles que TF-IDF pour évaluer la similarité des textes entre les échantillons. En outre, diverses autres méthodes de recherche ont été explorées. Par exemple, certaines études se sont concentrées sur le calcul de la distance d'édition entre des textes en langue naturelle Hayati et al. (2018), ou un arbre syntaxique abstrait (AST) de fragments de code Zhang et al. (2020) ; Poesia et al.2022). Il existe également des méthodes qui utilisent les graphes de connaissances pour la recherche Ye et al. (2021) ; Shu et al.2022).
Les méthodes d'extraction denses et éparses sont les deux méthodes d'extraction les plus courantes. Parmi celles-ci, les techniques de recherche dense sont généralement plus performantes que les méthodes de recherche éparse. Toutefois, la récupération éparse tend à être plus efficace et, dans certains cas, peut atteindre des performances comparables à celles de la récupération dense. C'est pourquoi de nombreuses études choisissent d'utiliser des méthodes de récupération éparses pour des raisons d'efficacité.
Comportement d'apprentissage. Le comportement d'apprentissage est l'apprentissage et la mise à jour continus des connaissances par l'apprentissage et la mise à jour de la mémoire sémantique et procédurale afin d'améliorer la qualité et l'efficacité du raisonnement et de la prise de décision. (1) Utiliser les connaissances pour mettre à jour la mémoire sémantique. La mémoire sémantique existe principalement dans une base de connaissances, stockant la connaissance du monde sous-jacente, qui peut être mise à jour en actualisant la base de connaissances à l'aide de la connaissance du code reconnu ou en construisant une nouvelle base de connaissances. Par exemple, Liao et al. (2023) a proposé un nouveau cadre de génération de code, appelé A3-CodGen, pour générer un code de meilleure qualité en utilisant trois types d'informations obtenues à partir des bibliothèques récupérées (informations locales du fichier de code actuel, informations globales d'autres fichiers de code et informations de bibliothèques tierces).Du et al.2024) ont proposé une nouvelle technique de détection des vulnérabilités, Vul-RAG, basée sur de grands modèles linguistiques (LLM), qui extrait des connaissances multidimensionnelles des instances CVE existantes via les LLM pour construire une base de connaissances sur les vulnérabilités. (2) Mise à jour des connaissances tacites. Étant donné que la connaissance tacite est stockée dans les paramètres du grand modèle linguistique, les paramètres du LLM peuvent être mis à jour en affinant le modèle. Les travaux antérieurs construisent généralement de nouvelles données pour superviser le réglage fin des modèles pré-entraînés, mettant ainsi à jour les paramètres complets des modèles Xia et al. (2023b) ; Wei et al.2023a(math.) genreb) ; Tao et al.2024) ; Wang et al.2024d) ; Liu et al.2023a) ; Wang et al.2023d) ; Shi et al.2023b). Toutefois, le coût du réglage fin du modèle augmente avec la taille des paramètres. Certains travaux ont tenté d'explorer des techniques de réglage fin efficaces au niveau des paramètres. Weyssow et al. (2023) ; Shi et al.2023c). Par exemple, Weyssow et al. (2023) ont mené une étude approfondie des techniques de réglage fin efficace des paramètres (PEFT) pour les grands modèles de langage dans le cadre de scénarios de génération automatisée de code.Wang et al.2023b) ont inséré et affiné l'adaptateur de structure efficacement affiné au lieu d'affiner le modèle pré-entraîné. La plupart des travaux actuels utilisent des techniques de réglage fin efficaces pour affiner le modèle. Guo et al. (2024) ; Shi et al.2023d).
(3) Mise à jour du code de l'agent. Le code de l'agent désigne les programmes ou algorithmes qu'un agent exécute pour guider son comportement et son processus de prise de décision. Les agents basés sur les grands modèles de langage le font en construisant des invites appropriées en tant que code d'agent pour réguler la façon de percevoir l'environnement, de raisonner et de prendre des décisions, et d'effectuer des opérations. La plupart des travaux utilisent des techniques d'alignement des instructions pour aligner la sortie du grand modèle de langage sur les instructions d'entrée. Par exemple, Muennighoff et al. (2023) tire parti de la structure naturelle des commits Git pour associer des modifications de code à des instructions humaines et utiliser ces instructions pour procéder à des ajustements.Hu et al. (2023b) ont construit le premier ensemble de données adapté aux instructions, InstructCoder, conçu pour adapter les grands modèles de langage à l'édition de code à usage général. Ces données de haute qualité peuvent apporter de nouvelles connaissances et mettre à jour la mémoire sémantique pour les modèles de langage plus importants.Zan et al. (2023) ont mené des expériences approfondies avec huit langages de programmation populaires sur StarCoder afin de déterminer si les langages de programmation peuvent s'améliorer mutuellement grâce à l'ajustement des instructions.
2.3.2 Action extérieure
Dialogue avec des humains/agents Les agents peuvent interagir avec des humains ou d'autres agents et recevoir de riches informations en retour au cours de l'interaction, ce qui permet d'enrichir les connaissances de l'agent et de rendre les réponses du grand modèle de langage plus précises. En particulier, de nombreux travaux ont été réalisés en utilisant de grands modèles de langage comme agents d'interaction, par exemple, Lu et al. (2024) ; Jain et al.2023) ; Paul et al.2023) ; Shojaee et al.2023) ; Liu et al.2023b) ; Wang et al.2023e) ; Mu et al.2023) ; Madaan et al.2023Jain et al.2023) a proposé RLCF, qui utilise le retour d'information de différents grands modèles de langage pour comparer le code généré au code de référence afin de poursuivre la formation de grands modèles de langage pré-entraînés grâce à l'apprentissage par renforcement.REFINER Paul et al. (2023) est un cadre permettant d'interagir avec des modèles critiques qui fournissent un retour d'information automatique.Yang et al. (2023b) ont examiné et clarifié la manière dont les modèles linguistiques de grande taille bénéficient de la modélisation discriminante.Moon et al. (2023) ont construit un nouvel ensemble de données conçu spécifiquement pour la réparation de codes et l'ont utilisé pour obtenir un modèle capable de générer automatiquement un retour d'information utile par le biais de Preference-Optimised Tuning and Selection.PPOCoder Shojaee et al.2023) se compose de deux éléments, le critique et l'interprète, et est optimisé à l'aide de PPO grâce à l'interaction entre ces deux modèles.RLTF Liu et al. (2023b) interagit avec d'autres modèles qui utilisent des données réelles et des données mises en cache en ligne générées par l'interaction avec le compilateur pour calculer les pertes et mettre à jour les poids du modèle par rétroaction de gradient.Wang et al. (2023e) ont proposé ChatCoder, une méthode permettant d'affiner les exigences en discutant avec un grand modèle linguistique.Sun et al. (2023a) a proposé Clover, un outil qui vérifie la cohérence entre le code, les chaînes de documentation et les commentaires formels.ClarifyGPT Mu et al. (2023) invite un autre grand modèle linguistique à générer des questions de clarification ciblées afin d'affiner les exigences ambiguës de l'utilisateur.Reflexion Shinn et al.2023) peut interagir avec des humains et d'autres agents pour générer un retour d'information externe.Self-Refine Madaan et al. (2023) utilise un grand modèle linguistique unique comme générateur, correcteur et fournisseur de retour d'information sans données de formation supervisées, formation supplémentaire ou apprentissage par renforcement.Repilot Wei et al.2023c) synthétise des correctifs candidats grâce à l'interaction entre le modèle linguistique global et le moteur de complétion. Plus précisément, Repilot élague les tokens infaisables en se fondant sur les suggestions fournies par le modèle linguistique global.2023c) a présenté MINT, un test de référence qui permet d'évaluer la capacité d'un grand modèle linguistique à résoudre des tâches interactives à plusieurs tours en utilisant le retour d'information en langage naturel d'utilisateurs simulés avec GPT-4. Hong et al. (2023b) a proposé MetaGPT, un cadre de métaprogrammation innovant qui incorpore des flux de travail humains efficaces dans une collaboration multi-agents basée sur un vaste modèle linguistique.2023a) ont présenté AgentCoder, une nouvelle solution de génération de code qui comprend un cadre multi-agents avec des agents spécialisés : un agent programmeur, un agent concepteur de tests et un agent d'exécution de tests.
L'environnement numérique Les agents peuvent interagir avec des systèmes numériques tels que la plateforme OJ, des pages web, des compilateurs et d'autres outils externes, et les informations obtenues au cours de l'interaction peuvent être utilisées comme retour d'information pour s'optimiser. Plus précisément, les compilateurs sont les outils externes les plus courants, comme le montrent Jain et al (2023) ; Shojaee et al.2023) ; Liu et al.2023b) ; Wang et al.2022) ; Zhang et al.2023e). Par exemple, RLCF Jain et al. (2023) vérifie que le code qu'il génère passe un ensemble de contrôles de correction en entraînant un grand modèle de langage pré-entraîné à l'aide d'informations dérivées du compilateur.PPOCoder Shojaee et al. (2023) peut intégrer le retour d'information du compilateur et l'alignement structurel en tant que connaissances supplémentaires pour l'optimisation du modèle afin d'affiner le modèle de génération de code grâce à l'apprentissage par renforcement profond (RL).RLTF Liu et al. (2023b) interagit avec le compilateur pour générer des paires de données d'entraînement et les stocker dans un cache en ligne.Wang et al. (2022) ont proposé COMPCODER, qui utilise le retour d'information du compilateur pour la génération de code compilable.Zhang et al. (2023e) ont proposé Self-Edit, une approche de génération et d'édition pour améliorer la qualité du code dans les tâches de programmation compétitives en utilisant les résultats d'exécution du code généré à partir d'un grand modèle de langage. En outre, de nombreux travaux ont construit des outils, tels que des moteurs de recherche, des moteurs de complémentation, etc., afin d'étendre les capacités des agents intelligents.2024a) ; Zhang et al.2024) ; Agrawal et al.2023) ; Wei et al.2023c) ; Zhang et al.2023fWang et al.2024a) a présenté TOOLGEN, une méthode d'intégration d'outils d'autocomplétion dans le processus de génération de grands modèles de langage pour traiter les erreurs de dépendance telles que les variables non définies et les membres manquants.Zhang et al.2024) a présenté CodeAgent, un nouveau cadre d'agent pour la modélisation de grands langages qui intègre cinq outils de programmation pour permettre l'interaction avec la documentation logicielle à des fins d'information, la navigation dans les symboles de code et les tests de code pour une génération efficace de code au niveau du référentiel.Agrawal et al. (2023) a proposé MGD, une méthode de décodage guidée par le moniteur dans laquelle le moniteur utilise l'analyse statique pour guider le décodage.Repilot Wei et al. (2023c) synthétise les correctifs candidats grâce à l'interaction entre le grand modèle linguistique et le moteur de complétion. Plus précisément, Repilot complète Token sur la base des suggestions fournies par le moteur de complétion.
3 Défis et opportunités
Après avoir analysé le contenu relatif au travail sur les agents basés sur le Grand Modèle de Langage (LLM) dans le génie logiciel, il est évident que l'intégration de ces deux domaines est encore confrontée à de nombreux défis, ce qui limite leur développement. Dans cette section, nous discutons en détail des défis actuels rencontrés par les agents basés sur le LLM dans le génie logiciel et nous discutons des opportunités de travail futur basées sur l'analyse des défis existants.
3.1 Exploration insuffisante des modules sensoriels
par exemple, le n° 1 2.1 Comme décrit dans la section, il n'y a pas assez d'exploration d'agents basés sur LLM pour les modules perceptuels dans le génie logiciel. Contrairement au langage naturel, le code est un type spécial de représentation qui peut être traité comme un texte ordinaire ou converti en représentations intermédiaires avec des caractéristiques de code telles que les arbres syntaxiques abstraits (AST), les graphes de flux de contrôle (CFG), etc. Les travaux existants, tels que ceux d'Ahmed et al. (2024) ; Al-Kaswan et al.2023) ; Arakelyan et al. (2023) ; Beurer-Kellner et al. (2023) ; Alqarni et Azim (2022) est généralement considéré comme un texte et il y a encore un manque de recherche explorant les modalités d'entrée basées sur les arbres/graphiques dans les agents basés sur le LLM travaillant dans l'ingénierie logicielle. En outre, les modalités d'entrée visuelles et auditives sont également encore sous-explorées.
3.2 Compétences en matière de jeux de rôle
Les agents basés sur le LLM sont souvent amenés à jouer différents rôles dans une variété de tâches, chacune nécessitant des compétences spécifiques. Par exemple, un agent peut avoir besoin d'agir en tant que générateur de code lorsqu'on lui demande de générer du code, et en tant que testeur de code lorsqu'il effectue des tests de code. En outre, dans certains scénarios, ces agents peuvent avoir besoin de plus d'une capacité à la fois. Par exemple, dans les scénarios de génération de code, l'agent doit agir à la fois comme un générateur de code et comme un testeur, et doit donc avoir la capacité de générer et de tester du code (Huang et al. 2023b). Dans le domaine du génie logiciel, il existe de nombreuses tâches de niche pour lesquelles l'apprentissage LLM n'est pas suffisant, ainsi que des tâches complexes qui exigent des agents qu'ils aient des capacités multiples, telles que des scénarios de génération de tests, le développement frontal et la résolution de problèmes au niveau du référentiel. Ainsi, l'avancement de la recherche sur la manière de permettre aux agents d'adopter efficacement de nouveaux rôles et de gérer les exigences de la performance multirôle représente une direction prometteuse pour les travaux futurs.
3.3 Base de recherche de connaissances inadéquate
Les bases de récupération de connaissances externes constituent une partie importante de la mémoire sémantique dans le module de mémoire de l'agent et un outil externe important avec lequel les agents peuvent interagir. Dans le domaine du traitement du langage naturel (NLP), il existe des bases de connaissances telles que Wikipedia comme bases de recherche externes (Zhao et al. 2023). Toutefois, dans le domaine du génie logiciel, il n'existe pas de base de connaissances reconnue et faisant autorité qui contienne une multitude de connaissances liées au code, telles que la syntaxe de base de divers langages de programmation, les algorithmes couramment utilisés, les connaissances liées aux structures de données et aux systèmes d'exploitation. Dans les recherches futures, des efforts peuvent être faits pour développer une base de connaissances complète sur les codes qui peut être utilisée comme base pour la recherche externe d'agents. Cette base de connaissances enrichira les informations disponibles, améliorant ainsi la qualité et l'efficacité du processus de raisonnement et de prise de décision.
3.4 Phénomènes illusoires dans les agents basés sur le LLM
De nombreuses études relatives aux agents basés sur le LLM considèrent le LLM comme le noyau cognitif de l'agent, et la performance globale de l'agent est étroitement liée aux capacités du LLM sous-jacent. Les études existantes (Pan et al. 2024; Liu et al. 2024a) suggère que les agents basés sur le LLM peuvent créer des hallucinations, telles que la génération d'API inexistantes lors de l'exécution de tâches d'ingénierie logicielle. Dans le même temps, l'optimisation de l'agent peut également atténuer inversement les hallucinations des agents basés sur le LLM, mettant en évidence une relation bidirectionnelle entre la performance de l'agent et l'atténuation des hallucinations. Bien que plusieurs études aient exploré le phénomène des hallucinations dans le LLM, il reste des défis importants à relever pour traiter les hallucinations dans les agents basés sur le LLM. L'exploration des types d'hallucinations présentes dans les agents LLM, l'analyse approfondie des causes de ces hallucinations et la proposition de méthodes efficaces pour soulager les hallucinations sont des opportunités importantes pour la recherche future.
3.5 Efficacité de la collaboration multi-intelligence
Dans le cadre d'une collaboration multi-intelligence, chaque intelligence individuelle doit jouer un rôle différent pour accomplir une tâche spécifique, puis les résultats des décisions de chaque intelligence sont combinés pour s'attaquer ensemble à des objectifs plus complexes Chen et al. (2023b) ; Hong et al.2023a) ; Huang et al.2023b) ; Wang et al.2023a). Toutefois, ce processus nécessite généralement une grande quantité de ressources informatiques pour chaque intelligence, ce qui entraîne un gaspillage de ressources et une diminution de l'efficacité. En outre, chaque intelligence individuelle doit synchroniser et partager diverses informations, ce qui ajoute des coûts de communication supplémentaires et affecte le temps réel et la réactivité de la collaboration. La gestion et l'allocation efficaces des ressources informatiques, la minimisation des coûts de communication entre les intelligences et la réduction des frais généraux de raisonnement des intelligences individuelles sont les principaux défis à relever pour améliorer l'efficacité de la collaboration multi-intelligence. La résolution de ces problèmes offre d'importantes possibilités de recherche future.
3.6 Application des techniques de génie logiciel à Intelligentsia sur la base de grands modèles linguistiques
Les techniques de génie logiciel, en particulier les techniques de codage, peuvent faire progresser de manière significative le domaine de l'intelligentsia, ce qui suggère une relation mutuellement bénéfique entre les deux domaines. Par exemple, les techniques de test des logiciels peuvent être adaptées pour identifier les comportements anormaux et les défauts potentiels de l'intelligentsia sur la base de grands modèles de langage. En outre, les améliorations apportées aux outils logiciels (par exemple, les API et les bibliothèques) peuvent également améliorer les performances des intelligentsia basées sur de grands modèles de langage, en particulier pour les intelligentsia ayant des capacités d'utilisation d'outils. En outre, les techniques de gestion des paquets peuvent être adaptées pour gérer efficacement le système de corps intelligent. Par exemple, le contrôle des versions peut être appliqué pour surveiller et coordonner les mises à jour des différentes intelligences dans un système de corps intelligent, ce qui améliore la compatibilité et l'intégrité du système.
Cependant, la recherche dans ce domaine reste limitée. Par conséquent, l'exploration de l'incorporation de techniques SE plus complexes dans les systèmes corporels intelligents représente une direction prometteuse pour la recherche future qui pourrait faire progresser les deux domaines.
4 Conclusion
Afin d'analyser en profondeur les travaux sur la combinaison des intelligences basées sur les grands modèles de langage avec l'ingénierie logicielle, nous avons d'abord recueilli de nombreuses études sur la combinaison des intelligences basées sur les grands modèles de langage avec des tâches dans le domaine de l'ingénierie logicielle. Ensuite, après avoir rassemblé et analysé les études obtenues pendant la période de collecte des données, nous présentons un cadre pour les intelligences basées sur les grands modèles de langage dans l'ingénierie logicielle qui contient trois modules clés : la perception, la mémoire et l'action. Enfin, nous présentons des informations détaillées sur chaque module du cadre, analysons les défis actuels auxquels est confrontée l'intelligentsia basée sur un grand modèle de langage dans le domaine du génie logiciel et indiquons quelques possibilités de travaux futurs.
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...