Full Line Code Completion: Bringing AI to Desktop

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Semenkin, Anton, Bibaev, Vitaliy, Sokolov, Yaroslav, Krylov, Kirill, Kalina, Alexey, Khannanova, Anna, Savenkov, Danila, Rovdo, Darya, Davidenko, Igor, Karnaukhov, Kirill, Vakhrushev, Maxim, Kostyukov, Mikhail, Podvitskii, Mikhail, Surkov, Petr, Golubev, Yaroslav, Povarov, Nikita, Bryksin, Timofey
Format: Preprint
Published: 2024
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866916555225300992
author Semenkin, Anton
Bibaev, Vitaliy
Sokolov, Yaroslav
Krylov, Kirill
Kalina, Alexey
Khannanova, Anna
Savenkov, Danila
Rovdo, Darya
Davidenko, Igor
Karnaukhov, Kirill
Vakhrushev, Maxim
Kostyukov, Mikhail
Podvitskii, Mikhail
Surkov, Petr
Golubev, Yaroslav
Povarov, Nikita
Bryksin, Timofey
author_facet Semenkin, Anton
Bibaev, Vitaliy
Sokolov, Yaroslav
Krylov, Kirill
Kalina, Alexey
Khannanova, Anna
Savenkov, Danila
Rovdo, Darya
Davidenko, Igor
Karnaukhov, Kirill
Vakhrushev, Maxim
Kostyukov, Mikhail
Podvitskii, Mikhail
Surkov, Petr
Golubev, Yaroslav
Povarov, Nikita
Bryksin, Timofey
contents In recent years, several industrial solutions for the problem of multi-token code completion appeared, each making a great advance in the area but mostly focusing on cloud-based runtime and avoiding working on the end user's device. In this work, we describe our approach for building a multi-token code completion feature for the JetBrains' IntelliJ Platform, which we call Full Line Code Completion. The feature suggests only syntactically correct code and works fully locally, i.e., data querying and the generation of suggestions happens on the end user's machine. We share important time and memory-consumption restrictions, as well as design principles that a code completion engine should satisfy. Working entirely on the end user's device, our code completion engine enriches user experience while being not only fast and compact but also secure. We share a number of useful techniques to meet the stated development constraints and also describe offline and online evaluation pipelines that allowed us to make better decisions. Our online evaluation shows that the usage of the tool leads to 1.3 times more Python code in the IDE being produced by code completion. The described solution was initially started with a help of researchers and was then bundled into all JetBrains IDEs where it is now used by millions of users. Thus, we believe that this work is useful for bridging academia and industry, providing researchers with the knowledge of what happens when complex research-based solutions are integrated into real products.
format Preprint
id arxiv_https___arxiv_org_abs_2405_08704
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Full Line Code Completion: Bringing AI to Desktop
Semenkin, Anton
Bibaev, Vitaliy
Sokolov, Yaroslav
Krylov, Kirill
Kalina, Alexey
Khannanova, Anna
Savenkov, Danila
Rovdo, Darya
Davidenko, Igor
Karnaukhov, Kirill
Vakhrushev, Maxim
Kostyukov, Mikhail
Podvitskii, Mikhail
Surkov, Petr
Golubev, Yaroslav
Povarov, Nikita
Bryksin, Timofey
Software Engineering
Machine Learning
In recent years, several industrial solutions for the problem of multi-token code completion appeared, each making a great advance in the area but mostly focusing on cloud-based runtime and avoiding working on the end user's device. In this work, we describe our approach for building a multi-token code completion feature for the JetBrains' IntelliJ Platform, which we call Full Line Code Completion. The feature suggests only syntactically correct code and works fully locally, i.e., data querying and the generation of suggestions happens on the end user's machine. We share important time and memory-consumption restrictions, as well as design principles that a code completion engine should satisfy. Working entirely on the end user's device, our code completion engine enriches user experience while being not only fast and compact but also secure. We share a number of useful techniques to meet the stated development constraints and also describe offline and online evaluation pipelines that allowed us to make better decisions. Our online evaluation shows that the usage of the tool leads to 1.3 times more Python code in the IDE being produced by code completion. The described solution was initially started with a help of researchers and was then bundled into all JetBrains IDEs where it is now used by millions of users. Thus, we believe that this work is useful for bridging academia and industry, providing researchers with the knowledge of what happens when complex research-based solutions are integrated into real products.
title Full Line Code Completion: Bringing AI to Desktop
topic Software Engineering
Machine Learning
url https://arxiv.org/abs/2405.08704