一款利用人工智能生成模型来合成代码的工具Copilot - 第430篇

导读

最近一个朋友给我发了一个抖音视频,视频里说是有一款可以根据注释生成代码的插件Copilot,感觉特别的神奇,于是就想一探究竟。

Copilot是 OpenAI 与 GitHub 联合推出的一个AI 自动编程工具,能根据上下文自动生成代码,供编程者参考使用。Copilot 是利用网络中现有的公开数据,尤其是开源在 Github 上的代码,然后基于机器学习算法训练出来的,理论上支持所有编程语言。

官网地址:

https://copilot.github.com/

一、申请资格

需要有个github账号,访问如下地址:

https://copilot.github.com/

看到copilot官网后点击sign up 进行注册

之后会跳转到如下页面,如果没有登录会提示sign in to join waitlist 需要登录github,如果已经登录则会让你授权去加入等待队伍。

点击join the waitlist确认后就看到了如下页面,大概意思就是“你已经加入了等待列表了,你不需要做任何事情,我们将在你可能使用的时候通过邮件通知你,确保你的邮箱是最新的”

此时等待大概1天左右就会收到已经激活的邮件。

二、安装插件

如果对github比较熟悉的话可以直接看官方的文档:

https://github.com/github/copilot-docs/blob/main/docs/jetbrains/gettingstarted.md#getting-started-with-github-copilot-in-jetbrains

首先要确保idea版本必须在2021.2及更高,否则是无法搜索到copilot插件的。

进入idea插件市场(mac的路径为 preferences-> pugins-> marketplace)

搜索github copilot 点击install进行安装:

安装后即可在Tools里看到对应的github copilot。

此时还无法使用,因为需要关联到你的github账号。点击Tools->GitHub Copilot ->Login to GitHub

可以看到你的设备code,点击Copy and Open

会打开copilot的激活页面,输入你的设备码(应该已经自动复制好了,直接粘贴就可以)。输入完成后点击进入授权页(要保证当前你的github账号已经成功申请到了资格)






点击Authorize GitHub Copilot即可激活成功:

此时已经成功连接了,idea中会展示同意使用的弹窗(如果这个弹窗是要求你加入waitlist证明的你的github账号还没有激活使用资格,请参考上面如何申请资格)

点击Agree后就可以看到成功登录的弹窗了。此时就可以使用了!

如果碰到:waiting for github authentication,可以作如下尝试:

(1)方案一:使用VPN

(2)方案二:使用手机的热点

(3)方案三:将Copliot版本替换为旧版本,可以参考如下地址

https://blog.csdn.net/stjuliet/article/details/124998912

三、使用Copilot

登录成功后就自动开启了copilot。

下面先看一下快捷键:

l 允许当前的建议: Tab.

l 取消当前的建议: Esc.

l 显示下一个建议: Alt + ] or Option + ].

l 显示上一个建议: Alt + [ or Option + [.

l展示建议: Alt + \ or Option + \.

然后就可以体验了。我们以打印hello world的例子:

public static void main(String[] args) {    //打印hello world 到控制台    System.out.println("hello world");}

其它体验:

//计算年龄之差public static int getAgeDiff(int age1, int age2) {    return age1 - age2;}//校验是否是合理的手机号public static boolean isValidPhoneNumber(String phoneNumber) {    return phoneNumber.matches("^1[34578]\\d{9}$");}//校验是否是合理的邮箱public static boolean isValidEmail(String email) {    return email.matches("^\\w+@\\w+\\.\\w+$");}//校验是否是合理的身份证号public static boolean isValidIdCard(String idCard) {    return idCard.matches("^\\d{17}[0-9Xx]$");}// 下载网络图片到本地public static void downloadImage(String url, String fileName) {    try {        URL imgUrl = new URL(url);        HttpURLConnection conn = (HttpURLConnection) imgUrl.openConnection();        conn.setRequestMethod("GET");        conn.setConnectTimeout(5 * 1000);        InputStream inStream = conn.getInputStream();        FileOutputStream outStream = new FileOutputStream(fileName);        byte[] b = new byte[1024];        int len;        while ((len = inStream.read(b)) != -1) {            outStream.write(b, 0, len);        }        outStream.close();        inStream.close();    } catch (Exception e) {        e.printStackTrace();    }}

总结

试用完后确实觉得强大,这是一般的代码提示插件做不到的,但是还是不建议初学者使用它吧,毕竟语法都没弄懂,太过依赖插件也并不是好事,对于想要提高效率的确实也是不错选择。

还有个问题,就是代码的安全性问题,插件是否会将本地代码上传作为模型的一部分去训练?商业项目用到了特殊开源协议的代码是否会引起法律纠纷?这都是在你使用前需要去考虑的地方,写写个人代码还好,工作中还是尽量别使用。



购买完整视频,请前往:http://www.mark-to-win.com/TeacherV2.html?id=287