光头怪博士
21-07-14 10:03 微博认证:科学科普博主

拿到了微软Github推出的Copilot人工智能编程辅助工具的内侧机会。玩了好一会儿。。。挺牛逼的,和之前的“自动补全”,“智能补全” 完全不一样。。。Copilot目前是VS Code的一个插件。使用方法非常简单,就是你打一个函数名,或者写一段解释功能的注释,Copilot直接给你把函数或者代码段写出来。。。

目前Copilot支持Python,JavaScript,Go,Ruby,TypeScript。我只会Python,图1,2里那几个函数都是我在只给出函数名的情况下由Copilot生成的。注意,我只打了函数名,没有任何干预,Copilot直接给你把包括注释的函数写全。

这几个函数都是比较简单的功能,属于Python一行代码量级。目前根据我的测试,这种级别的代码有了Copilot是不大需要自己写了。。。而且由于用上了Github所有公开代码,很多天文代码也包含其中。图一里的什么星等-流量转换和Sersic面亮度函数都是很小众的,只有天文里才用的东西。

而且观察了一会儿发现这并不是简单的“模糊匹配”代码的拷贝粘贴。比如图一里的求两个向量夹角的函数,a1, a2这两个变量名是我定义的,生成的函数直接用进去了。

对同一个函数,Copilot可以给出几种不同的选择,但似乎默认优先最短的。比如我发现Copilot就非常喜欢一行Python代码。但是有时候会闹笑话,我测试了一个Fisher information matrix的计算,结果直接给我了一个只有一行的函数,这行是。。。“pass”。。。不知道谁写的placeholder也给用来训练了。

另外也发现,如果你写的函数名没有指定输入变量,有的时候生成的函数里会包含没有定义的变量名。

图二也挺有意思的:矩阵取对角项就知道直接用numpy函数搞定;但快速傅立叶变换就不知道用scipy.fft模块,而是给我直接写了一个。。。看来训练也是有边界的,似乎不大喜欢调用太多其他包 (?? 个人猜想)

不过最好玩的还是我偶然发现的图三:定义一个“究极答案”函数,Copilot直接告诉你返回42 [doge][doge] 情怀拉满。。。

目前Copilot还有很多争议,而且也远远没有到“代替码农”的程度,但就我2个小时的测试体会来说,我感觉对我们这种没有系统学习过编程,但是确实要不停地编程去做事的人,Copilot的确可以是生产力工具。。。当然了,内测什么的,其实就是人肉帮微软校准模型吧,微软说了未来肯定是收费的。估计又是勉强能用的免费版钓你上钩,然后12.99刀一个月之类的。。。