一款利用人工智能生成模型来合成代码的工具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