查看原文
其他

微软的人工智能 Copilot 到底有多强大?带你来体验一下

郭霖 郭霖 2023-05-26


说实话,这是一篇我早就应该写的文章,我也不知道为什么我能拖这么久。


但好像从来也没有读者朋友们催我写过这类文章,这为我的拖更提供了很好的理由。


为什么说我早就应该写这篇文章了呢?


主要还是因为去年年底的时候,OpenAI推出了一个火遍全球的爆炸性产品,ChatGPT。


在此之前,我都从来不认为OpenAI跟微软会有什么关系。直到后来我查询了一下OpenAI的股权结构,才发现微软的持股比例竟然高达49%,是OpenAI的最大单一股东。


这就不奇怪为什么谷歌百度看到ChatGPT后如临大敌一般了。并且马斯克还在推特上吐槽,OpenAI已经偏离了他创立时的开源初衷,成为了一家被微软控制的盈利机构,


事实上,OpenAI和微软的合作确实非常紧密。


在ChatGPT推出后不久,OpenAI就将自己更高级的GPT4提供给了必应使用,我们在内部体验了新必应的能力后,确实都感觉到大为震撼。


另外新必应还和Edge浏览器进行了深度绑定,那段时间为了能够快速推出带有新必应功能的Edge浏览器版本,我们组着实有几位同事周末都在加班。


这种自己做的产品莫名其妙就卷入到了世界最中心热点的感觉还挺奇妙的,我在抖音上刷到一些科技博主介绍新必应功能时,甚至还能看到自己做的新版Edge浏览器的主页界面。


其实那个时候我就想写一篇文章,也来介绍介绍ChatGPT和新必应了。但是由于我们是内部体验资格,领导特意在邮件里说明了,不要将截图流出到外部。虽然那个时候已经有外部博主也能体验到新必应了,我想了想怕把控不好度,就还是作罢了。


ChatGPT发展到了这里,我也不知道未来会继续走向什么方向,甚至我觉得可能过段时间,这波AI的热度就过去了。


没想到就在不久之后,微软又推出了一个王炸型产品,Microsoft 365 Copilot。这次是将GPT4的能力应用到了Office领域当中。


众所周知,微软Office系列的功能深不可测,绝大多数的用户甚至连其中10%的功能都使用不到。


而有了Microsoft 365 Copilot,你再也不需要去网上搜索那些高级的Word用法,复杂的Excel公式,精美的PPT制作方法了。你只需要用文字告诉Copilot你想要什么,它就会按照你的需求自动生成你想要的一切,从而让每个用户都能轻松解锁Office剩余90%的功能。


这就属于我完全预料不到的发展方向了,因为ChatGPT虽强,但目前还只是能处理文字层面的问题问答,或许还不足以对以往的工作模式带来天翻地覆的改变。


但Microsoft 365 Copilot这次直接将AI延申到了一个全新的领域,这带来的可能是生产力的聚变。再夸张点说,甚至可能会是一次新工业革命的开始。


这波我持续看好AI。


Microsoft 365 Copilot在最近确实赚足了眼球,但今天我要介绍的并不是它。其实早在两年前,微软就推出了另外一个版本的Copilot,叫GitHub Copilot。


这里为了防止有些小伙伴还不知道,特意说明一下,微软在2018年就收购了GitHub。


那么什么是GitHub Copilot呢?


简单一句话概括,那就是借助AI的能力,让程序员可以更加轻松高效地完成自己的编码工作,从而提升生产力。


我们都知道,GitHub并不是一家AI公司。因此,GitHub Copilot背后接入的其实就是OpenAI的Codex。


那么Codex又是什么呢?这是OpenAI研发出的一个拥有人类自然语言模型编程能力的人工智能接口。简单点说,就是允许我们使用人类语言来写代码了,你告诉它你想要什么功能,Codex会自动将其翻译成对应的编程语言。


这个功能后来也被ChatGPT接入了,相信有不少朋友早已体验过了ChatGPT强大的编程能力,其实背后就是由Codex在默默地帮助我们写代码。


GitHub Copilot我在之前就已经被同事反复安利过了很多次,却迟迟一直没有使用。究其原因还是懒,懒得去对一些新些事物进行尝试和学习,这个习惯确实不好。


后来我终究还是没能抵过微软员工可以免费使用GitHub Copilot的诱惑,也开始用了起来,于是就有了这篇文章。


是的,GitHub Copilot是没有免费版本的,个人版需要支付10美元/月,企业版需要支付19美元/人月。



不过大家也不用这么快就被劝退了,个人版是有60天免费试用期的,因此我觉得至少可以去体验和了解一下。


购买完成之后,接下来在你常用的IDE商店去下载安装GitHub Copilot插件即可,像JetBrains旗下所有的IDE、微软的VS Code等都是支持的。



插件安装完成后,我们就可以去体验GitHub Copilot强大的编程能力了。


刚才有说过,Codex是可以使用人类自然语言来进行编程的,那么就来试一试吧。


创建一个新的Android项目,并打开activity_main.xml,我们通过编写注释的方式来描述我们的需求:



可以看到,需求描述完之后,GitHub Copilot就会自动根据我们的需求给出代码提示建议。这时只要按一下Tab键,就能让这些提示建议上屏了。


这种功能如果是放到半年前的话,相信足以让绝大部分的人感到震惊。但是现在大家都已经见识过ChatGPT的强大编程能力了,所以这种程度的代码提示可能也就见怪不怪了。


但不得不说,虽然GitHub Copilot和ChatGPT背后对接的都是Codex,但GitHub Copilot还是有它的优势的,因为它会拥有更加充分的代码上下文环境,这是ChatGPT所不具备的。


