当前位置: 首页 > 科技观察

看函数名和注释,AI自动生成代码,程序员:这不现实,我要丢饭碗了

时间:2023-03-20 18:57:47 科技观察

有没有想过,有一天,码农不用写代码了。您只需要提供函数签名和注释,代码就可以自行在屏幕上敲出来。“实体码农都可以开除,项目经理留下需求就可以了,大雾!”上面的demo看起来是不是很酷?这是OpenAICEOSamAltman刚刚介绍的最新研究成果——基于函数签名和注释,使用语言模型自动生成Python代码。该语言模型使用与OpenAI的GPT模型相同的无监督技术。为了教模型“编写代码”,研究人员使用来自数千个开源GitHub存储库的代码在Microsoft的超级计算机上对模型进行了微调。我们先来看看生成效果。研究人员首先展示了一个用Python编写的更简单的回文检测示例。回文是指“既能正读又能逆读的句子”,如“anna”、“level”等。下面是使用模型自动生成的代码:可以看到输入函数签名和注释后,模型正确生成了回文检测代码。当然,对于回文检测,我们还可以使用下面更“漂亮”的递归方法来实现:看到这里,可能大家对模型的效果并不意外,毕竟回文检测等基本任务的代码还有网上很多,直接从训练集上复制模型就可以了。别着急,我们继续往下看。接下来,研究人员要求模型从未包含在训练集中的列表中生成长度至少为7个字符的代码。让我们看看模型在这种情况下的表现:它仍然做得很好!从这个例子中我们可以确定,该模型并不是简单的照搬网上现成的代码,而是根据函数名和相关注释生成了相应的解决方案,甚至还使用了之前生成的代码。尝试了单个函数的例子,研究者也在课堂上展示了其运行的效果。这次的任务是计算商品的总价,并对名称为回文的商品打折。我们来看看模型生成的代码:模型自动为我们生成了计算商品总价的方法的注释和对应的代码。然而,这不是我们想要的结果,我们只希望名称为回文的产品打折,而不是所有产品都打折20%。研究人员后来修改了该方法的注释,详细描述了他们想要实现的目标。修改注解后,模型生成的代码如下:可以看到模型差不多生成了我们想要的结果。这里只有一个小问题,我们想给回文名称的商品打20%的折扣,而不是打20%的折扣,修改一下即可。最后,研究人员展示了让模型生成购物小票的结果:OpenAI的介绍视频OpenAI发布的demo确实令人惊叹,甚至是革命性的。如果按照这个思路,以后似乎就不需要简单的“搬砖人”了。但问题就出在这里:效果如此惊人,让人怀疑它是伪造的还是精挑细选的……但也有人说,“这就是OpenAI!他们口袋里有好东西。”好吧,如果这是真的,这对程序员意味着什么?程序员的未来何去何从?在AI领域,每一次新技术的出现,似乎都会引发一场关于XX从业者是否会被AI取代的讨论,这次也不例外。首先,这个工具的出现带来的效率提升是毋庸置疑的。假设这个demo是clean的,那么公司可能出于成本考虑裁掉一些初级coder,用一个coder作为“codereviewer”来完成原来十个coder的工作。也有人认为,根据目前的模式来讨论是否会更换程序员有点提前了。首先,这只是一个语言模型,即使是非常简单的函数也会出现错误,更不用说难以理解的自然语言注释了。这个时候,还是需要人介入的。其次,这个过程中用到的“笔记”不需要人写吗?但其他人认为,这些都可以用时间和技术来解决:总有一天,与检查代码的人相比,模型犯的错误会越来越少。或者你训练一个模型来编写单元测试并不断改进它,直到它在大多数时候都能给出合理的解决方案。当然,这些都是一些很超前的假设,目前的技术还很难实现,在实际应用中会出现各种各样的问题。但回顾19世纪初大量织工的命运时,这种讨论是相关的。