Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel

Améliorer les recommandations d'API pour les développeurs

Une nouvelle méthode améliore les suggestions d'API pour aider le développement de logiciels.

― 10 min lire


Révolution desRévolution desrecommandations d'APIefficacement.développeurs trouvent des APIsTransformer la façon dont les
Table des matières

Dans le développement logiciel d'aujourd'hui, les Interfaces de Programmation d'Application (APIS) jouent un rôle crucial. Elles permettent aux Développeurs d'utiliser des fonctions préexistantes et de connecter différents systèmes logiciels, rendant le processus de développement plus rapide et plus facile. Cependant, avec le nombre croissant d'APIs disponibles, trouver la bonne pour des tâches spécifiques peut être un vrai casse-tête. Cet article explore comment améliorer les recommandations d'API pour les développeurs.

Le besoin de meilleures recommandations d'API

Quand les développeurs bossent sur des projets, ils doivent souvent trouver des APIs qui répondent à leurs besoins. Le processus de recommandation d'API aide à ce niveau en suggérant des APIs adaptées en fonction des requêtes des développeurs. Toutefois, les méthodes traditionnelles se concentrent principalement sur la recommandation de plusieurs APIs basées sur la similarité de texte. Cela signifie que les développeurs doivent encore trier les suggestions pour trouver la bonne API, ce qui peut être frustrant et long.

Une nouvelle approche pour la recommandation d'API

L'idée d'améliorer les recommandations d'API s'inspire des avancées en traduction automatique. Au lieu de simplement suggérer une liste d'APIs, on peut le voir comme une tâche de génération de l'API la plus appropriée directement à partir de l'entrée du développeur. On propose une méthode qui se concentre sur la complétion du nom de l'API en fonction d'une invite donnée (informations partielles sur l'API). Cette approche est différente des méthodes précédentes et vise à mieux répondre aux besoins des développeurs.

Défis avec les méthodes actuelles

Lors de nos premières tentatives pour générer des APIs directement, nous avons rencontré des problèmes principalement dus à des erreurs dans la génération des préfixes d'API. Un préfixe est le début du nom de l'API qui peut aider à guider la génération de l'API complète. Les développeurs savent souvent une partie du nom de l'API, comme le préfixe, et cette connaissance peut conduire à des recommandations d'API plus précises. Cependant, nos premières tentatives de générer des APIs uniquement sur la base des requêtes des développeurs sans tenir compte des préfixes connus n'ont pas été concluantes.

La tâche de complétion automatique d'API

Pour relever ces défis, nous avons changé notre attention vers une tâche de complétion automatique. Dans cette tâche, les développeurs peuvent fournir une description du problème qu'ils rencontrent avec des préfixes qu'ils connaissent. De cette façon, le système peut générer le nom complet de l'API de manière plus précise. L'élément clé ici est d'utiliser l'apprentissage par invite, qui aide le modèle à générer de meilleurs résultats en fonction de l'entrée qu'il reçoit.

Importance des données de qualité

Le succès du système de recommandation d'API repose en grande partie sur la qualité des données d'entraînement utilisées. Collecter des données de haute qualité peut prendre du temps. Pour rendre le processus de formation plus efficace, nous avons introduit une méthode appelée formation adversariale. Cette technique aide à créer des exemples supplémentaires d'entraînement qui améliorent la capacité du modèle à générer des recommandations d'API précises.

Évaluation de notre approche

Nous avons mené des tests approfondis en utilisant un ensemble de 33 000 requêtes de développeurs et leurs APIs correspondantes. Les résultats ont montré que notre méthode surpassait significativement les techniques existantes, avec des améliorations de plus de 40 % dans certaines métriques d'évaluation. Ces métriques nous aident à déterminer l'efficacité de notre système à générer la bonne API.

Le rôle des connaissances préalables

Pour comprendre les besoins des développeurs, nous avons d'abord examiné les systèmes de recommandation d'API existants. Par exemple, les anciens systèmes s'appuyaient souvent sur la simple comparaison des similarités de texte pour suggérer des APIs. Cette méthode entraînait généralement une gamme de suggestions qui n'incluaient pas toujours l'API souhaitée. Nous avons cherché à changer cela en créant une approche qui se concentre directement sur la génération des APIs requises.

Tirer parti du contexte avec les invites

