炸裂!又一 VSCode 神器面世(AI 能自动编程了??)

2023-11-29 04:30

本文主要是介绍炸裂!又一 VSCode 神器面世(AI 能自动编程了??),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“蓝色字体”,选择“设为星标

做积极向上的前端人!

转载自:机器之心

在项目开发中,优秀的代码自动补全工具可以提升工作效率。然而,传统的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳。

今日,GitHub 和 OpenAI 联合发布了新的 AI 代码补全工具 GitHub Copilot,并展示了技术预览版。该工具可以在 VS Code 编辑器中自动完成代码片段,这也是 OpenAI 接受微软 10 亿美元投资以来的首个重大成果。

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

简而言之,这就是未来。

目前,GitHub Copilot 项目还只是严格的技术预览版,用户可以在主页注册报名,将有机会访问试用。

GitHub Copilot 注册地址:https://github.com/features/copilot/signup

对于 GitHub 和 OpenAI 推出的这款全新 AI 代码补全工具,网友们给出了极高的评价。下面这位用户大致可以代表大多数试用者的心声。

ta 表示:「我使用 Alpha 版两周了,Copilot 似乎能够准确地知道我接下来要输入的内容,这令我大受震撼。有时它甚至建议我要查找的内容,例如选择随机十六进制随机码的片段或者使用所有常见图像 mime-types 完成数组。

此外,Copilot 在处理 React 组件时也特别有用,可以做出非常准确的预测。最后,Copilot 改变了程序员记录自己代码的方式。如果你在实现代码之前编写了非常好的描述性注释,它能够更好地给出正确代码建议,有时甚至可以为你编写整函数。」

MSFTResearch 高级研究员 Alex Polozov 更是表示:不夸张的讲,Copilot 将成为本世纪 20 年代排名前三的技术进展!

甚至有网友表示:这是要终结编程?

不过,虽然使用者对 Copilot 提供的生产力提升赞不绝口,GitHub 也表示:并不是所有使用的代码都经过了漏洞、不安全实践或个人数据的审查。因此,他们也设置了一些过滤器来防止 Copilot 生成攻击性的语言,并可能效果并不完美,需要后续完善。

Copilot 背后的技术

首先,训练数据上,GitHub Copilot 是在数十亿行公共代码上训练的。

从技术角度来看,GitHub Copilot 工具由 OpenAI 开发的全新 AI 系统 OpenAI Codex 提供支持。OpenAI 的联合创始人兼首席技术官 Greg Brockman 说:Codex 是 GPT-3 的后代。

OpenAI Codex 在人们如何使用代码方面拥有广泛的知识,并且在代码生成领域显著优于 GPT-3 了,部分原因在于该系统是在包含大量公开源代码的数据集上训练的。更具体地,Codex 的训练集中包含了提取自 GitHub 的 TB(terabyte)级公开可用代码以及英语语言示例。

由于是在公开可用源代码和自然语言上训练,Codex 可以同时理解编程语言和人类语言。因此,在整个实现过程中,Copilot 编辑器扩展将开发者的注释和代码发送至 Copilot 服务端,然后使用 Codex 生成和建议单行代码和整个函数。

此外,据 OpenAI 的一位代表透露:OpenAI 计划今年夏季推出基于其 API 的 Codex 版本,这样开发者们就可以利用该技术创建自己的 app 了。

在具体实现中,GitHub Copilot 从编写的代码中提取上下文,并给出整行代码或整函数的建议。该工具可以帮助开发者快速发现解决问题、编写测试和搜索全新 API 的替代方法,而不需要在网上繁琐地定向搜索答案。

另外,使用 GitHub Copilot,开发者始终可以掌控一切,既可以循环查看 Copilot 给出的代码建议,选择接收或者拒绝,并能够手动地编辑这些代码。Copilot 会适应开发者所做的编辑,并适配编码风格。

GitHub Copilot 适用于多种框架和语言,但本次展示的技术预览版尤其适用于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。GitHub 认为该工具是结对编程(pair programming)的重大进展,程序员在编写代码时有了一个「虚拟的帮手」,它可以捕捉到程序员的错误,加速开发过程。

那么,Copilot 效果如何?

最近,Github 针对一组在开源存储库中具有良好测试覆盖率的 Python 函数进行了基准测试,测试团队清除了函数体并要求 GitHub Copilot 填充它们。模型在第一次尝试正确率是 43% ,经过 10 次尝试后,正确率达到了 57%。之后 GitHub Copilot 还将进行多次训练和测试,准确率会进一步提升。

下面,我们就看一下 GitHub 给出的具体 demo 展示。

Copilot 的补全效果

相比于市面上一些编程辅助工具,Copilot 的上下文理解能力要强大得多。无论是在文档字符串、注释、函数名还是代码主体中,Copilot 都能根据编程者已写出的上下文生成匹配的代码。

先来看一下 Copilot 的主要功能 —— 代码补全的效果,以 TypeScript 语言为例,给出函数名和参数,Copilot 就能自动补全代码。

除了补全函数,Copilot 还能根据注释写出代码。编程者给出一条描述代码逻辑的注释,GitHub Copilot 就能自动生成代码:

在编程过程中,有些代码的格式和内容非常相似,重复编写耗时且无聊。现在 GitHub Copilot 能够帮编程者解决这个问题,将简单重复的代码编写部分自动化:

在软件开发的过程中,除了编写代码,软件测试也是非常重要的,对一个代码项目起到支撑的作用。导入一个测试包,其余的测试代码 GitHub Copilot 就能够帮开发者完成。

在编程中,同一个函数常有多种实现方法,编程者通常会根据代码的实现效果和运行性能选择最合适的方法。编写多种实现需要花费时间和精力,现在使用 GitHub Copilot 一键就能搞定,如下图所示,点击 Next 和 Previous 就能查看多种实现方法,点击 Accept 选中其中一种。

今天 GitHub 推出的 Copilot 技术预览版本,还仅限于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。此外,开发团队表示,在努力使其变得更好的同时,GitHub Copilot 补全的代码应该像其他任何代码一样经过仔细审查和测试。这些仍需要人类编程者的监督和优化,但 AI 自动编程的愿景已指日可待。

— END —

点击关注下方卡片关注我????????

漫画 | 每天晚上坚持看书学习,但之后又记不住,这样对自身成长真有好处吗?

26岁离开谷歌,女朋友一个建议助他开发出10亿美元App

如何阅读大型前端开源项目的源码?

互联网的厕所,乃兵家的必争之地

30个小知识让你更清楚TypeScript

漫画 | 如果面试时直接怒怼面试官...

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

这篇关于炸裂!又一 VSCode 神器面世(AI 能自动编程了??)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431436

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解