社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub 新出的功能!可以帮我们自动写代码

进击的Coder • 5 年前 • 571 次点击  
这是「进击的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<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 就不是积极情绪。

虽然说规范程度上一般,没有异常处理什么的,但是已经相当了不起了有没有!

  • 它居然能准确理解注释中我们描述的两个需求

  • 它居然知道调用哪个 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
及时收看更多好文
↓↓↓



点个在看你最好看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/116756