专栏首页进击的CoderGitHub 新出的功能!可以帮我们自动写代码

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

这是「进击的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(FightingCoder),作者:崔庆才

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GitHub推出「打赏」功能,全球最大同性交友平台将迎来更多开源工作?

    GitHub 官方表示,「开发者们为我们大家贡献了开源工具,这是对他们的经济支持,新的打赏功能将帮助他们构建更优秀的开源工作。」然而,这不得不让人感叹,作为全宇...

    Python数据科学
  • Github Action 快速上手指南

    Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作。用来替代用户自己设置的自动化脚本(比如:钩子+Jenkins)。

    蛮三刀酱
  • 数十亿行代码训练,GitHub原生AI代码生成工具上线,网友:要终结编程?

    GitHub Copilot 是一个 AI 代码合成器,并不是搜索引擎:它提出的绝大多数代码建议都是新生成的,此前从未出现过。

    机器之心
  • 数十亿行代码训练,GitHub原生AI代码生成工具上线,网友:要终结编程?

    GitHub Copilot 是一个 AI 代码合成器,并不是搜索引擎:它提出的绝大多数代码建议都是新生成的,此前从未出现过。

    肉眼品世界
  • 牛逼!GPT-3加持,这是要终结编程吗?

    GitHub Copilot 是一个 AI 代码合成器,并不是搜索引擎:它提出的绝大多数代码建议都是新生成的,此前从未出现过。

    昱良
  • 随时随地编程,GitHub App 终于来了

    当然了,作为一个“交友平台”,更重要的是方便了大家随时随地交流,虽然GitHub表示是为了让大家在手机上也方便办公,并且和自己的团队保持联系等等。

    xcbeyond
  • Jenkins 入门实战:GitHub Push触发Jenkins自动构建

    官方介绍[1]:Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件

    GopalFeng
  • 使用github + hexo搭建个人博客

    新建一个名为你的用户名.github.io的仓库,比如说,如果你的github用户名是test,那么你就新建test.github.io的仓库(必须是你的用户名...

    秃头哥编程
  • 使用hexo+github搭建免费个人博客详细教程

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    bering
  • GitHub重大更新:在线开发上线,以后可能就不需要IDE了

    在今年 GitHub 的第一个虚拟会议——Satellite 上,GitHub 发布了由 Visual Studio 提供技术支持的在线 IDE 工具——Cod...

    CV君
  • git使用小结

    git使用小结 很多人可能和我一样,起初对git是一无所知的。我也是因为一次偶然的机会接触到git,并被它强大的功能所蛰伏。git其实就是一种版本控制工具,就像...

    Florian
  • GitHub重大更新:在线开发上线,是时候卸载IDE了

    在今年 GitHub 的第一个虚拟会议——Satellite 上,GitHub 发布了由 Visual Studio 提供技术支持的在线 IDE 工具——Cod...

    机器之心
  • 昨天GitHub迎来重大更新

    在今年 GitHub 的第一个虚拟会议——Satellite 上,GitHub 发布了由 Visual Studio 提供技术支持的在线 IDE 工具——Cod...

    Nealyang
  • 和AI结对编程!OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大

    昨日,微软与OpenAI共同推出了一款AI编程工具GitHub Copilot,这款工具基于GitHub及其他网站的源代码,可根据上文提示为程序员自动编写下文代...

    AI科技评论
  • Github Action 快速上手指南

    Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作。用来替代用户自己设置的自动化脚本(比如:钩子+Jenkins)。

    Rude3Knife的公众号
  • 使用hexo+github搭建免费个人博客详细教程

    新建一个名为你的用户名.github.io的仓库,比如说,如果你的github用户名是test,那么你就新建test.github.io的仓库(必须是你的用户名...

    良月柒
  • 新手该如何使用 GitHub?

    这里推荐下,实验楼的《Git 与 Github 入门实践》课程。本着实用的原则,针对零基础同学,以图文的形式详细介绍了 Git &amp; GitHub 结合使...

    知忆
  • 角落的开发工具集之Vs(Visual Studio)2017插件推荐

    Visual Studio 2017 扩展 Visual Studio 2017 15.4.4 : 目前是最新的版本号,所有的工具&插件都支持这个版本号。所以...

    角落的白板报
  • GitHub 邀您加入拥有 5600 万开发者的新社区

    GitHub 的最新数据显示,GitHub 在全球范围内已有 5600 万开发者用户(中国用户数位列第二,仅次于美国),近一年内产生了 19 亿次贡献。

    HelloGitHub

扫码关注云+社区

领取腾讯云代金券