Foreword
一直听说Copilot已经很成熟,甚至有人没了都不习惯了,所以试一试Copilot。建议先学习一下Prompt,可以大幅提升Copilot的效率
Copilot
https://github.com/settings/copilot
Copilot 是由 Github 提供的AI编码辅助工具,它可以在编码过程中提供基于 AI 学习的编码建议。在很多情况下,只需要有注释或者函数名称,Copilot就可以实例完整的代码。
目前 Copilot 需要支付10美元/月或者100美元/年。首次使用可以试用2个月,按页面提示点击按钮以开通使用权限,当获得开通权限后,就可以在 Github 上使用 Copilot。
目前Copilot可以在VS、VScode、Neovim、JetBrain全家桶上作为插件使用,其他IDE也得要看有没有人写,没有的话就没办法了
购买
首先拿到2个月的免费试用,这必须要绑定信用卡或者paypal才能下一步
VScode+Copilot
我本身不怎么用VScode,不过为了体验Copilot,只能通过这种方式了
安装VScode插件
第一次试用的时候会提示需要登录Github,并且授权
- GitHub Copilot Nightly 是先行版,新功能测试、实验性功能都在这个版本上,GitHub Copilot是正式版,需要体验最新功能可以使用这个,二者冲突。
GitHub Copilot Chat 是类似ChatGPT的对话框式交换的代码机器人,这种方式需要先拿到体验资格才能使用
https://github.com/github-copilot/chat_waitlist_signup/join
- 我还没拿到Chat资格,所以就不测了
没资格的话这个对话框是显示不出来的
测试
当代码补全消失以后,会出现下面的灰色内容
但是如果代码补全不消失,他会一直不出现
所以可能需要关闭代码补全以后,再用,设置中搜索intelli
然后关闭30个建议提示
对应的Copilot基本没啥设置选项
可能是我测试的是esp-idf的环境,所以Copilot对他学习的比较少?实际写代码提示完全弱于IntelliSense,提示本身就慢几秒,至于演示的那种一下提示很多内容,那更是基本没有,能提醒一个函数名就算不错了。
当我使用Hal作为开头,假装初始化串口,总算获得了超量的代码,只是可惜HAl这都是库已经做好的东西,我为啥还要重写一遍他呢?
或者反过来说,当我需要串口初始化的时候,假装我要写Hal
,后面再改成别的名字,仅仅是为了这么个串口初始化,完全不值当
编写整个文件
实际上编写文件或者根据描述编写代码有点不太行,它本身还是基于搜索的,只是显示结果并且帮你过滤了一下而已
如果是用中文描述不太可行,用英文描述所需要写的内容和相关细节,我感觉有点困难
代码预测
可以给他部分代码,让他推断一下后面该写什么内容
对于嵌入式而言,Copilot不是很合适,本身环境就不太兼容,提示也不够好
Pycharm+Copilot
Pycharm这里也是一样,先安装插件,安装完以后需要重启一下
Pycharm这里授权有点麻烦,需要验证设备,输入验证码
授权以后,这里就是这样了
pycharm的选项稍微多了一点
似乎比之前的c或者c++,提示多了一些,至少快了很多,而且明显在我还没输入明显内容的时候,就进行了预测提示
继续测试发现,似乎只对某些关键词会有反应,比如unite test
,某些常用的名称会预测提示更多的内容。
比如这里的open_file
,会直接提示一大串内容出来,甚至有可能他还是对的。
发现这个以后,我重新去VScode下测试,试用相同关键词,可以看到直接给出了一大串c文件的打开,甚至他print还是用esp的输出,我感动哭了,虽然是没啥用的代码。
同理,我使用比较常用的嵌入式相关的函数名,发现完全没有提示,顶多提示我两括号…
回到Pycharm,基本上常用的关键词,都能联想预测一堆内容出来。
说明Copilot涉及到某些小众的领域或者平台,就不太行了。
VS+Copilot
这个有点懒的测了,实际上如果是C#开发,C#本身的代码预测,我感觉已经非常不错了,很多情况下可以直接预测一个完整的句子,甚至变量都会自动帮你根据上下文推断替换,而Copilot则多数情况都只会复读…而不会自动增加变量的序列。
所以如果是C#开发,那么自带的代码补全就已经非常好用了。
Cursor
https://www.cursor.so/
Cursor是和OpenAI合作基于GPT4的一个IDE,有点类似VScode,但是它可以帮你写代码,并且质量还可以的那种。
智能生成代码
Ctrl+K
询问代码含义
Ctrl+L
测试
输入的内容是基于esp32的串口读写
,给出来的却是arduino的类似代码
告诉他平台是什么,再看下
这次给出来就合理了
试了一下我的easycon,直接就开始胡扯了,还是太小众了
小众文件测试
这里就有点胡写的意思了,但是看个大概还是可以的
故意刁难
开源应该是搜不到任何dshot和stm32的dma相关源代码的,所以他也只能写出来dma配置,而pwm的配置完全没有
输出到下面就截至了,代码太长了,从给出来的代码来看,依然是一个简单的pwm,而不是dshot
代码讲解
甚至可以勾选一部分代码让他解释一下什么意思
小结
Cursor的响应速度明显快于Copilot,并且由于有GPT4的语义理解的支持,输出的内容也比较靠谱。当然如果没有现成的代码,可能还是会遇到胡扯的情况
关于他底层到底是GPT3还是4,还有点小争议,但是无所谓,反正我又不用。
https://github.com/getcursor/cursor/issues/34
Prompt
由于Copilot的核心其实也是GPT,所以Prompt在这里也非常有用
可以参考下面的网址给出来的示例,学习如何写Prompt
https://www.clickprompt.org/en-US/github-copilot-samples/
Prompt 可以简单的理解为一种向机器描述你要他完成的任务的语言
主要是4个方面
- 指令,他具体要干的事情
- 上下文,给他一个上下文的概念,告诉他一个前提
- 输出格式,对机器输出进行限制
- 输入数据,提出的问题
以这个为例子:
首先指令就是translate to i18n
上下文const ROLES = ["天才", "豪门弃子", "修炼废物", "冒险家", "孤儿", "情圣", "幸运儿", "强者", "屌丝", "学者"];
输出格式like: "天才" -> t("genius"), and use Output variable to save key-value: {"genius": "天才"}
你的输入const ROLES = [t("genius")
然后Copilot就会对此进行输出了
实际上不是每个例子都能完美执行的
这里预期输出应该是
const loras = promptMatch[1]
.split(",")
.map((item) => {
const match = item.match(/<lora:(.+):.+/);
return match ? match[1] : "";
})
.filter((item) => item !== "");
实际上直接自动给你下一步了
如果每个程序都要先写这么一个Prompt,对于专业的人来说,还是稍微有点多的,特别是这种简单的任务,写Prompt并不见得比直接写代码要少,甚至你还不能保证你写的Prompt就是你想要的内容。
Summary
总结python、java之类的涉及实际业务比较多的,重复度比较高的代码,用Copilot的预测补全,可能确实不错,很多基础代码可以直接写完。但是像是小众一些的,比如嵌入式、插件等等比较小众的领域,Copilot完全不如普通的补全。
也可以让Copilot和自带的智能补全同时工作,从而形成互补,至于他的定价,每月10刀,那估计是赚不了我的钱了
Cursor目前是免费的,IDE比较小,工作起来也非常快速,体验很好,至于是否能用,我的回答其实和Copilot一样,再发展发展吧。
测试还是有不足的地方,可能需要专门学习一下如何写prompt才能更好的让Copilot发挥作用
反思
无论是chatGPT4、还是Copilot,总有人想用他来代替xx。从专业的角度来说,如果你所做的东西,可以被它替代,那说明什么?说明你不够专业,你写的代码还不如Copilot,你是不是该反思一下你的业务水平是不是有问题?某些时候他确实拥有比你更大的数据库,更全的知识库,甚至看过整个Github的代码,但是如果你连写出一个超过他水平的代码都没有,那我觉得你得钻研钻研你的业务水平了。
当一个AI只有10%人类水平的时候,我们只是笑笑,它是个菜逼。
当一个AI有30%人类水平的时候,我们依然只是玩玩,它还不能用
当一个AI有50%人类水平的时候,它能不能帮我做些什么?
当一个AI有80%人类水平的时候,你的业务水平达到剩下20%的人类了吗?
当人类文明水平无法超过对方的时候,还怎么和对方谈平等生存呢?
Quote
https://tutorials.tinkink.net/zh-hans/vscode/copilot-usage-and-shortcut.html
https://blog.csdn.net/jiangjunyuan168/article/details/126960128
https://blog.csdn.net/m0_46495862/article/details/128691032
https://zhuanlan.zhihu.com/p/615818924
https://www.v2ex.com/t/939646#reply0