加载中

“AI+代码”是暂存的假象还是前途无量?

甲子光年 2024/11/14 07:21

Cursor爆火,不仅拿下OpenAI参与的6000万美元的A轮融资,甚至Cloudflare开发者关系副总裁 Ricky Robinett 分享的Cursor视频快速收到百万级观看——他八岁的女儿仅用45分钟就使用Cursor AI构建了一个聊天机器人。

GitHub Universe大会上,GitHub则直接官宣:Copilot可以支持多模型,包括Anthropic的Claude 3.5 Sonnet、谷歌的Gemini 1.5 Pro、OpenAI的o1-preview和o1-mini。

Google CEO Pichai在第三季度财报电话会议中特别提到Google内部超过25%的新代码是由AI生成的,非常认可AI生成的代码对于内部开发工作的作用。

可以说在AIGC应用快速发展的2024年,“AI生成代码”受到了前所未有的关注。

一方面,大语言模型的代码生成能力逐步提高,生成的效率和质量双重提升,大量工具得以上线供全球开发者使用;另一方面,“人人都会编程”的技能点说不定可以通过AI点亮,即便是暂时的假象,也可以是村里的希望。

而现实也很割裂,一方面,从ChatGPT的发布开始,大量看似“魔法”的代码生成宣发材料层出不穷;而另一方面,具有赚钱能力的开发工作似乎和零基础人群的距离依旧遥远。

1.为什么大模型之后,“AI+代码”的概念再次火热起来?

通俗解释:AI能看懂更多代码,会写更靠谱的代码,未来可能会自己写代码。

自从编程开始出现,程序员就不断寻找一种解决方案可以让“写代码”简单点,机器辅助人类写代码一直就不是新概念。开发工具的解决方案一般有两个大的方向:

1. 让机器当辅助,进行代码的补全和修改、写注释、写日志等等,主要是针对开发工作,但大模型之前,受限于技术,机器辅助编程效率远远不如程序员。

2. 抛弃代码,拥抱“拖拉拽”,最大程度的降低代码量,最好通过图形化编程方式实现开发,如无代码/低代码开发平台,虽然在一定程度上解决了问题(非IT人员可以具象化地描述IT逻辑),但是复杂业务(尤其是企业级开发)依然需要大量编程工作实现。

大模型的给“AI+代码” 带来的突破性在于强大的自然语言理解能力,毕竟编程语言也是语言。

所以大模型之后的“AI+代码”可以更理解程序员的需求和意图,自动生成符合规范或者采纳率更高的代码片段或完整功能模块,从而让创建广泛应用且实用的AI代码平台成为可能。

我们可以认为大模型技术改变了代码生成的效率和质量,包括但不限于以下几点:

提升代码生成效率

生成代码建议的速度比以往任何时候都要快,有望大幅提高整体工作效率。此外,大模型技术能够根据工程师的自然语言描述自动生成符合工业标准的代码,这种自动化过程极大地提高了代码生成的速度,使得从设计到生产的转换更加迅速和流畅。

提高代码质量

大模型技术在提升代码质量方面也发挥了重要作用。首先,大模型生成的代码具有良好的风格,变量命名规范,可读性高。它们在生成代码时会考虑到工业编程的最佳实践和标准,从而提高了代码的可靠性和可维护性。其次,大模型能够自动生成异常处理代码,使程序员能够专心于业务代码的编写,同时生成的错误提示和日志信息通常都非常完整,语句通顺。

减少错误和提高开发速度

大模型代码生成技术能够显著提高软件开发的效率,通过自动化重复性和标准化的编码任务,减少人为编码错误,提高开发速度。这对于需求快速变化的现代软件开发环境来说尤为重要。通过减少人工编程的时间和资源投入,企业能够显著降低研发成本,同时,研发团队可以将更多精力投入到创新和复杂问题的解决上,而不是花费在繁琐的代码编写上,从而整体提高了研发效率。

并且AI推动了开发者的编程习惯和开发方式发生转变,虽然工作重心依然在代码编写上,但与AI的互动逐渐增多,编程习惯和开发方式开始发生转变。未来,开发者可能开始从代码的具体实现转向更高层次的任务管理和决策。

