Large pre-trained language models such as GPT-3, Codex, and Google's language model are now capable of generating code from natural language specifications of programmer intent. We view these developments with a mixture of optimism and caution. On the optimistic side, such large language models have the potential to improve productivity by providing an automated AI pair programmer for every programmer in the world. On the cautionary side, since these large language models do not understand program semantics, they offer no guarantees about quality of the suggested code. In this paper, we present an approach to augment these large language models with post-processing steps based on program analysis and synthesis techniques, that understand the syntax and semantics of programs. Further, we show that such techniques can make use of user feedback and improve with usage. We present our experiences from building and evaluating such a tool jigsaw, targeted at synthesizing code for using Python Pandas API using multi-modal inputs. Our experience suggests that as these large language models evolve for synthesizing code from intent, jigsaw has an important role to play in improving the accuracy of the systems.
翻译:GPT-3、Codex和Google语言模型等经过预先培训的大型语言模型现在能够根据程序员意图的自然语言规格生成代码。我们以乐观和谨慎的混合方式看待这些动态。在乐观的一面,这些大型语言模型有可能通过为世界上每个程序员提供自动的AI对配程序程序员来提高生产率。在谨慎的一面,由于这些大型语言模型不理解程序语义学,因此无法保证所建议代码的质量。在本文中,我们提出了一个方法,用基于程序分析和合成技术的后处理步骤来增强这些大型语言模型,这些步骤能够理解程序的语义学和语义学。此外,我们表明,这些技术能够利用用户反馈并改进程序的使用。我们介绍了我们从建造和评价这种工具支格锯的经验,目标是利用多模式投入合成使用Python Pandas API的代码。我们的经验表明,随着这些大型语言模型从意图中合成代码的演进,jigsaw在提高系统的准确性方面起着重要的作用。