Une amélioration majeure dans notre approche est l'incorporation des invites. En permettant aux développeurs d'entrer à la fois une requête et des préfixes connus, le modèle peut générer des Complétions d'API plus précises. L'apprentissage par invitation, qui fournit un contexte au modèle, est essentiel dans ce processus. Cette méthode garantit que les APIs générées sont plus pertinentes et alignées avec ce que les développeurs recherchent.

Augmentation des données grâce à la formation adversariale

Un des défis que nous avons rencontrés était de nous assurer que nous avions suffisamment de données d'entraînement pour améliorer la performance du modèle. Pour y remédier, nous avons utilisé la formation adversariale, qui crée des exemples plus variés d'après les données d'entraînement originales. Cette technique aide le modèle à mieux apprendre en l'exposant à différents scénarios et requêtes d'API potentielles qu'il pourrait rencontrer dans des applications réelles.

Comprendre les tâches de recommandation d'API

La recommandation d'API implique de suggérer des APIs appropriées en fonction des besoins d'un développeur et de son comportement passé. En améliorant ces systèmes, les développeurs peuvent utiliser et intégrer des APIs plus efficacement, rendant le processus de développement logiciel plus fluide.

Travaux précédents sur la recommandation d'API

Divers systèmes ont été proposés pour améliorer les recommandations d'API. Par exemple, certaines méthodes comme DeepAPI et RACK visaient à générer des séquences d'utilisation d'API et à recommander des APIs pertinentes basées sur des associations de mots-clés. Cependant, ces systèmes ont souvent échoué à fournir l'API exacte requise pour des requêtes spécifiques, laissant les développeurs chercher parmi plusieurs suggestions.

Notre cadre proposé

Le cadre que nous proposons pour la complétion automatique d'API se compose de trois parties principales :

  1. Prétraitement des données : Dans cette étape, nous préparons les données pour simuler efficacement le scénario de complétion d'API. Cela implique de créer des invites représentant des noms d'API incomplets.

  2. Architecture du modèle : Notre modèle utilise les données traitées pour affiner un modèle pré-entraîné. Ce modèle apprend à compléter les noms d'API en fonction des invites fournies par les développeurs.

  3. Application du modèle : Dans cette phase, le modèle entraîné peut prendre une requête d'entrée d'un développeur avec des préfixes connus pour recommander des APIs complètes.

Étapes de prétraitement des données

Pour simuler la tâche de complétion d'API, nous commençons par créer des invites en masquant des parties des noms d'API. En faisant cela, nous pouvons générer des APIs incomplètes que le modèle tentera de compléter. Le processus met l'accent sur les derniers mots de l'API, qui sont souvent les plus difficiles à mémoriser pour les développeurs.

Construire un modèle robuste

Une fois nos données d'entraînement préparées, nous utilisons l'architecture du modèle pour affiner un modèle pré-entraîné spécifiquement pour la tâche de complétion d'API. Le processus implique de faire des connexions entre divers mots dans l'API et le contexte fourni par la requête du développeur.

Formation avec des exemples adversariaux

Dans la phase d'entraînement, nous appliquons la formation adversariale pour améliorer la performance du modèle. Cette technique génère des exemples supplémentaires difficiles que le modèle doit apprendre à gérer. L'utilisation de ces exemples adversariaux permet au modèle de devenir plus résistant et précis lors de la prédiction des APIs.

Résultats et comparaisons

Tout au long de notre recherche, nous avons constamment évalué la performance de notre modèle par rapport aux méthodes existantes. Par exemple, les résultats indiquent que notre approche a conduit à des améliorations substantielles en termes de rang réciproque moyen et de précision moyenne. Ces résultats soulignent l'efficacité de notre nouveau modèle à générer des APIs qui se rapprochent de ce dont les développeurs ont réellement besoin.

Analyse de sensibilité des paramètres du modèle

Dans notre analyse, nous avons également exploré comment différents réglages des hyper-paramètres influençaient la performance du modèle. En ajustant systématiquement ces paramètres, nous avons trouvé les configurations optimales qui mèneraient aux meilleurs résultats.

L'impact de la longueur de l'invite

Nous avons examiné comment la longueur de l'invite – c'est-à-dire combien d'informations le développeur fournit sur l'API – affecte les résultats. Nos découvertes ont révélé que les invites plus longues conduisaient généralement à de meilleures suggestions d'API. Cela souligne l'importance de fournir le plus de contexte pertinent possible lorsque les développeurs font des requêtes.

Améliorer les recommandations d'API avec des vérifications de validité

Dans le cadre de nos efforts pour améliorer la qualité des suggestions d'API, nous avons mis en place une étape de vérification. Cela implique de vérifier les APIs générées par rapport à une bibliothèque complète d'APIs pour s'assurer qu'elles sont valides et utiles. Si une API générée n'existe pas dans la bibliothèque, elle est écartée des recommandations.

Reconnaître les limitations

Bien que notre approche ait montré des promesses, nous reconnaissons également ses limitations. Par exemple, il arrive que les développeurs ne décrivent pas avec précision leurs besoins, ce qui peut conduire à des suggestions d'API de mauvaise qualité. Il y a aussi un potentiel pour que les APIs générées contiennent des erreurs même si les invites sont correctes. Reconnaître ces domaines offre une occasion de perfectionnement supplémentaire.

Directions futures

En regardant vers l'avenir, il y a de nombreuses façons d'améliorer notre modèle de complétion d'API. Nous pourrions élargir notre recherche pour inclure d'autres langages de programmation, permettant une applicabilité plus large. De plus, intégrer des techniques d'augmentation de données plus avancées et utiliser des Modèles de langage plus grands pourraient donner des résultats encore meilleurs.

Conclusion

En résumé, notre étude présente un avancement significatif dans les recommandations d'API en le cadrant comme une tâche de complétion automatique d'API. En permettant aux développeurs d'entrer à la fois des requêtes et des préfixes connus, notre méthode proposée génère des APIs plus précisément et efficacement. Grâce à des tests rigoureux et à une validation, nous avons démontré que cette approche surpasse les méthodes existantes, offrant ainsi des contributions précieuses au domaine du développement logiciel.

En partageant nos découvertes et méthodologies, nous espérons inspirer d'autres recherches et améliorations dans les systèmes de recommandation d'API, permettant ainsi aux développeurs de travailler plus efficacement sur leurs projets.

Source originale

Titre: APICom: Automatic API Completion via Prompt Learning and Adversarial Training-based Data Augmentation

Résumé: Based on developer needs and usage scenarios, API (Application Programming Interface) recommendation is the process of assisting developers in finding the required API among numerous candidate APIs. Previous studies mainly modeled API recommendation as the recommendation task, which can recommend multiple candidate APIs for the given query, and developers may not yet be able to find what they need. Motivated by the neural machine translation research domain, we can model this problem as the generation task, which aims to directly generate the required API for the developer query. After our preliminary investigation, we find the performance of this intuitive approach is not promising. The reason is that there exists an error when generating the prefixes of the API. However, developers may know certain API prefix information during actual development in most cases. Therefore, we model this problem as the automatic completion task and propose a novel approach APICom based on prompt learning, which can generate API related to the query according to the prompts (i.e., API prefix information). Moreover, the effectiveness of APICom highly depends on the quality of the training dataset. In this study, we further design a novel gradient-based adversarial training method {\atpart} for data augmentation, which can improve the normalized stability when generating adversarial examples. To evaluate the effectiveness of APICom, we consider a corpus of 33k developer queries and corresponding APIs. Compared with the state-of-the-art baselines, our experimental results show that APICom can outperform all baselines by at least 40.02\%, 13.20\%, and 16.31\% in terms of the performance measures EM@1, MRR, and MAP. Finally, our ablation studies confirm the effectiveness of our component setting (such as our designed adversarial training method, our used pre-trained model, and prompt learning) in APICom.

Auteurs: Yafeng Gu, Yiheng Shen, Xiang Chen, Shaoyu Yang, Yiling Huang, Zhixiang Cao

Dernière mise à jour: 2023-09-13 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2309.07026

Source PDF: https://arxiv.org/pdf/2309.07026

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.

Plus d'auteurs

Articles similaires

Vision par ordinateur et reconnaissance des formesAvancées dans la classification de la dominance cardiaque avec l'apprentissage automatique

L'apprentissage automatique améliore les évaluations des problèmes cardiaques grâce à une classification précise de la dominance cardiaque.

― 6 min lire