2.AI代码工具是否就可以认为是“AI+代码”的全部?

软件开发工作给人们的印象往往就是写代码,但是开发工作不全是写代码,一个基于AI代码生成的开发平台是必要的。

狭义的AI代码平台往往指代的是核心产品的功能,也会被称为AI编程助手,主要指在代码开发过程中辅助编写代码的功能。

广义的AI代码平台除了核心的产品功能外包括企业级开发能力(和个人开发能力做对应,强调其系统性的开发能力),另外包括用户体验的设计,服务生态的建设,与算力、数据存储、环境部署的适配。

3.AI是否会完全替代程序员?

“AI+代码”最容易被宣传的点则是“AI替代程序员”,甚至可以是一种刻板现象的情绪宣泄,一曰AI替代,二曰程序员失业。

“所谓的替代程序员的工作”更客观的说法则是AI可以替代程序员在日常中的部分工作,AI代码的采纳率是可以作为AI代码能力的一种评价维度,但不是单一的评价维度,这更多是直观地表现了“AI的能力”。

例如针对Google CEO Pichai在第三季度财报电话会议中特别提到Google内部超过25%的新代码是由AI生成的说法,Google一线的开发人员则有更深的切身体会。

Google员工:

asdfman123(Google员工):“我在Google工作,刚结束一天的工作。我刚才写的内容可以算作是‘AI生成的代码’吧。 但实际上代码补全引擎只是在我写代码时,帮忙完成我正在输入的行。例如,当我输入‘function getAc…’时,它足够智能,可以补全为‘function getActionHandler()’,并可能建议正确的参数和适当的jsdoc注释……

……基本上,它是一个有帮助的生产力工具,但完全没有参与到工程开发中。可能和Copilot差不多,甚至稍微逊色一点(不过我最近没用过它)。”

NotAnOtter(Google前员工): “我的想法是:Google CEO Pichai 说法显然是在夸大现实,很可能把一些已经存在十多年的完全自动化的代码审查或合并请求(CL/PR)也算作‘AI生成’。 我之前提过,如果一个10人的团队和一个使用Copilot等工具的8人团队一样高效,那么从我的角度来看,说‘AI替代了2个工程师’是合理的。更重要的是,如果这是真的,技术领导者会这样宣称。Copilot及其类似工具已经存在了足够长的时间,证据已经存在,但没有人说‘我们用AI取代了X%的人力’。”

4.不替代程序员,那“AI+代码”改变了什么?

真正的开发者都理解:代码量越多,bug 也可能越多!

去看“AI+代码”能够带来的好处,应该放眼于对于开发模式的改变,而非简单的替代工作,从“工程效能”角度看待“AI+代码”带来的价值,让团队更多专注于创新,并且让更多非专业的IT人员可以参与到实际的需求理解和开发的过程中,实现开发及业务的融合。

一个AI代码平台可以让AI直接从需求描述开始,逐步生成代码层面的抽象表示。典型例子就是使用领域特定语言(DSL)来描述软件模块、组件、流程以及数据流。具体来说,当需求被准确描述后,AI可以生成相应的DSL描述,然后根据这些描述自动生成组件及其组合方式,从而形成完整的软件系统。因此,从代码生成到DSL描述,再到直接生成业务系统,AI在这方面的进步将使得技术门槛降低,使非技术人员也能更直观地参与到软件开发的过程中。

并且AI代码开发平台带来研发知识传递形态的改变,便于个人/企业软件开发工作知识资产的建立,传统上,企业内部的知识传递依赖于口头传授和新员工通过阅读代码注释、运维脚本以及故障排错来熟悉项目。然而,AI的介入使得知识传递变得更加系统化和自动化。企业可以通过将知识注入到大模型的知识库中,使得一线工作人员和管理者都能通过大模型进行问答和编码,从而使得整个DevOps流程更加顺滑。

这种模式不仅提高了知识传递的效率,还促进了新代码、新文档和新知识的生成,这些又可以回流到企业知识库中,形成正向循环,释放研发效能的红利。

