龙空技术网

开发者需要像适应 IDE 一样学习和适应 AI | NPCon 演讲实录

CSDN 228

前言:

此时咱们对“java实现最佳适应算法代码”大致比较讲究,你们都需要分析一些“java实现最佳适应算法代码”的相关资讯。那么小编在网上搜集了一些对于“java实现最佳适应算法代码””的相关知识,希望我们能喜欢,小伙伴们快快来了解一下吧!

【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 可以实现什么样的功能呢?

OpenAI ChatGPT:与开发者进行多轮对话,进行代码生成、代码优化、解决代码问题等活动。

GitHub Copilot: 除了代码生成、解释、翻译等功能,还提供了 Brush 功能,允许用户通过 Prompt 扩展 Copilot 的功能,然后以类似“格式刷“的形式使用。

Cursor.so:目前接入了 GPT-4 的 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 编程的未来。我们相信未来CodeArts Snap之类的 AI 研发助手一定会成为像今天的 IDE 一样的必备工具,并且实现现有工具软件分析技术、语言模型相辅相成的效果

作者简介:

华为云 CodeArts Snap 工程师,华为云 PaaS 技术创新 Lab 代码智能技术专家,北京大学博士

标签: #java实现最佳适应算法代码