写点什么

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

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

    阅读完需:约 12 分钟

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

前言

 

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

 

00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 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 年中国开源最佳人物之一。

    2023-07-29 10:007235

    评论 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 · 山东
    回复
    没有更多了
    发现更多内容

    盘点2020 | 百度AI的2020

    百度大脑

    盘点2020

    安装Android系统 missing operating system

    mengxn

    android

    Kubernetes安装篇(上):基于Minikube方式部署本地环境

    xcbeyond

    Kubernetes 安装 minikube 28天写作 Kubernetes从入门到精通

    给跨专业程序员的一些建议

    Ryan Zheng

    限量!阿里甩出878页性能优化笔记阿里甩出878页性能优化笔记!

    Java架构之路

    Java 程序员 架构 面试 编程语言

    我所认为的产品经理能力模型

    day day up

    2020中国ToB独角兽:估值逆势起飞,寡头效应加剧

    ToB行业头条

    【有奖调研】中国人工智能开发者调研

    百度大脑

    《我想进大厂》之分布式事务篇

    艾小仙

    Java 面试 后端

    dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例

    阿里巴巴云原生

    Java 云原生 dubbo 中间件 dubbogo

    案例集锦|科技赋能,华为云GaussDB助千行百业数字化转型

    华为云开发者联盟

    数据库 华为云 企业应用

    阿里架构师经验分享!Android面试知识点总结宝典助你通关!顺利通过阿里Android岗面试

    欢喜学安卓

    android 程序员 面试 移动开发

    有内味了!阿里内部Tomcat高阶调优笔记成功刷新了我的认知

    Java架构之路

    Java 程序员 架构 面试 编程语言

    阿里架构师深入讲解Android开发!教你一种更清晰的Android架构!BAT大厂面试总结

    欢喜学安卓

    android 程序员 面试 移动开发

    怎么提升写代码的能力

    阿里巴巴云原生

    程序员 个人成长 方法论 云原生 自我思考

    基于gRPC的注册发现与负载均衡的原理和实战

    万俊峰Kevin

    微服务 go-zero Go 语言

    架构师 3 期 3 班 -week8- 作业

    zbest

    作业 week8

    热情空前,家长纷纷变身“寒假规划师”,如何抓住这波热潮?

    ZEGO即构

    AI 在线教育 在线课堂

    WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba

    阿里云CloudImagine

    阿里云 WebRTC 视频云

    iOS音视频--视频合集

    程序员 音视频 OpenGL ES GPUImage Metal

    SpringCloud 从入门到精通 12---Nacos配置中心

    Felix

    限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务

    996小迁

    Java 架构 面试 springboot SpringCloud

    使用Apollo升级一下yml文件管理和发布

    Sky彬

    springboo

    是找茬?还是装B?阿里面试每轮必问的“Spring Boot”意义何在?

    比伯

    Java 编程 架构 面试 计算机

    新年Flag 中奖名单公布|如何科学的从55人中随机选出11个中奖名额

    InfoQ写作社区官方

    话题讨论 热门活动

    阿里巴巴2021年最新开源十亿级Java高并发系统设计手册

    Java架构追梦

    Java 阿里巴巴 架构 并发 系统架构设计手册

    云原生 DevOps 的 5 步升级路径

    阿里巴巴云原生

    Serverless 容器 DevOps 微服务 云原生

    架构师训练营第八周作业

    zamkai

    惊喜来袭!253页全彩免费电子书《Python 编程参考》正式上线发布

    穿甲兵

    Python redis 程序设计 Go 语言

    COCO聊天挖矿系统开发|COCO聊天挖矿软件APP开发

    系统开发

    从根上理解高性能、高并发(五):深入操作系统,理解高并发中的协程

    JackJiang

    网络编程 高并发 协程 高性能 即时通讯

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