CursorCore: Auxiliar a Programação por Meio do Alinhamento de Qualquer Coisa
CursorCore: Assist Programming through Aligning Anything
October 9, 2024
Autores: Hao Jiang, Qi Liu, Rui Li, Shengyu Ye, Shijin Wang
cs.AI
Resumo
Grandes modelos de linguagem têm sido aplicados com sucesso em tarefas de assistência à programação, como conclusão de código, inserção de código e edição de código instrucional. No entanto, essas aplicações ainda são insuficientemente automatizadas e têm dificuldade em integrar efetivamente vários tipos de informações durante o processo de programação, incluindo histórico de codificação, código atual e instruções do usuário. Neste trabalho, propomos um novo framework conversacional que integra de forma abrangente essas fontes de informação, coletamos dados para treinar nossos modelos e avaliamos seu desempenho. Primeiramente, para avaliar minuciosamente o alinhamento dos modelos com diferentes tipos de informação e a qualidade de suas saídas, introduzimos um novo benchmark, APEval (Assist Programming Eval), para avaliar de forma abrangente o desempenho dos modelos em tarefas de assistência à programação. Em seguida, para a coleta de dados, desenvolvemos um pipeline de geração de dados, Programming-Instruct, que sintetiza dados de treinamento de diversas fontes, como GitHub e plataformas de juízes online. Este pipeline pode gerar automaticamente vários tipos de mensagens ao longo do processo de programação. Por fim, utilizando este pipeline, geramos 219 mil amostras, ajustamos vários modelos e desenvolvemos a série CursorCore. Mostramos que o CursorCore supera outros modelos de tamanho comparável. Este framework unifica aplicações como bate-papo inline e edição automatizada, contribuindo para o avanço dos assistentes de codificação. Código, modelos e dados estão disponíveis gratuitamente em https://github.com/TechxGenus/CursorCore.
English
Large language models have been successfully applied to programming
assistance tasks, such as code completion, code insertion, and instructional
code editing. However, these applications remain insufficiently automated and
struggle to effectively integrate various types of information during the
programming process, including coding history, current code, and user
instructions. In this work, we propose a new conversational framework that
comprehensively integrates these information sources, collect data to train our
models and evaluate their performance. Firstly, to thoroughly evaluate how well
models align with different types of information and the quality of their
outputs, we introduce a new benchmark, APEval (Assist Programming Eval), to
comprehensively assess the performance of models in programming assistance
tasks. Then, for data collection, we develop a data generation pipeline,
Programming-Instruct, which synthesizes training data from diverse sources,
such as GitHub and online judge platforms. This pipeline can automatically
generate various types of messages throughout the programming process. Finally,
using this pipeline, we generate 219K samples, fine-tune multiple models, and
develop the CursorCore series. We show that CursorCore outperforms other models
of comparable size. This framework unifies applications such as inline chat and
automated editing, contributes to the advancement of coding assistants. Code,
models and data are freely available at
https://github.com/TechxGenus/CursorCore.