摘要:通过将自然语言转化为规范可阅读、无开源漏洞的安全编程语言,提升开发者编程效率,助力企业快速响应市场需求。

本文分享自华为云社区《华为云发布智能编程助手 CodeArts Snap!》,作者:DevAI 。

基于大模型的程序自动生成取得重大突破

数字时代竞争激烈,应用研发效率提升在企业竞争力构建中扮演着重要角色。2022 年 Gartner 选出 12 大战略性技术中最强的 AI 技术之一 “生成式 AI”,其巨大的商业潜力引起科技市场普遍关注,涌现出一批以智能化代码生成为核心的提高开发者编程效率的 AI 产品。

例如,微软以 OpenAI 大规模代码预训练生成模型 Codex 为底座的 AI 辅助编程工具 Github Copilot,一经推出受到业界热评。Github 声明内部团队 30% 的新代码是在 Copilot 的帮助下完成的;另外,在写 web 服务端的对比实验中发现,使用 AI 辅助编程工具的一方平均可减少 55% 的开发时间。可见,AI 辅助编程工具对减轻研发人员工作压力、降低企业研发投入成本、提高编程效率都有着重要价值。

但与此同时,由于生成的内容难以限制,一些 “不安全” 或者 “不应该” 出现在生成结果中的代码会出现在生成结果中,导致市场上各 AI 辅助编程工具质量不一,部分厂商的 AI 辅助编程工具所生成的代码 40% 左右存在网络安全缺陷,出现隐私泄漏、开源风险等问题。

国产最强 AI 代码辅助编程工具 - 华为云 CodeArts Snap

华为云智能编程助手 CodeArts Snap 作为云厂商中首个国产化的 AI 代码辅助编程工具,致力于打造现代化开发新范式。通过将自然语言转化为规范可阅读、无开源漏洞的安全编程语言,提升开发者编程效率,助力企业快速响应市场需求;下面用 3 分钟向大家揭晓华为云 CodeArts Snap 强在哪里。

规避开源风险 | 杜绝业界普遍存在的编程安全隐患

华为云 CodeArts Snap 在各阶段均采取了针对性措施,有效规避了业界产品普遍带来的编程安全隐患。例如为避免开源代码带来的系统性风险,在数据预处理阶段,预训练数据对可能产生问题的 licence 涉及的代码进行了精细的过滤,从根本上杜绝开源 licence 风险,并会尽可能的从多种渠道获取可用的开源数据(如 Gitee 等)。

支持多种场景 | 带你感知代码智能生成的全场景化

我们惊喜地发现,华为云 CodeArts Snap 不仅熟悉常见算法,并且能熟练地使用各种 API 及其它工具;比如能够操作数据库,甚至可以求解高等数学题。华为云 CodeArts Snap 在形形色色任务中的出彩表现,使得其成为编程人员的得力助手。

场景一。函数级代码自动生成

可以通过自然语言识别做到函数级的多行代码生成,开发者仅需在定义好的函数签名末尾处敲下 “回车键”,CodeArts Snap 将生成符合业务逻辑的完整函数代码(如下图)。

函数级代码自动生成

场景二。承上文语义,展智能风采

CodeArts Snap 在已有函数上文的场景下,还可以通过理解上文的语义和逻辑,自动进行行级代码生成(如下图)。

行级代码自动生成

场景三。从光标乍现处捕捉一次编程灵感

在编程过程中,开发者难免会遇到卡壳、停下来思考。此时 CodeArts Snap 在光标处会进行行中代码生成推荐,为开发者提供编程灵感。

光标处代码生成推荐

场景四。让代码生成不止于一个结果方案

每次触发代码生成,CodeArts Snap 会提供多个生成结果方案,开发者可以通过快捷键快速翻阅,也可以调取侧边栏对比查看所有候选代码生成推荐结果,并对结果进行选择。

快速翻阅比对候选代码生成结果

同时查看

圈点皆厚重,呈现即亮眼 | 同规模同算力下一次通过率(Pass@1)业界第一

华为云 CodeArts Snap “全场景代码智能生成” 能力向大家的亮眼呈现,其核心技术沉淀于华为云 PaaS 技术创新 lab 与华为诺亚方舟实验室联合打造的 PanGu-Coder 代码大模型中;华为在业界 PanGu-Coder 技术基础上,对模型方面进行了重点优化调整。

比如,针对函数级的代码生成与补全任务,CodeArts Snap 分别发布了参数量为 3 亿和 26 亿两个规模可用的生成功能。当给定函数名并用自然语言描述需要实现的功能后,模型即可生成完整的函数功能代码。

对比业界,华为云 CodeArts Snap 所采用的模型在使用相对更少的训练数据和计算资源的情况下,代码生成一次通过率大幅超越同等规模的模型,甚至可以做到远超参数量规模更大的模型。华为云 CodeArts Snap 所采用的模型在保障了较强的泛化性能的同时,也大幅降低了研发团队开发成本和缩短产品研发周期,为快速部署应用带来更多的可能性。

附:表 1 与表 2 分别给出了 CodeArts Snap 所采用的模型(PanGu-Coder)在 OpenAI Codex 发布的 Python 程序生成评测数据集 HumanEval 以及谷歌发布的 MBPP 两个函数级代码生成任务的数据集上的表现:

表 1 PanGu-Coder 在 HumanEval 上的一次通过率以及十次通过率

表 2 PanGu-Coder 在 MBPP 上的一次通过率以及十次通过率

邀测开放,即刻扫码体验!

