Simple Science

Ciência de ponta explicada de forma simples

# Informática# Engenharia de software

Melhorando as Recomendações de API para Desenvolvedores

Um novo método melhora as sugestões de API pra dar uma força no desenvolvimento de software.

― 9 min ler


Revolução na RecomendaçãoRevolução na Recomendaçãode APIseficiente.desenvolvedores encontram APIs de formaTransformando a forma como os
Índice

No desenvolvimento de software de hoje, as Interfaces de Programação de Aplicativos (APIS) são super importantes. Elas permitem que os Desenvolvedores usem funções já existentes e conectem diferentes sistemas de software, tornando o processo de desenvolvimento mais rápido e fácil. Mas, com o aumento de APIs disponíveis, encontrar a certa para tarefas específicas pode ser complicado. Este artigo explora como melhorar as recomendações de APIs para desenvolvedores.

A Necessidade de Melhores Recomendações de APIs

Quando os desenvolvedores trabalham em projetos, eles geralmente precisam encontrar APIs que atendam suas necessidades. O processo de recomendação de APIs ajuda nisso, sugerindo APIs adequadas com base nas consultas dos desenvolvedores. No entanto, os métodos tradicionais focam mais em recomendar várias APIs com base na similaridade de texto. Isso significa que os desenvolvedores ainda têm que filtrar as sugestões para encontrar a API certa, o que pode ser frustrante e demorado.

Uma Nova Abordagem para Recomendações de APIs

A ideia de melhorar as recomendações de APIs é inspirada por avanços em tradução automática. Em vez de apenas sugerir uma lista de APIs, podemos encarar isso como uma tarefa de gerar a API mais adequada diretamente a partir da entrada do desenvolvedor. Nós propomos um método que se concentra em completar o nome da API com base em um prompt dado (informação parcial sobre a API). Essa abordagem é diferente dos métodos anteriores e visa atender melhor às necessidades dos desenvolvedores.

Desafios com Métodos Atuais

Nas nossas tentativas iniciais de gerar APIs diretamente, enfrentamos problemas principalmente devido a erros na geração dos prefixos da API. Um prefixo é o começo do nome da API que pode ajudar a guiar a geração da API completa. Os desenvolvedores geralmente conhecem parte do nome da API, como o prefixo, e esse conhecimento pode levar a recomendações de APIs mais precisas. No entanto, nossas primeiras tentativas de gerar APIs com base apenas nas consultas dos desenvolvedores, sem considerar os prefixos conhecidos, não foram bem-sucedidas.

A Tarefa de Completação Automática de APIs

Para enfrentar esses desafios, mudamos nosso foco para uma tarefa de completamento automático. Nessa tarefa, os desenvolvedores podem fornecer uma descrição do problema que estão enfrentando junto com quaisquer prefixos que conheçam. Assim, o sistema pode gerar o nome completo da API de forma mais precisa. O essencial aqui é usar o aprendizado de prompt, que ajuda o modelo a gerar melhores resultados com base na entrada que recebe.

Importância de Dados de Qualidade

O sucesso do sistema de recomendação de APIs depende muito da qualidade dos Dados de Treinamento usados. Coletar dados de alta qualidade pode ser demorado. Para tornar o processo de treinamento mais eficaz, introduzimos um método chamado treinamento adversarial. Essa técnica ajuda a criar exemplos de treinamento adicionais que melhoram a capacidade do modelo de gerar recomendações precisas de APIs.

Avaliando Nossa Abordagem

Realizamos testes extensivos usando um conjunto de 33.000 consultas de desenvolvedores e suas APIs correspondentes. Os resultados mostraram que nosso método superou significativamente as técnicas existentes, com melhorias de mais de 40% em algumas métricas de avaliação. Essas métricas nos ajudam a determinar quão eficazmente nosso sistema gera a API correta.

O Papel do Conhecimento Prévio

Para entender as necessidades dos desenvolvedores, primeiro analisamos os sistemas de recomendação de APIs existentes. Por exemplo, sistemas passados costumavam depender apenas da comparação de similaridade de texto para sugerir APIs. Esse método normalmente resultava em uma variedade de sugestões que nem sempre incluíam a API desejada. Nosso objetivo era mudar isso, criando uma abordagem que se concentra diretamente na geração das APIs necessárias.

Aproveitando o Contexto com Prompts

Uma melhoria significativa em nossa abordagem é a incorporação de prompts. Ao permitir que os desenvolvedores insiram tanto uma consulta quanto prefixos conhecidos, o modelo pode gerar completions de API mais precisas. O aprendizado de prompt, que fornece contexto ao modelo, é fundamental nesse processo. Esse método garante que as APIs geradas sejam mais relevantes e alinhadas ao que os desenvolvedores estão buscando.

Aumento de Dados Através de Treinamento Adversarial

Um desafio que enfrentamos foi garantir que tivéssemos dados de treinamento suficientes para melhorar o desempenho do modelo. Para resolver isso, usamos o treinamento adversarial, que cria exemplos mais variados com base nos dados de treinamento originais. Essa técnica ajuda o modelo a aprender melhor ao expô-lo a diferentes cenários e possíveis consultas de API que ele pode encontrar em aplicações do mundo real.

Entendendo as Tarefas de Recomendações de APIs

A recomendação de APIs envolve sugerir APIs adequadas com base nas necessidades de um desenvolvedor e seu comportamento passado. Ao melhorar esses sistemas, os desenvolvedores podem usar e integrar APIs de forma mais eficiente, tornando o processo de desenvolvimento de software mais tranquilo.