AI技术还可以根据开发团队的日常代码、文档和问题记录生成知识库,帮助团队成员迅速找到解决方案,提升工作效率。这种基于AI的知识管理方式,使得知识资产的建立和维护变得更加智能化和自动化,从而提高了企业的知识管理能力。

5.国内那些企业可以提供“AI+代码”平台或者服务?

“AI+代码”是火热概念,参与者类型也很丰富。企业均希望依据自身技术或行业know-how迅速切入市场,通过先手占据更好的生态占位;并且越来越多的企业正在进行产品打磨与场景探索。

可以分为以下几类:

1)AI模型*代码型:通用大模型能力强,并且本身一般是IT开发相关公司,内部具有大量使用场景,可以提供基于生成式AI的编程产品/插件;

2)业务*AI代码型:具备垂直领域的开发能力和开发经验,内部有经验丰富的开发体系,结合AI技术,实现AI代码的IT开发平台;

3)AI代码创业型:基于代码领域的垂类模型及产品能力的创业型公司,提供相应的AI代码平台服务;

4)代码社区型:基于社区代码的数据积累,具备高质量数据和开发者社区,提供相应的工具;

5)智能体*开发型:利用多智能体能力,提供代码开发服务;

6)低/无代码+AI型:在自身低无代码基础上进行AIGC技术的结合;

7)图形化编程语言(可包括IDE)+AI型:在图形化编程语言及开发平台及生态基础上进行AI技术的结合。

6.AI代码平台仅仅有AI生成代码就够了吗?

所有的AI层面的应用都会遇到一个问题,AI不可能解决所有的问题,AI技术短时间内往往感觉是过誉。

但是AI技术带给人的希望是,AI会给现有的方案提供一些“新思路”。

AI代码平台带来的新思路可以以RAG技术和Agent技术为例。

RAG对大型语言模型(LLM)输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。

RAG通过将用户数据整合进LLM已有的数据中来解决用户提问。是目前生成式AI应用中一种高效的改进思路,保证其输出结果在各种情境下都能尽可能体现其相关性、准确性和实用性——在AI代码生成的技术中,保证最大程度去提升代码生成的质量。

AI代码开发平台需要符合企业级的工程需求,以便减少程序员后期的修改和维护工作,其中AI代码辅助工具就需要包括上下文感知、企业规范集成、推理能力利用等多方面功能。

因此AI代码开发平台可以基于RAG技术及企业自身的高质量语料库,不断迭代优化,从而生成更加规范、合理的代码。同时,为了生成代码更加贴合具体工程的需要,可以通过工程感知的设计来实现这一目标。

AI代码开发平台对于Agent的使用,可以让开发团队采用更多AI参与的协作及自动化。

Agent(代理)一概念起源于哲学,描述了一种拥有欲望、信念、意图以及采取行动能力的实体。在人工智能领域,这一术语被赋予了一层新的含义:具有自主性、反应性、交互性等特征的智能“代理” 。

AI代码平台中AI Agent的核心逻辑:通过将经过特定训练的大模型作为“大脑”,利用其推理规划能力,并调用外部工具来完成复杂任务,从而优化代码开发过程。

7.AI时代,如何适应角色的变化?

AI时代给每个人都带来不安全感和野心,一方面担心AI太好,把自己替代;一方面担心AI不好,帮不上自己。

AI应当被视为一个工具,而不是仅仅讨论它是否可能替代某些职能或人员;而AI的设计会越来越贴近社会属性,具有更多交互性。在一段时间内,每个人都需要和AI相处,尤其是和一个会不断成长的AI相处。

AI的工具属性定位让AI代码平台的功能更专注于提高助手的性能和准确性,确保其能够可靠地完成编程任务。

AI的社会属性设计让AI代码开发平台可以更能理解编码意图、提供个性化的建议,甚至在某种程度上模拟人类的交流方式。

而未来的开发者会有更多时间关注业务,理解业务,把体力活交给“AI”,而“体力活”的退潮之后才知道,谁具备在实际的业务中掌握理解需求和实践需求的能力。

文章来源:甲子光年

微信
朋友圈

这么好看,分享一下?

朋友圈 分享

APP内打开

+1
+1
微信好友 朋友圈 新浪微博 QQ空间
关闭