本文经进击的Coder(id:FightingCoder)授权转载 今天逛 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
什么意思呢?就是用注释写了我要写个啥东西,翻译过来如下:
判断一句话的包含的情感是正面的还是负面的。(比如说“我好开心”就包含了积极情绪,句子包含的情感就是正面的;比如“你太坏了”就包含了负面评价,句子的情感就是负面的。)
然后定义了一个方法的声明:
async function isPositive (text: string ): Promise <boolean >
没了。
就导入了一个包,然后写了两句注释,定义了一个方法的参数和返回值,人做的事就这么多。
然后 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 就不是积极情绪。
虽然说规范程度上一般,没有异常处理什么的,但是已经相当了不起了有没有!
它居然还能没有语法错误地把一个 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 解析一下,而且还知道是什么格式,年月日中间用的是横线
简直,我简直不相信这是 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 即可,现在我已经在等待名单中了,等通过了我应该就能用了,如图所示:
大家感兴趣的话也赶紧去申请试试吧!
重磅! Python 交流 群 已成立
为了给小伙伴们提供一个互相交流的技术平台,特地开通了 Python交流群。 群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。 (免费,不卖课!)
▲长按扫码