Trabalhos Anteriores em Recomendações de APIs

Vários sistemas foram propostos para aprimorar as recomendações de APIs. Por exemplo, alguns métodos anteriores, como DeepAPI e RACK, visavam gerar sequências de uso de API e recomendar APIs relevantes com base em associações de palavras-chave. No entanto, esses sistemas frequentemente falhavam em fornecer a API exata necessária para consultas específicas, deixando os desenvolvedores a procurar entre várias sugestões.

Nosso Framework Proposto

O framework que propomos para a completamento automática de APIs consiste em três partes principais:

  1. Pré-processamento de Dados: Nessa etapa, preparamos os dados para simular o cenário de completamento de API de forma eficaz. Isso envolve criar prompts que representam nomes de API incompletos.

  2. Arquitetura do Modelo: Nosso modelo usa os dados processados para ajustar um modelo pré-treinado. Esse modelo aprende a completar nomes de API com base nos prompts fornecidos pelos desenvolvedores.

  3. Aplicação do Modelo: Nessa fase, o modelo treinado pode receber a consulta de entrada de um desenvolvedor junto com quaisquer prefixos conhecidos para recomendar APIs completas.

Etapas de Pré-processamento de Dados

Para simular a tarefa de completamento de API, primeiro criamos prompts mascarando partes dos nomes das APIs. Assim, podemos gerar APIs incompletas que o modelo tentará completar. O processo enfatiza as últimas palavras da API, que costumam ser as mais difíceis de lembrar para os desenvolvedores.

Construindo um Modelo Robusto

Assim que temos os dados de treinamento preparados, usamos a arquitetura do modelo para ajustar um modelo pré-treinado especificamente para a tarefa de completamento de API. O processo envolve fazer conexões entre várias palavras na API e o contexto fornecido pela consulta do desenvolvedor.

Treinando com Exemplos Adversariais

Na fase de treinamento, usamos treinamento adversarial para aumentar o desempenho do modelo. Essa técnica gera exemplos desafiadores adicionais que o modelo deve aprender a lidar. O uso desses exemplos adversariais permite que o modelo se torne mais resistente e preciso ao prever APIs.

Resultados e Comparações

Ao longo da nossa pesquisa, avaliamos consistentemente o desempenho do nosso modelo em comparação com métodos existentes. Por exemplo, os resultados indicaram que nossa abordagem levou a melhorias substanciais no ranking recíproco médio e na precisão média. Essas descobertas destacam a eficácia do nosso novo modelo em gerar APIs que estão mais próximas do que os desenvolvedores realmente precisam.

Análise de Sensibilidade dos Parâmetros do Modelo

Na nossa análise, também exploramos como diferentes configurações de hiperparâmetros influenciaram o desempenho do modelo. Ao ajustar sistematicamente esses parâmetros, encontramos as configurações ideais que levariam aos melhores resultados.

O Impacto do Comprimento do Prompt

Investigamos como o comprimento do prompt – ou seja, quanta informação o desenvolvedor fornece sobre a API – afeta os resultados. Nossas descobertas revelaram que prompts mais longos geralmente levam a melhores sugestões de API. Isso destaca a importância de fornecer o máximo de contexto relevante possível quando os desenvolvedores fazem consultas.

Melhorando Recomendações de APIs com Verificações de Validade

Como parte dos nossos esforços para melhorar a qualidade das sugestões de APIs, implementamos uma etapa de verificação. Isso envolve checar as APIs geradas contra uma biblioteca abrangente de APIs para garantir que sejam válidas e úteis. Se uma API gerada não existe na biblioteca, ela é descartada das recomendações.

Reconhecendo Limitações

Enquanto nossa abordagem mostrou promessas, também reconhecemos suas limitações. Por exemplo, às vezes os desenvolvedores não descrevem com precisão suas necessidades, o que pode levar a sugestões ruins de APIs. Também existe a possibilidade de que as APIs geradas contenham erros, mesmo que os prompts estejam corretos. Reconhecer essas áreas oferece uma oportunidade para melhorias adicionais.

Direções Futuras

Olhando para frente, há muitas maneiras de aprimorar nosso modelo de completamento de API. Poderíamos expandir nossa pesquisa para incluir mais linguagens de programação, permitindo uma aplicabilidade mais ampla. Além disso, integrar técnicas de aumento de dados mais avançadas e utilizar Modelos de linguagem maiores pode resultar em resultados ainda melhores.

Conclusão

Resumindo, nosso estudo apresenta um grande avanço nas recomendações de APIs ao enquadrá-lo como uma tarefa de completamento automático de APIs. Ao permitir que os desenvolvedores insiram tanto consultas quanto prefixos conhecidos, nosso método proposto gera APIs de forma mais precisa e eficiente. Por meio de testes rigorosos e validação, mostramos que essa abordagem supera os métodos existentes, oferecendo contribuições valiosas para o campo do desenvolvimento de software.

Ao compartilhar nossas descobertas e metodologias, esperamos inspirar mais pesquisas e melhorias nos sistemas de recomendação de APIs, permitindo que os desenvolvedores trabalhem de forma mais eficaz em seus projetos.

Fonte original

Título: APICom: Automatic API Completion via Prompt Learning and Adversarial Training-based Data Augmentation

Resumo: 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.

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

Última atualização: 2023-09-13 00:00:00

Idioma: English

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

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

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes