教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

AI 编程工具来了!GitHub Copilot 可对整行或全部代码给出 AI 分析建议

David Ramel

  • 2021-06-30
  • 本文字数:3221 字

    阅读完需:约 11 分钟

AI编程工具来了!GitHub Copilot 可对整行或全部代码给出AI分析建议

作为一款 AI 结对编程工具,Copilot 的主要定位是提供类似 IntelliSense/IntelliCode 的代码补全与建议功能,但在实际表现上有望超越同样由微软合作伙伴 OpenAI 开发的 Codex AI 系统。


软件开发领域的“第三次工业革命”似乎正缓缓揭开序幕:随着全新“AI 结对编程工具”的亮相,AI 技术正开始在编码工作中发挥作用。


以 OpenAI 推出的新型 AI 系统为基础,这款 GitHub Copilot 有望在短期内登陆 Visual Studio Code,并进一步现身于更为成熟的 Visual Studio IDE。但就目前的技术预览版本来看,GitHub Copilot 的表现还比较“粗糙”,但据说它的智能化程度一直在不断提升。


什么是 AI 结对编程


在编程领域,结对编程(英语:Pair programming)是一种敏捷软件开发的方法,用来代指两个程序员在一个计算机上共同工作。通常来说,会有一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,而审查代码的人称作观察员(或导航员)。为了保证结对编程的纠偏能力,两个程序员经常互换角色。


由于人工智能和大数据技术的不断发展,近年来人机结对编程(MMPP)不断成熟, AI 结对编程(AIPP)产品也加快了落地步伐。人机结对编程已经是一个较为成熟的概念,指的是人机协同的交互式智能编程,在这个过程中,程序员在机器的辅助下进行编程,并且在共同完成一个个程序编写的过程中,程序员会及时纠正机器人的错误,从而改进机器人学习的模型。


AI 结对编程,可以简单理解为人机结对编程的升级版,典型的落地产品有 aiXcoder 智能编程机器人和最新亮相的 GitHub Copilot。翻看 GitHub Copilot 官网,其对 GitHub Copilot 的定义揭示了 AI 结对编程的核心原理:GitHub Copilot 是一个 AI 配对程序员,可帮助您以更少的工作更快地编写代码。GitHub Copilot 由 OpenAI Codex 提供支持,可从评论和代码中提取上下文,并立即对单行代码甚至整个函数给出建议。而 OpenAI Codex 接受过公开源代码和自然语言的培训,能理解编程语言和人类语言。在工作时,GitHub Copilot 编辑器的扩展插件将程序员的注释和代码发送到 GitHub Copilot 服务,然后该服务使用 OpenAI Codex 来生成对代码的建议。


那么,Copilot 在实际工作中的表现如何呢?


定位于提供代码补全与建议功能,Copilot 预览版表现超预期


Copilot 的首个实现为 VS Code 扩展,正在测试小组的验证下不断完善。一旦技术预览版通过检测,未来可能会以付费产品的形式在 VS Code 及 Visual Studio 上与大家见面。


GitHub CEO Nat Friedman 在 6 月 29 日接受采访时表示,“过去一年,我们与才华横溢的 OpenAI 团队携手构建了 GitHub Copilot,很高兴这次能向大家正式展示。每天都有数百名开发人员进行内部使用,它的表现也着实让大家震惊,甚至有些超出预期。如果技术预览版的进展一切顺利,我们计划在未来适当的时候把它扩展为付费产品”。


作为一款 AI 结对编程工具,Copilot 的主要定位是提供类似 IntelliSense/IntelliCode 的代码补全与建议功能,但在实际表现上有望超越同样由微软合作伙伴 OpenAI 开发的 Codex AI 系统。顺带一提,这里提到的 IntelliCode 是专供编码大规模 transformer 模型(GPT-C)的方案;而 OpenAI Codex 则属于 GPT-3(生成式预训练 Transformer),其能够将自然语言翻译为代码形式。   


(图片来源:GitHub Copilot)


与 IntelliCode 类似,Codex 也利用 GitHub 上的高质量代码 repo 进行训练,同时考虑到项目中的本地上下文及其他因素,以便为单一代码行或整个函数提供代码补全支持。


Friedman 在 6 月 29 日的博文中还提到,“OpenAI Codex 对于人们的代码使用习惯有着广泛了解,而且在代码生成能力上远远超过 GPT-3,这要归功于它在训练中接触到的大量公共源代码数据集。GitHub Copilot 则适用于多种框架和语言,但目前的技术预览版主要面向 Python、JavaScript、TypeScript、Ruby 以及 Go”。


微软及 OpenAI 早在 2019 年就达成了合作协议,双方最近的合作成果当数由 GPT-3 为微软 Power Apps 提供支持的全新“无代码”自然语言开发功能。如今,OpenAI Codex 也开始在已经归微软所有的 GitHub 新产品中发挥重要作用。


如前文所述,目前技术预览版中还缺少某些重要功能(截至本文撰稿时,这款 VS Code 扩展共安装了 325 次)。根据项目网站上的常见问题解答部分,“GitHub Copilot 并未对代码建议进行实际测试,因此给出的代码结果可能无法编译或运行。


此外,GitHub Copilot 所能容纳的上下文也非常有限,因此即使面对超过数百行的大型单一源文件,它也只能参考其中的前一条上下文。另外,GitHub Copilot 可能会在建议中使用陈旧或者已被弃用的库及语言。您可以随意使用代码建议,但须自行承担相关风险”。


此外,常见问题解答还指出,GitHub Copilot 在尝试理解开发者意图时给出的建议代码可能无效或不具备实际意义,因此用户应像对待其他代码一样认真测试、审查及检测这些建议内容。


智能化程度提升很快,代码所有权、许可证等问题引热议


尽管还有种种不足,但 GitHub 仍然希望能根据当前技术预览版的初步发现不断实现重大改进。常见问题解答中提到,“我们近期对一组 Python 函数进行了基准测试,并发现这些函数在开源 repo 中具有良好的测试覆盖率。我们清除了函数本体,并要求 GitHub Copilot 进行填充。模型在第一次尝试时只有 43% 的正确率,但在允许进行 10 次尝试时则能把正确率提升至 57%。它的智能化程度一直在不断提升。”当然,大家也不可避免地对这款工具可能引发的代码所有权、许可证、利益冲突以及其他现实问题展开了讨论。


Friedman 回应称,“总体来说:(1)在公共数据上训练机器学习系统属于合理的使用方式;(2)输出结果的所有权归于操作者,跟传统的编译器没什么区别。具体到训练问题上,大家也可以看到 OpenAI 向美国专利商标局做出的承诺。我们预计 GitHub Copilot 项目的知识产权与 AI 成果将很快在世界范围内掀起关于政策的讨论热潮,我们自己也希望能够参与进来!”


下面来看得到 Friedman 正式回应的其他几个重要问题:

  • 问: 是否存在关于 AI 编写代码存在安全漏洞的报告?这些漏洞会不会遭到恶意分子的利用?

    Friedman: 我还没听说过类似的情况,但我们肯定会努力防范这类状况的发生。


  • :这类方案的推出,会不会最终在项目与 GPL 代码之间引发许可证冲突?

    Friednman: 应该不至于,我们正在采取措施避免在输出中直接引用训练数据。而单就使用公共代码进行训练的许可方面,从机器学习社区的通行惯例来看这属于非常正常的合理使用方式。当然,预计这方面问题也会在美国乃至世界各地引发广泛讨论,我们也渴望能参与进来。


  • 问: 这应该是个争议性问题,甚至有可能消灭掉相当一部分开发者岗位。您如何看待 Copilot 对开发者生态系统带来的增强作用与破坏作用?另外,它跟之前大家所熟悉的 tabnine 等常规代码补全工具到底有什么区别(Twitter 评论中也有不少朋友抱有类似的疑问)?

    Friedman: 我们认为,软件开发正迎来自己的“第三次工业革命”。第一次革命是编译器、调试器、垃圾收集器以及语言等工具的出现,极大提升了开发者的工作效率;第二次则以开源为龙头,帮助全球开发者社区汇聚起来并在彼此的开发成果基础之上不断推进;第三次革命就在当下,尝试在编码当中使用 AI 技术。在发展成熟之后,开发人员的日常工作内容将有巨大改变——但仍然有很多工作可做、也只能由人类开发者完成,因此不用太担心。


目前的技术预览版还存在诸多限制,例如需要使用最先进的 AI 硬件。感兴趣的朋友可以到官网申请试用。常见问题解答指出,“如果技术预览版获得成功,我们计划后续推出 GitHub Copilot 的商业版本。我们希望通过此次预览了解人们如何使用 GitHub Copilot、怎样才能实现 Copilot 的规模化运营等。”


OpenAI 表示将在今年夏末通过 API 发布 Codex,引导开发人员探索这套全新 AI 系统中的更多功能,并帮助其将功能注入到自己的应用程序当中。


原文链接:


https://visualstudiomagazine.com/articles/2021/06/29/github-copilot.aspx

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2021-06-30 17:399864
用户头像

发布了 74 篇内容, 共 24.4 次阅读, 收获喜欢 83 次。

关注

评论

发布
暂无评论
发现更多内容

LabView实验——温度检测系统(实验学习版)

一碗黄豆酱

LabView---信号发生器

一碗黄豆酱

IT小白也能轻松get日志服务---使用Nginx模式采集日志

云端explorer

nginx 运维 日志服务

短视频直播系统源码

开源直播系统源码

短视频源码 直播系统源码 短视频直播系统

李宏毅《机器学习》丨3. Gradient Descent(梯度下降)

AXYZdong

机器学习 7月月更

如何选择合适的体育场馆用LED显示屏

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

云图说丨数字资产链:您的数字资产产权保护神

华为云开发者联盟

区块链 云计算 开发 开发工具

实操演示:如何用 ONES 制定 Scrum 迭代计划?

万事ONES

AIOps 还是 APM,企业用户应如何作出选择?

云智慧AIOps社区

APM 智能运维AIOps

Ampere Altra Max 提供可持续的高分辨率 H.265 编码

亚马逊云科技 (Amazon Web Services)

编码 Tech 专栏

消息中间件

Damon

7月月更

发现增长新动力,企业到底需要一朵什么样的云?

ToB行业头条

服务器运维需要24小时在线吗?需要周末加班吗?

行云管家

服务器 IT运维

医院怎么实现高效低成本运维?有什么软件可以满足吗?

行云管家

运维 IT运维 医院运维

ABAP-EXCEL上传下载

桥下本有油菜花

abap ABAPexcel

不是我说,不掌握这些坑,你敢用BigDecimal吗?

程序员小毕

Java 程序员 面试 后端 BigDecimal

如何做好安全开发?

华为云开发者联盟

云计算 开源 安全 开发

一文了解 Nebula Graph 上的 Spark 项目

NebulaGraph

spark 图数据库 知识图谱 NebulaGraph

可以 DIY 装修的商城系统,你也能拥有!

CRMEB

京东云联合Forrester咨询发布混合云报告 云原生成为驱动产业发展新引擎

京东科技开发者

云原生 数字化 科技 混合云 多云

数据仓库开发 SQL 使用技巧总结

C++后台开发

MySQL 数据库 sql 中间件 后端开发

2022年中国娱乐直播市场年度综合分析

易观分析

直播市场

低代码软件开发平台怎么选?

优秀

低代码开发 低代码平台

Python图像处理丨三种实现图像形态学转化运算模式

华为云开发者联盟

Python 人工智能 AI 图像形态学

汇聚开发者智慧 夯实数据库产业根基

科技热闻

直播预告 | 多云时代如何建设企业云管理平台?

BoCloud博云

cmp 云管理平台 云管理

React原理学习路线

郭明

如何在Docker部署安装ETL调度运维工具TASKCTL

TASKCTL

DevOps 大数据运维 Kafka ETL TASKCTL Docker 镜像

小李:“有没有特别简单的Python解密rsa的案例?”“还真有”

梦想橡皮擦

Python 爬虫 7月月更

LabView中禁用模块(属性节点)

一碗黄豆酱

前端之路React学习笔记

恒山其若陋兮

7月月更

  • 扫码添加小助手
    领取最新资料包
AI编程工具来了!GitHub Copilot 可对整行或全部代码给出AI分析建议_语言 & 开发_InfoQ精选文章