华为内部研发对 CodeArts Snap 期待已久,一经上线就获得多个产品线的关注及积极试用。华为云 CodeArts Snap 目前已对外上线 VSCode 和 JetBrains 插件市场,支持 Python 和 Java,支持 PyCharm、IntelliJ 和 VSCode。现处于限时邀测阶段,感兴趣的小伙伴们快来扫码体验一下吧!

文章来自:PaaS 技术创新 Lab;PaaS 技术创新 Lab 隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新 “境界”!

PaaS技术创新Lab主页链接:https://www.huaweicloud.com/lab/paas/home.html

相关链接:

【1】CodeArts Snap以IDE插件的形式提供服务,欢迎感兴趣的小伙伴点击https://devcloud.cn-north-4.huaweicloud.com/codeartssnap/apply注册使用!

【2】CodeArts Snap支持VSCode插件市场,详情请查看:https://marketplace.visualstudio.com/items?itemName=HuaweiCloud.vscode-codebot

点击关注,第一时间了解华为云新鲜技术~

CodeArts Snap:辅助你编程的神器的更多相关文章

  1. 读 RocketMQ 源码,学习并发编程三大神器

    笔者是 RocketMQ 的忠实粉丝,在阅读源码的过程中,学习到了很多编程技巧. 这篇文章,笔者结合 RocketMQ 源码,分享并发编程三大神器的相关知识点. 1 CountDownLatch 实现 ...

  2. scratch少儿编程第一季——01、初识图形化界面编程的神器

    各位小伙伴大家好: 说到2018年互联教育的热门事件,那就不得不提Scratch. 相信各位不关注信息技术领域的各位家长也都听说过这个东西. 对于小学阶段想要接触编程或信息技术学生来说,Scratch ...

  3. 结合RocketMQ 源码,带你了解并发编程的三大神器

    摘要:本文结合 RocketMQ 源码,分享并发编程三大神器的相关知识点. 本文分享自华为云社区<读 RocketMQ 源码,学习并发编程三大神器>,作者:勇哥java实战分享. 这篇文章 ...

  4. 《Node.js 高级编程》简介与第二章笔记

    <Node.js 高级编程> 作者简介 Pedro Teixerra 高产,开源项目程序员 Node 社区活跃成员,Node公司的创始人之一. 10岁开始编程,Visual Basic.C ...

  5. [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位

    无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...

  6. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...

  7. 有哪些LabVIEW快捷键让你相见恨晚

    前言 任何一门工具,当你使用它到极致的时候,往往都朝着这样子的两个方向发展 1. 具有鼠标操作功能的软件,他的使用的极致就是脱离鼠标,迈向键盘 2. 主要是键盘操作的,他的极致就是脚本自动化,或者说一 ...

  8. eclipse加入git工具

    想必如今搞互联网编程的人没有人没有听过编程协作工具git了吧,命令行以下操作很方便.功能也很的强大. 可是对于java编程的人员,eclipse肯定是他们编程的神器(肯定是首选), 那么怎样在ecli ...

  9. asp.net命名规范

    以下命名规范是在编程中,可以辅助快速编程的良好方式之一,我一点点的整理出来,以便形成自己的编程规范.还有待完善... 0.产品命名规范: 结构 层次 产品 模块 功能 命名规则 UI(界面层) Web ...

  10. C++Primer第5版学习笔记(一)

    C++Primer第5版学习笔记(一) 第一.二章的重难点内容        这个笔记本主要记录了我在学习C++Primer(第5版,中文版)的过程中遇到的重难点及其分析.因为第一.二章都比较简单,因 ...

随机推荐

  1. 06#Web 实战:实现可滑动的标签页

    实现效果图 本随笔只是记录一下大概的实现思路,如果感兴趣的小伙伴可以通过代码和本随笔的说明去理解实现过程.我的 Gitee 和 GitHub 地址.注意哦:这个只是 PC 上的标签页,手机端的没用,因 ...

  2. DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范式?

    摘要:在未来,云上交付模式会逐步从Serverful为主转向Serverless为主. 本文分享自华为云社区<DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范 ...

  3. PostgreSQL函数:查询包含时间分区字段的表,并更新dt分区为最新分区

    一.需求 1.背景 提出新需求后,需要在www环境下进行验收.故需要将www环境脚本每天正常调度 但由于客户库无法连接,ods数据无法每日取,且连不上客户库任务直接报错,不会跑ods之后的任务 故需要 ...

  4. USB口3A限流保护芯片。带短路保护

    一般说明 PW1503是超低RDS(ON)开关,具有可编程的电流限制,以保护电源源于过电流和短路情况.它具有超温保护以及反向闭锁功能. PW1503采用薄型(1毫米)5针薄型SOT封装,提供可调版本. ...

  5. org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying

    1.报错信息 org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: org.post ...

  6. 1分钟理清楚C++类模板和模板类区别

    1.定义区别 类模板和模板类主要关注点是后一个单词. 类模板:主要描述的是模板,这个模板是类的模板.可以理解为一个通用的类,这个类中的数据成员,成员函数的形参类型以及成员函数的返回值类型不用具体的指定 ...

  7. C#深拷贝方法

    概述 为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做. 方法一(利用反射实现 ...

  8. Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)

    目录 一:python三大主流web框架 1.python三大主流Web框架 2:三大主流web框架特点 二:正常运行Django项目所需要知道的注意事项 1.计算机的名称不能有中文,不然bug在哪你 ...

  9. vue-cli3打包时vue-cli-service build怎么分不同环境(npm run build:stage和npm run build:prod)

  10. CH9126常见问题解决(持续更新)

    1. 有关CH9126时区的问题 答:当CH9126作为SNTP服务器的时候,通过串口设置的时间为东八(北京)时区的绝对时间.但是如果是Windows向CH9126SNTP服务器要时间,那么Ch912 ...