NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何利用 AIGC 自动化编程提高研发效率?

  • 2023-07-29
    北京
  • 本文字数:3562 字

    阅读完需:约 12 分钟

如何利用AIGC自动化编程提高研发效率?

前言

 

下面是一段利用 Co-Pilot 辅助开发的小视频,这是 Apache SeaTunnel 开发者日常开发流程中的一小部分。如果你还没有用过 Co-Pilot、ChatGPT 或者私有化大模型帮助你辅助开发的话,未来的 5 年,你可能很快就要被行业所淘汰。因为这些善于使用 AIGC 辅助编程的人可以 10 倍于你的速度开发相应的代码,而你没有这个技能。我并不是危言耸听,读完此文,我相信你对 AIGC 研发提升研发效率会有全新的认知。

 

00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    大模型颠覆传统初级程序员的培训和辅导过程,让技术和经验“平权”

     

    过去,初级程序员入职学习编程时,往往是师傅给一个任务需求,教大体的思路,然后在初级程序员写出代码工作当中培训和纠正,针对不同的命题告诉不同的方案,直到初级程序员把这些经验学会。

     

    但大模型的到来把这个过程完全改变了。大模型自己具有广泛的知识,而且有一些基础的推理能力,它可以经历无数次的实践,学习公司里各种各样的代码和业务定义,它所遇到的场景要比师傅当年要遇到的场景多得多,同时它会根据开发者的需求和目标给出可能的答案。

     

    这个过程就像我们多了一个无所不能的“师傅”,随叫随到还可以给你直接写出可能的代码,让你参考学习,让一个初级的程序员快速具有“师傅”写代码的能力。经过自己的学习和调整,就可以提交出一个远超你自己个人水平的代码,让别人 Review。

     

    那么,我们有什么理由不使用大模型来提高自己的研发效率呢?


    如何使用大模型辅助编程?

     

    目前常见的工具有 ChatGPT、Co-Pilot、私有化大模型等等,在不同场景下要用不同的方法来编写程序:



    可以看到,人类其实最适合就是做比较有挑战和创新的架构类产品,或者是某个新业务场景的代码,如果中间有复用的部分或者类似的算法,可以使用 Co-Pilot 快速提升效率;ChatGPT 可以用于类似场景的代码来自动生成,稍微修改就可以使用;私有化大模型更适合对数据和代码安全有要求,而又需要大模型比较了解你的业务知识的场景,私有化大模型是需要 FineTune 的。

     

    可能有人会说,私有化大模型普通公司玩不起的!其实这是一个误解,如果你要原生训练一个原生私有化大模型,估计中国能玩得起的公司不超过 5 个,而大多数公司不需要训练大模型,只需要根据开源大模型优化(Finetune)大模型就可以让大模型理解自己的业务了,而这个代价就是 1-2 张 3090/4090 的显卡就可以了,整个的实行过程可能也只需要 2~3 个小时的配置就可以(感兴趣的话可以参考下面这篇文章:《用一杯星巴克的钱,训练自己私有化的ChatGPT》,里面讲的利用是 Apache DolphinScheduler 和配置好的模板,拖拽就可以训练一个大模型的例子)。

     

    使用私有化大模型可以直接实现以下功能:

     

    • 软件众多功能中,直接找到你所需要的功能;

    • 众多复杂的使用手册和规则,找到你所需要的功能和说明;

    • 辅助编程,Txt2SQL,提高数据程序员的效率。

     

    使用私有化大模型来辅助编程,真的距离我们一点都不遥远。如果你还不太相信 AIGC 自动化编程时代已经来临了,那么下面这个开源项目如何利用 AIGC 提高研发效率的例子,或许可以帮助你可能更好理解。

    大模型自动化编程实例:Apache SeaTunel

     

    Apache SeaTunnel 愿景是“连接万源,同步如飞”,也就是可以连接市面上所有的数据源(包括数据库、SaaS、中间件、BinLog),而且同步效率要做的最高。这对于任何一家公司都是不可能做到的事情,而面对几千上万的 SaaS 软件和不断变化的接口,甚至人类也无法做到这一点,那么 Apache SeaTunnel 核心项目团队是怎么在这个 AI 时代设计这样一款开源软件呢?总体如下图所示:



    首先,计算核心引擎部分,属于专门为同步而生的计算引擎,它不同于 Flink、Spark,主要在同步复用内存、CPU、带宽和确保数据一致性上下功夫,所以大部分代码都没有可借鉴的,需要核心开发工程师直接编写、修正,以确保“同步如飞 ”。当然,因为是开源项目,核心引擎部分得到了众多大厂专家的修正和讨论,以确保时刻跟进全球最先进的技术。

     

    其次,数据库的核心 Connector,例如 Iceberg Connector,这些接口实现比较复杂,除了保证代码正确之外还要保证数据传输效率很高,这时候直接使用大模型是无法达到我们所需要的效果的。因此主力还是人,但可以复用自己和云端过去常用的代码来做,这时候使用 Co-Pilot 就是最佳方案,主导者是人,而大模型可以作为辅助来帮你补充常规算法和复用的代码,如开头视频所示的样子。

     

    面对浩如烟海的 SaaS 接口,例如 MarTech 领域的 SaaS 就超过 5000 个,靠人力对接接口是不可能的。SeaTunnel 核心团队就想了一个办法,根据多次尝试,把过去为人写的十几个接口进行抽象,不断和 ChatGPT 磨合,最终变成 2 个可以让 ChatGPT 理解并写出优雅代码的接口,然后利用 ChatGPT 可以读懂 SaaS 接口文档的特点,直接生成相关代码。这在 SeaTunnel 当中叫“AI Compatible”特性,兼容 AI。我理解这更是程序员和 AI 的一种“和解”,大家不要相互抢饭碗,程序员为 AI 做好准备,AI 来做程序员无法做到的事情。

     

    这个特性在 Apache SeaTunnel 2.3.1 里面已经发布了,当然作为众创的开源软件,该功能还有各种各样的缺陷有待提升。不过因为代码是完全开源的,我相信会有越来越多的爱好者把它打磨到更加自动化。比如,我已经听到有一个开发者要做一个 GPT Coder,监控 GitHub 上的 SaaS issue,自动化调用 ChatGPT,生成代码并提交 PR,让机器人和人类卷到极致。


    大模型自动化编程存在的问题

     

    虽然 ChatGPT、Co-Pilot 可以辅助编程,但它们也不是无敌的,目前大模型生成代码还有很多挑战:

     

    • 准确率问题;

    • 无法做 code review;

    • 无法实现自动化测试;

    • 无法担责。

     

    大模型依然会出错,这在未来一段时间是常态,哪怕是 ChatGPT4,写出来的代码也就 90%的正确率,所以要尽量简化它写代码的过程,否则可能会写出来完全不对的代码。大模型快速生成代码之后,人类的 code review 会跟不上,因为机器是无法确定最终代码实现业务逻辑是不是对的;而大模型做 code review 的话,你会发现每次都给你煞有其事地提出来不同的改进点,但其实都是无关痛痒部分,无法确定最终的逻辑正确性。

     

    同时,自动化测试案例和自动化测试也是当前大模型一个弱点,TestPilot 属于在学术圈比较活跃的内容,大家可以参考 Cornell 的《Large Language Models are Few-shot Testers: Exploring LLM-based General Bug Reproduction》和《Adaptive Test Generation Using a Large Language Model》都是一些比较有意思的文章,不过距离工程化使用都还有一定距离。

     

    当然,自动化编程还有最后也是最难得一关——责任问题,就像自动化驾驶一样,哪怕是做到 L5,如果出问题到底是谁的责任。就像 WhaleOps 实现了 Txt2SQL 之后,很多用户问,为什么不直接把 SQL 执行出来变成最终的结果给我,这才是业务部门最终需要的东西。

     

    我认为这是一个哲学问题,而不是一个技术问题了。不说现在 ChatGPT90%的准确率,假设将来大模型可以做到 99.9999%,你敢直接问一句话让它自动计算全公司的工资然后自动对接银行发工资么?如果出问题,你觉得是谁的问题呢?永远不能幻想用技术解决所有的业务问题,大模型也是如此。

    未来展望

     

    现在我们还处于大模型自动化编程的初期,很多小伙伴还在处于试用 Co-Pilot 和 ChatGPT 阶段,大多数程序员还没有用上私有化大模型来根据自己公司的业务提升编程效率,不过我认为未来的 3-5 年,自动化辅助编程一定会成为我们这一届开发者的标配工具:

     

    • 国产基础大模型拉进 ChatGPT 距离,易用性提高;

    • 开源大模型准确性、性能提升,更多的公司使用私有化大模型 ROI 提升;

    • 大模型自动化门槛减低,除了 DolphinScheduler,更多的大模型训练平民化工具诞生;

    • 技术管理者对于大模型自动化编程认知提升,技术管理流程适配大模型时代;

    • 在当前经济周期下,降本提效利用大模型提高效率势在必行。

     

    所以,未来几年,如果你在研发过程还是只会 CRUD,不会有效利用大模型将自己的经验和业务理解 X10 或者 X100 的话,那么不用等到 35 岁,你就会被会大模型编程的那批程序员所取代,他们 X10 之后,你就是那被淘汰的 9 个人。

     

    当然,虽然有点危言耸听,但是编程提效当中的大模型趋势是势不可挡的,我也只是在大模型自动化编程这方面不断实践摸索的小学生,我相信会有很多的技术管理者和架构师加入到大模型自动化编程的浪潮中来,不断迭代和优化在开发领域当中人和大模型之间的关系。最终,让程序员、AI、技术研发流程更有效的为业务服务。

    作者介绍

     

    郭炜,人称“郭大侠”,Apache Foundation Member,Apache DolphinScheduler PMC,Apache IPMC Member,ClickHouse 中国开源社区发起人和首席布道师。中国软件行业协会智能应用服务分会副主任委员,TGO 北京董事会会长,全球中小企业创业联合会副会长,人民大学大数据商业分析研究中心客座研究员。郭大侠一直致力于让“数据能力平民化”的事业上,本人参与多个开源项目,促进多个开源社区在中国的落地以及中国开源项目在全球的发展,被评为 Apache Foundation Member 和 2021 年中国开源最佳人物之一。

    公众号推荐:

    跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

    2023-07-29 10:005869

    评论 4 条评论

    发布
    用户头像
    文章说“如果你还没有用过大模型帮助你辅助开发的话,未来的 5 年,你可能很快就要被行业所淘汰”以及大模型能带来的x10、x100的提效,但是全文没有给在这方面具体的提效案例,给人感觉像是为了贩卖焦虑赚流量和推广SeaTunnel而写。希望在喊口号前能先给出严谨详实的实践案例。
    2023-08-03 13:21 · 福建
    回复
    确实,通篇看下来,简直是浪费时间,说的都是每个人都知道的内容,没一点干货
    2023-12-01 12:57 · 广东
    回复
    用户头像
    最重要的就是无法担责
    2023-08-02 14:12 · 上海
    回复
    用户头像
    文中提到“未来的 5 年,你可能很快就要被行业所淘汰”,我认为仅适用于一线城市的非体制内工作人员。即便是在今年,三线城市的纳税头部企业的云计算平台构建,还是存在较多的只是开个虚拟机的情况。我认为影响到非一线城市,还需要更长的时间。

    2023-08-01 10:57 · 山东
    回复
    没有更多了
    发现更多内容

    数据库批量插入这么讲究的么?

    秦怀杂货店

    Java 数据库 批量插入

    Kafka原理——Kafka为何如此之快?

    Kafka中文社区

    编写Spring MVC控制器的技巧

    编程江湖

    Spring MVC

    大数据开发之Hive SQL的优化分享

    @零度

    大数据 Hive SQL

    作业4

    施正威

    nodejs 异步I/O和事件驱动

    编程江湖

    nodejs

    ReactNative进阶(一):ReactNative 学习资料汇总

    No Silver Bullet

    React Native 1月月更

    什么是Log4Shell?Log4j漏洞解读

    龙智—DevSecOps解决方案

    log4j Log4j 2 Log4Shell

    今天你的静态变量和静态代码块执行了吗?

    华为云开发者联盟

    Java 类加载 静态 静态变量 静态代码块

    前端开发Vue中的v-指令的使用

    @零度

    Vue 前端开发

    Hive on Spark和Spark sql on Hive,你能分的清楚么

    华为云开发者联盟

    sql 分布式计算 Sparksql hive on spark 数据源

    一文整理区块链技术为企业带来的九大好处

    CECBC

    Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据

    万俊峰Kevin

    微服务 stream go-zero Go 语言

    面试官:为什么不同返回类型不算方法重载?

    王磊

    netty系列之:选byte还是选message?这是一个问题

    程序那些事

    Java Netty 程序那些事 UDT 1月月更

    【Golang】浅谈协程并发竞争资源问题

    恒生LIGHT云社区

    golang 后端 协程 并发 Go 语言

    10个问题让你快速避开java中的jdbc常见坑

    华为云开发者联盟

    Java 数据库 JDBC fetchSize Prepared Statement

    测试阻碍交付,如何破解这一难题?

    SoFlu软件机器人

    书单 | 学习数据可视化?看这些书就够了!

    博文视点Broadview

    【量化】量化交易入门系列3:经典的量化交易策略(中)

    恒生LIGHT云社区

    量化投资 量化交易 量化

    带你认识7种云化测试武器

    华为云开发者联盟

    测试 接口测试 华为云DevCloud 云化测试 Mock 服务

    科技驱动经济发展的时代全面到来

    CECBC

    架构营模块八作业

    GTiger

    架构实战营

    Flink类型系统的根及相关接口

    编程江湖

    flink

    Java开发之测试框架知识分享

    @零度

    Java

    EMQ 映云科技入围 Venture50 行业榜单,数字科技企业风向标!

    EMQ映云科技

    物联网 Venture50

    SphereEx 完成近千万美元 Pre-A 轮融资,加速构建新一代数据库生态引擎

    SphereEx

    开源 融资 ShardingSphere SphereEx 嘉御资本

    潘娟:Keep open,Stay tuned 开源为我打开的全新世界 | TiDB Hackathon 2021 评委访谈

    PingCAP

    网络安全好学吗?基础入门篇,NMAP高级使用技巧和漏洞扫描发现

    学神来啦

    网络安全 渗透测试 kali基础 nmap kali Linux

    「自我检验」熬夜总结50个Vue知识点,全都会你就是神!!!

    Sunshine_Lin

    面试 Vue 前端 进阶 ES6

    一文了解区块链如何帮助打击虚假信息

    CECBC

    如何利用AIGC自动化编程提高研发效率?_生成式 AI_郭炜_InfoQ精选文章