6 Feb 2024 | Omer Dunay, Daniel Cheng, Adam Tait, Parth Thakkar, Peter C. Rigby, Andy Chiu, Imad Ahmad, Arun Ganesan, Chandra Maddila, Vijayaraghavan Murali, Ali Tayyebi, and Nachi Nagappan
CodeCOMPOSE is an AI-assisted code authoring tool powered by large language models (LLMs) that provides inline suggestions to developers at Meta. This paper discusses the evolution of the tool from single-line to multi-line suggestions, addressing several challenges in improving usability and performance.
1. **Jarring Effect**: Multi-line suggestions can disrupt the user's existing code, leading to decreased productivity and satisfaction. The team developed a scope-based algorithm to trigger multi-line suggestions only when the cursor is at the end of a scope, ensuring suggestions fit within the user's current thinking context.
2. **Responsive User Experience**: Multi-line suggestions take significantly longer to generate, increasing perceived latency. The team implemented several optimizations, including an inline spinner indicator and improvements to the model-hosting service, to reduce latency and improve user experience.
3. **Production Release and Effectiveness**: During the rollout of multi-line suggestions, the team monitored metrics such as acceptance rate, display rate, latency, and throughput. Multi-line suggestions accounted for 42% of total characters accepted despite only making up 16% of displayed suggestions. They also drove a significant increase in keystrokes saved from 9% to 17%.
The paper concludes with a discussion of the contributions made to the field, including the development of a scope-based multi-line algorithm, improvements to the responsive UX, and the effectiveness of multi-line suggestions in a large industrial setting.CodeCOMPOSE is an AI-assisted code authoring tool powered by large language models (LLMs) that provides inline suggestions to developers at Meta. This paper discusses the evolution of the tool from single-line to multi-line suggestions, addressing several challenges in improving usability and performance.
1. **Jarring Effect**: Multi-line suggestions can disrupt the user's existing code, leading to decreased productivity and satisfaction. The team developed a scope-based algorithm to trigger multi-line suggestions only when the cursor is at the end of a scope, ensuring suggestions fit within the user's current thinking context.
2. **Responsive User Experience**: Multi-line suggestions take significantly longer to generate, increasing perceived latency. The team implemented several optimizations, including an inline spinner indicator and improvements to the model-hosting service, to reduce latency and improve user experience.
3. **Production Release and Effectiveness**: During the rollout of multi-line suggestions, the team monitored metrics such as acceptance rate, display rate, latency, and throughput. Multi-line suggestions accounted for 42% of total characters accepted despite only making up 16% of displayed suggestions. They also drove a significant increase in keystrokes saved from 9% to 17%.
The paper concludes with a discussion of the contributions made to the field, including the development of a scope-based multi-line algorithm, improvements to the responsive UX, and the effectiveness of multi-line suggestions in a large industrial setting.