【CSDN 编者按】当模型越来越大,对硬件性能要求越来越高,有可能会遇到“数据荒”的问题,我们能否让 AI 自我演进,通过自我生成数据的方式学习,以达到与大数据同样的效果?未来自我创造智能是个有前途的方向。
分享嘉宾 | 申博 整理 | 王子彧
出品 | CSDN(ID:CSDNnews)
在过去几个月,我们接连被以 ChatGPT 引爆的新一轮 AI 浪潮所席卷,ChatGPT 以一种最自然的交互使用方式,实现了人们期待已久的通用人工智能雏形,让所有人都可以轻易使用。作为程序员,我们很多人可能已经在使用各类 AI 编程助手,包括与 ChatGPT 同族的、基于 GPT-3 的 Codex,即 GitHub Copilot。在 GPT-4 的时代,未来人工智能加持下的 AI 编程会如何发展?
华为云 PaaS 技术创新 LAB 技术专家申博在《新程序员大会(NPCon):AIGC 与大模型技术应用峰会》上就 GPT-4 带来了其最新的思考与实践,发表了《在 GPT-4 时代,重新思考 AI 编程》的主题演讲,分享了华为云 CodeArts Snap 对 GPT-4 的时代 AI 编程发展的一些思考。
华为云 PaaS 技术创新 LAB 技术专家 申博
从研究到产品,从玩具到生产力
从 2022 年 6 月 22 日,面向开发者的 AI 代码生成工具Copilot 正式发布商用版本。到 2022 年 11 月 9 日华为云正式对外发布基于 PanGu-Coder 的 CodeArts Snap,AI 编程已经实现了从研究到产品,从技术原型到生产力的转变。当前,华为云 CodeArts Snap 已经可以在 JetBrains 及 VSCode 插件市场中下载,并支持通过 CSDN 账号直接登录。
AI 编程最前沿:目前最强 AI 能做什么?
在编程方面,目前最强的 AI 可以实现什么样的功能呢?
面向 AI 的协作开发:质量应与效率并重
“ AI 编程工具的发展主要是为了提高程序员的开发效率,然而所生成代码的质量也同样重要。”
首先,AI 生成的代码中可能存在未知的错误和漏洞。随着自动生成的内容越多,其质量就越成为一个重要话题。其次,实际项目中往往涉及很多设计模式和框架,需要综合多个文件和不同层次的代码,同时掌握较强的专业和领域知识,才能了解程序的具体含义和功能。再者,自监督的预训练方式是基于自然语言序列的顺序性,但写代码时并非如此,程序员往往会在多份代码中不断跳转和编辑,甚至利用 IDE 等工具进行全局的重构。如此一来,仅靠大规模语言模型很难覆盖以上所有情况,即使强大如 GPT-4 这样的模型。
重新思考 AI 编程的上限究竟在哪?
“众所周知,GPT-4 可以让编写简单代码的过程更加轻松,但它在处理复杂的代码时仍然很困难。这意味着它可以降低编程的门槛,但未必能降低系统性开发的难度,这可能缘于统计学习和生成式模型固有的局限。”
核心:交互与协同
目前来看,解决纯大模型固有局限的核心是交互与协同。交互与协同不仅指人与 AI 或工具之间的交互,也包括模型与现有工具之间的交互,以及现有工具之间可能存在的交互。 例如,将大模型作为操作系统,调用现有工具提供解决问题所需的信息,再由大模型探索多样性的解决方案,最终实现有来亦有回的交互。
关于 AI 编程未来发展的探索
业界已经出现了很多模型与工具相结合的探索,我们从以下四个例子来看:
探索一:Toolformer(Tool+Transformer)
核心思想:让大模型具备人类自主使用工具的能力,让它自主地学会决定何时应该使用哪些工具以及如何调用这些工具。
效果:在经过多轮的训练后,模型可以具备此类能力,在它生成的文本中插入 API 调用,直接将任务外包出去;并将 API 返回的结果融入其预测中,从而更好地生成。在大多数任务上,Toolformer 方法可以使模型性能明显提高,在一些下游任务中超过 GPT-3。
探索二:ReAcc(Retrieval-Augmented Code Completion)
核心思想:通过代码检索为模型提供项目外的上下文,增强代码补全能力。
效果:将类似的代码与未完成的代码拼接之后输入代码补全模型,在 Python 和 Java 编程语言的 CodeXGLUE 基准测试中取得了最佳性能。
探索三:CompCoder(Compilability-oriented Coder)
核心思想:利用编译器的反馈信息,减少模型生成结果中的编译错误,提高所生成代码的可编译性。
效果:将 CodeGPT 在代码补全任务中的平均编译通过率 44.18%->89.18%,文本到代码生成任务中的平均编译通过率 70.3%->96.2%。
探索四:CODAMOSA
核心思想:结合基于搜索的软件测试(SBST)和大语言模型(LLM)生成测试代码。
效果:在 SBST 生成的测试代码覆盖率改进停滞时,大模型可将搜索重定向到搜索空间中的其他区域,从而进一步提高测试覆盖率。
CODAMOSA 这种思路值得扩展到其他场景中:除了让模型调用工具,将模型视为主流工具中的一个环节或组件也是一种可行的思路。与 Toolformer 中让模型调用工具不同,基于语言模型即服务(Language Model as a Service)的方式,使现有工具能够调用模型,来补充或替代一部分传统技术难以实现或实现不好的功能,这是未来非常有发展潜力的方向。
华为云 CodeArts Snap
代码即艺术,是开发者心灵世界的缩影与映射,更是程序员对这个世界的理解与表达。在这个过程中,一些个性化东西也被加入到代码中。
随着 AI 的发展和工具的落地,现代化编程中机械化的部分将越来越容易,所以新程序员们需要更多地关注编程的艺术层面,例如设计模式的创造、架构设计的取舍、算法的持续优化等。
华为云推出了 CodeArts 服务来帮助开发者们面向未来转型,CodeArts 提供了一整套软件开发流程和工具,其中包括目前主要定位于编码阶段的 CodeArts Snap 智能编程助手。CodeArts Snap 基于代码生成但不局限于代码生成,同时还提供了测试代码生成、库联想与 API 推荐、代码检查和修复等更多特性,其最终目的是同时提高开发的效率和质量,成为新程序员未来的必备工具。
拥抱 AI 编程时代
申博总结道:从前我一直在思考ChatGPT 这种交互方式什么时候会从浏览器来到 IDE?近期,微软和 GitHub 发布了 Copilot X,ChatGPT 已经来到了 IDE 中。而 OpenAI 发布的 ChatGPT Plugins,也让 ChatGPT 拥有了手的能力,未来可扩展到眼、耳、鼻等更多能力。
因此,我们需要重新思考未来的 AI 编程和 AI 编程的未来。我们相信未来CodeArtsSnap之类的 AI 研发助手一定会成为像今天的 IDE 一样的必备工具,并且会实现现有工具、软件分析技术、语言模型相辅相成的效果。
AI 不会取代人类,但掌握 AI 技术的人将取代另一些人。开发者需要像适应 IDE 一样学习和适应 AI,而我们作为研究者和从业者,也会努力缩小技术差距,打造中国版本 Copilot 和 ChatGPT。欢迎大家扫码关注 CodeArts Snap 并在 IDE 插件市场中下载使用!
作者简介:
华为云 CodeArts Snap 工程师,华为云 PaaS 技术创新 Lab 代码智能技术专家,北京大学博士
☞首批因 AI 失业的人出现,某游戏公司裁掉半数原画师;谷歌称其 AI 超算系统比英伟达 A100 更快、更节能;Slint 1.0 发布|极客头条
☞ CV 迎来 GPT-3 时刻,Meta 开源万物可分割 AI 模型和 1100 万张照片,1B+掩码数据集!
☞ GPT-4 版“贾维斯”诞生,国外小哥用它 4 分钟创建网站、聊天就能创建 GitHub repo......