LLM-Based Test-Driven Interactive Code Generation: User Study and Empirical Evaluation
arXiv:2404.10100 · doi:10.1109/TSE.2024.3428972
Abstract
Large language models (LLMs) have shown great potential in automating significant aspects of coding by producing natural code from informal natural language (NL) intent. However, given NL is informal, it does not lend easily to checking that the generated code correctly satisfies the user intent. In this paper, we propose a novel interactive workflow TiCoder for guided intent clarification (i.e., partial formalization) through tests to support the generation of more accurate code suggestions. Through a mixed methods user study with 15 programmers, we present an empirical evaluation of the effectiveness of the workflow to improve code generation accuracy. We find that participants using the proposed workflow are significantly more likely to correctly evaluate AI generated code, and report significantly less task-induced cognitive load. Furthermore, we test the potential of the workflow at scale with four different state-of-the-art LLMs on two python datasets, using an idealized proxy for a user feedback. We observe an average absolute improvement of 45.97% in the pass@1 code generation accuracy for both datasets and across all LLMs within 5 user interactions, in addition to the automatic generation of accompanying unit tests.
IEEE Transactions on Software Engineering, vol. 50, no. 09, pp. 2254-2268, 2024
References in corpus (9)
- Evaluating Large Language Models Trained on Code
- Code Llama: Open Foundation Models for Code
- Do Users Write More Insecure Code with AI Assistants?
- StarCoder: may the source be with you!
- CodeT: Code Generation with Generated Tests
- CodeGen2: Lessons for Training LLMs on Programming and Natural Languages
- Reading Between the Lines: Modeling User Behavior and Costs in AI-Assisted Programming
- Towards Generating Functionally Correct Code Edits from Natural Language Issue Descriptions
- Can Large Language Models Transform Natural Language Intent into Formal Method Postconditions?