是的,如果你再仔细观察一下上图,你会发现,GitHub Copilot是知道我们是在ConstraintLayout中编写布局的,所以给出的代码建议也是按照ConstraintLayout的语法规则来写的。


而如果我们将同样的注释放在Compose环境下再去描述一遍,得到的结果如下图所示:



因此,GitHub Copilot总是能够根据当前的代码环境给出相应的代码建议。这些代码不一定能保证是完全正确的,但是根据我的观察,通常都是比较有参考价值的。


说到代码的正确性,前段时间文心一言刚刚发布,我在抖音上刷到一个博主,他给文心一言出了道题,让它使用php编写一段生成1万个8位数邀请码的代码,结果如下:



最离谱的是,这位博主竟然说这段代码完全正确,也真是让人哭笑不得。


由此可见,不管是ChatGPT还是文心一言,它的能力再强也需要一个懂行的人掌舵。外行人甚至连对错都无法区分,说能取代程序员还是为时过早了。


不过我确实好奇Codex是否能够很好地处理这道题目呢?我通过GitHub Copilot进行了一下验证,正确性大家自己来看吧。



除了主动告诉GitHub Copilot要写什么代码外,其实更多情况下它会自动在我们编写代码时给出一些贴心的建议,从而让你的编码工作更轻松。


我们都知道,GitHub Copilot只能根据大数据的机器学习训练进行智能的代码推荐,它是不可能了解我们的业务需求的。


比如最近我在编写一个Compose的布局时,希望让每个子元素的宽度都充满父布局。


GitHub Copilot不可能知道我心里所想的需求,所以一开始给出的都是一些并非我想要的建议。


但是一旦我完成了第一个子元素的编写,GitHub Copilot就好像突然懂得了我的需求一样,后面的每个子元素都能给出准确的建议了,如下图所示:



这种情况会非常常见,因为绝大多数情况下,我们是不太需要主动想着如何去使用GitHub Copilot的,但它总是能够在我们的编码过程当中适时地给出一些能够让你会心一笑的建议。这里我没法给出太多具体的场景示例,但是只要你用过了之后,一定能明白我在说什么。


除了提高编码效率之外,GitHub Copilot还可以用于快速完成一些之前很多程序员不太愿意做的琐碎的事情,比如说写注释、写单元测试等等。


为你的代码写好详细的注释这是一个非常好的习惯,但可能并没有太多程序员能真正做好这一点,都觉得写注释太麻烦了。


而GitHub Copilot可以根据代码的逻辑自动生成相应的注释,我们可能只需要稍微引导和调整一下生成的内容就行了,这就让这些本来琐碎的事情变得非常轻松。


这里我还是拿刚才生成1万个8位数邀请码的代码进行举例,这次我们反过来,让GitHub Copilot根据现有的代码逻辑自动帮我们生成注释,如下图所示:



可以看到,效果还是非常好的。我只需要进行稍微的用词引导,GitHub Copilot就能立刻明白我的意图,并进行剩余的注释补全。


我的同事之前也开玩笑地说过,自己写代码时的思路时不时就被GitHub Copilot拿捏了,副机长的技术比机长还好怎么办。


确实,我相信现在世界上没有任何一个程序员的技术能比Codex更高了,但副机长技术再好也只能是给建议,最终拍板以及保证代码正确性的还是只能靠我们自己。


看到这里,相信你已经能够体会到GitHub Copilot强大的功能了,那么它难道就没有什么缺点吗?


这当然是不可能的。


首先,GitHub Copilot无法做到每次都给出精确无比的建议,满嘴跑火车的情况并不在少数。ChatGPT也有很多类似的情况,相信大家用过的应该都能感受到。


除此之外,我个人觉得GitHub Copilot最让人感到不够聪明的一点是,它的一切数据都来自于云端大数据的训练,而没有本地学习的能力。


我举一个例子吧,输入法大家肯定每天都在用,如果我们有一些频繁输入的词汇,打得次数多了,输入法就会更加倾向于将这些词汇的排序提前。这应该是再基础不过的能力了吧?


但GitHub Copilot却并没有这样的功能,某些我本地特有的代码模板,即使我敲了再多遍,下次再换一个文件输入时,GitHub Copilot依然不知道我想要的是什么,因为它的云端训练不到我本地特有的这些代码。


从工作原理的角度上讲,这种情况我完全能理解。不过每当发生时,我确实会在这一瞬间感觉它还不够聪明。


好了,以上就是我对GitHub Copilot所想要介绍的一切了。


看完之后你的感想是什么?


每个人或许都会有不同的想法,我个人的想法是,GitHub Copilot很好,但是我可能并不会愿意为其支付每个月10美元的费用。


因为GitHub Copilot提高的只是工作效率,我并不觉得它可以帮助提高我的编程能力。相反,使用GitHub Copilot之后,很多原本需要思考和分析的代码,现在都可以省略了。


而如果你是一个企业老板,那么我会大力推荐你,一定要为每个员工都购买一份GitHub Copilot,这是真的可以提高你的企业生产力的工具,并且它的费用相比于程序员的薪水来讲几乎可以忽略不计。


另外,本文全篇介绍的其实都还是上一个时代的GitHub Copilot版本。目前GitHub又推出了一个更加强大的Copilot X,我还没有拿到内测名额,所以不知道具体有多么的强大。


但这个崭新的AI时代真的在以日新月异的速度变化着,让我们一起来见证吧。


推荐阅读:
我的新书,《第一行代码 第3版》已出版!
在微软工作365天,还你一个我眼中更加真实的微软
在微软工作100天,谈谈我眼中的微软

欢迎关注我的公众号
学习技术或投稿


长按上图,识别图中二维码即可关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存