这是「进击的Coder」的第 451 篇技术分享
作者:崔庆才
今天逛 GitHub 的时候发现了 GitHub 出了一个新的 Feature,叫做 GitHub Copilot,说可以帮我们自动写代码!
网址是这个:https://copilot.github.com/
点进来之后就几个醒目的大字 - Your AI pair programmer,你的人工智能编程伙伴。
这里有几个示例是这样的:
怎么个人工智能法呢?
这里前 7 行都是人写的,后面的 17 行都是人工智能帮写的。
我们需要写啥呢?我们来详细看看这个例子。
首先创建了一个 sentiment.ts 文件,然后引入了一个 Node.js 的包叫做 fetch-h2,然后写了两行注释:
// Determine whether the sentiment of text is positive
// Use a web service
什么意思呢?就是用注释写了我要写个啥东西,翻译过来如下:
判断一句话的包含的情感是正面的还是负面的。(比如说“我好开心”就包含了积极情绪,句子包含的情感就是正面的;比如“你太坏了”就包含了负面评价,句子的情感就是负面的。)
使用 Web 服务来实现。
然后定义了一个方法的声明:
async function isPositive(text: string): Promise
没了。
就导入了一个包,然后写了两句注释,定义了一个方法的参数和返回值,人做的事就这么多。
然后 GitHub Copilot 就能帮我们把代码写出来,它写的内容如下:
const response = await fetch(`http://text-processing.com/api/sentiment/`, {
method: "POST",
body: `text=${text}`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
});
const json = await response.json();
return json.label === "pos";
}
没错,它智能分析了我们人写的注释和方法的声明,然后就把代码写出来了。
这里就调用了一个 API,然后还自动构造了 POST 请求,获取返回结果,然后比对返回结果的 label 是不是 pos,如果是,那就代表句子包含了积极程序,返回 false 就不是积极情绪。
虽然说规范程度上一般,没有异常处理什么的,但是已经相当了不起了有没有!
它居然能准确理解注释中我们描述的两个需求
它居然知道调用哪个 API 来判断文本的情感信息
它居然还能没有语法错误地把一个 JavaScript 方法写出来
牛逼了!
当然它不止能写 JavaScript,还能写很多其他的语言,我们再来看一个 Python的 例子。
这里我们新建了一个 parse_expenses 的 Python 文件,然后定义了一个 parse_expenses 方法,接收一个参数叫做 expenses_string,然后写明注释如下:
"""
Parse the list of expenses and return the list of triples (date, value, currency).
Ignore lines starting with #.
Parse the date using datetime.
Example expenses_string:
2016-01-02 -34.01 USD
2016-01-03 2.59 DKK
2016-01-03 -2.72 EUR
"""
这里就写了,解析下面三行消费数据,然后返回日期、数值、单位,同时要求忽略掉开头是 # 的行,时间要用 datetime 库来解析出来。
然后 AI 就帮我们写了如下代码:
expenses = []
for line in expenses_string.splitlines():
if line.startswith("#"):
continue
date, value, currency = line.split(" ")
expenses.append((datetime.datetime.strptime(date, "%Y-%m-%d"),
float(value),
currency))
return expenses
看完这个我惊呆了,它全都做到了!
跟它说了忽略开头是 # 的行,它就添加了一个判断
而且它智能分析了下面的三行数据是什么格式的,然后还知道用空格把它分开
分开之后,针对日期,他还知道用 datetime 解析一下,而且还知道是什么格式,年月日中间用的是横线
数值还自动转成了 float 类型
最后组成了一个元组返回了
简直,我简直不相信这是 AI 写的,感觉这个作为面试题,人也不一定一次性完整写得很好,AI 全都做到了!
这。
当然除了 JavaScript、Python,它还会很多语言,比如 Go、Ruby、TypeScript 都会。
这是背后究竟是什么技术呢?
看了看官网的介绍,说是基于 OpenAI 做的,官方原话如下:
Trained on billions of lines of public code, GitHub Copilot puts the knowledge you need at your fingertips, saving you time and helping you stay focused.
翻译过来就是:
GitHub Copilot 接受了数十亿行公共代码的训练,让您所需的知识触手可及,从而节省您的时间并帮助您保持专注。
反正就是他们训练了一个模型,这个模型接受了数十亿行代码作为训练输入,最后就学会了人怎么写代码了。
这波可以。
然后官方还介绍说:
GitHub Copilot 尤其擅长写 Python、Go、Ruby、JavaScript、TypeScript,并且现在已经发布成了 VS Code 中的一个插件。在我们写 Code 的时候,这个插件就会跟 OpenAI 的模型通信,然后目前看到的内容帮助我们自动写出想要的代码,基本流程如下图所示:
好家伙,那我赶紧来下载看看。
到 VS Code 里面搜索下 Copilot,果然有,已经十万多下载量了。
装上之后,它让我登录 GitHub 授权,登录之后,它弹了一个令人悲伤的信息:
它说我现在还没有权限使用,请访问 https://copilot.github.com 申请假如白名单。
也就是还没完全开放使用,需要申请才能用。
于是乎,我就去申请了下,点下网站的 Sign Up 即可,现在我已经在等待名单中了,等通过了我应该就能用了,如图所示:
大家感兴趣的话也赶紧去申请试试吧!
“后记:可能有的朋友会担心:难道我要失业了?依我看,不必过于惊慌,目前的 AI 应该还不至于智能到这个程度,它能懂的还是有限的,我相信再复杂一点的逻辑它就不一定写出来了,不用担心,程序员可是几乎最不能被 AI 替代的职业之一呢。
”
End
「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。
看完记得关注@进击的Coder
及时收看更多好文
↓↓↓
点个在看你最好看