大模型代码生成能力如何,还得看你的「需求表达」好不好。从通过HumEval中67%测试的GPT-4,到近来各种开源大模型,比如CodeLlama,有望成为码农编码利器。
然而,现实中,程序员们不会精炼表达需求,因此误导、限制了LLM生成优秀代码的能力。
为了解决大模型代码生成的需求表达问题,北大实验室的研究团队提出了通过与LLM聊天来细化需求的方法——ChatCoder。
ChatCoder通过聊天来辅助LLM和人类在需求细化方面的协作,从而提高大模型生成满足用户需求的代码。
ChatCoder的框架分为两个阶段:Paraphrase和Exend,以及Going-deep和Loop-back。在Paraphrase和Exend阶段,LLM根据用户的需求提示进行解释,并扩展假设。在Going-deep和Loop-back阶段,LLM向用户询问问题,解决需求细化中的困惑,并得到用户纠正后的规范。
经过两轮细化后,LLM生成满足用户需求的程序。
ChatCoder的评估结果显示,通过需求细化,ChatCoder帮助LLM提高了代码生成的执行精度。在Saniticed-MBPP上,ChatCoder带来了14%的性能提升。同时,ChatCoder的三种通信方法都对改进代码生成结果起到了作用。
人工干预在ChatCoder中扮演着重要的角色,因为需求细化需要揭示需求的内部结构和解决歧义。通过ChatCoder这种通过聊天进行需求细化的方法,可以提高大模型代码生成的能力,使其更好地满足用户需求。