如今,随着大模型在编程、代码生成、自动化测试等领域展现出越来越强大的能力,一个引人深思的问题浮现出来:大模型会不会最终取代程序员的工作?
有些人认为,世界上本就没有哪项工作是绝对安全的,机器取代人工本就是迟早的事。从 GitHub Copilot、ChatGPT 到国产的通义灵码,各类替代工具纷纷涌现。AI 会做得越来越多,人类做得越来越少。百度 CEO 李彦宏就曾说过,基本上以后不会存在“程序员”这种职业了,因为只要会说话,人人都会具备程序员的能力。
但另一些人,则持不同的观点。他们认为:“低端程序员会消失,有创造力的程序员会做大”,“编程仍是基础,是必须要学的,程序都看不懂,再有创造力也没用”。360 CEO 周鸿祎就觉得,程序员热十年内不会减弱。尽管未来人人都会用电脑,所谓人人都是程序员,但不同的人用电脑创造的产品完全不一样,AI 时代更需要计算机专家和程序员,他们可能是各行各业最有发言权的。
那么,真实的情况是怎样的?大模型技术到底能取代哪些工作,又会如何影响程序员的职业生涯?作为普通程序员,应该如何适应变化?
第12期【开源漫谈】,我们邀请到了科大讯飞 AI 工程院智能体研究负责人杨彦波、PingCAP AI Lab 团队数据科学家孙逸神、Infra 工程师马工,一起来探讨一下,大模型的发展,究竟会如何塑造未来的技术职场?
分享嘉宾:
杨彦波
科大讯飞 AI 工程院智能体研究负责人,高级研发工程师,热爱开源,负责大模型模型微调平台(Maas)以及智能体相关技术研究。
孙逸神
PingCAP AI Lab Data Scientist.自 ChatGPT 震撼发布至今,聚焦 LLM 应用开发及 Multi-Agents 等应用方向的探索,开发了 TiDB Bot、LinguFlow 等应用,并参与 AutoGen 社区开发。
主持人:
马工
北欧 Infra 工程师,公众号《瑞典马工》主理人。《开源漫谈》常驻嘉宾。
01 现在的大模型发展到哪一步了?能替代哪些工作?
马工:目前,大模型发展到什么程度了?对程序员的替代到了哪一步?有哪些产品是已经做得不错的了?各位能讲一讲吗?
杨彦波:今天我们讲的话题是大模型会不会取代程序员,那我们首先看下程序员的定义哦。维基百科上说,程序员一开始,指的就是单纯的软件开发者,但很显然,在今天,程序员已经不单单指软件开发者了,所做的工作也不再局限于写代码。像写脚本、软件测试这种工作,在今天就有可能会被逐步取代。现在的话,像翻译、文档整理、数据标注这些,在一些简单的场景,大模型配合一些 agent 的框架已经做得比较好了,这种场景下的职位,相对来说就比较容易被大模型替代掉。
孙逸神:ChatGPT 面世的时候,确实很惊艳,对以往的一些 AI 应用确实是降维打击。不过,经过大家的体验,大家会发现,它确实存在亮点,但也还有很多弊端。而对于一个程序员来说,真正需要用在生产上面的话,我肯定不是看它的天花板在哪里,而是要看它的平均水平,或者说它的底线在哪里,因为这才是保障你服务质量的重点。
那现在看下来的话,它在文字领域也只能做一些比较初级的东西。比如说它比较擅长总结,比较擅长做阅读理解,但是要真的让它去做一个很高级的文本关系,它又没那么擅长,或者说它的准确率没那么高。
放到程序员这个领域来看,其实也是类似的。一些基础的活,它是能做的。但是高级的活,理论上它是不具备所谓的逻辑推理能力的。为什么它看起来有逻辑推理能力,是因为我们大部分情况下逻辑是蕴含在语言之中的,那它在学习语言的过程当中,只要学习的文本足够好,它就自然会蕴含一些逻辑在里面,但是它本身其实并不理解这个东西。你要是真让它开发一个很复杂的东西,或者一个很新的东西,那它基本上是做不了的。
马工:是的,Copilot 给我提供了一些代码,很好用,很方便,但是你还是得自己看一遍,不然放进去就是个灾难。但是如果老板把我开掉,那他就得自己去看 Copilot 代码,我相信他不如请我来看。
话又说回来,你说它不能做高级的东西,但是一个程序员的日常工作中,有多少是高级的东西?也许我们99%的工作都是不高级的东西。你怎么看?
杨彦波:大模型本身它是包含一些原子能力的,比如说基础的对话,还有它本身页面上的一些功能,等等。这些都是比较简单的使用方式,能让你体验大模型的效果。
更多的复杂任务,我们一般是利用大模型的 API,在客户端或者以编程的方式去做一些更高级的应用。我们现在所说的大模型,不仅仅是它自己的那个原子能力的发展,更多的、也是今年最火热的是编程范式,就是 agent 的一个范式。这一块也属于大模型发展的一部分。以后复杂的任务,可能更多会靠智能体这一块的概念去解决,这是我的观点。
马工:这个范式转移究竟是怎么一个转移?是说以后不需要程序员去写代码、测试、应用、然后部署到生产环境,还是……?
杨彦波:我举个例子。现实世界里,开发一个项目,往往有一个项目负责人,有项目经理,有开发测试,有运维部署,还有其他的各种角色,共同把这个项目做起来。大模型出来之后,我们可以用大模型去扮演这些角色,去实现它们在这个项目中的不同目标,共同完成一个项目。这就是大家最近在搞的智能体平台。实际上,作为编程这样一个比较特殊的环境,利用多个角色协同去编码,其实是非常有希望的。
02 未来还需要人类程序员吗?
马工:所以您的意思是,大模型不仅会取代程序员,还会把整个 IT 团队都给干掉,也就是说以后产品经理直接就跟 agent 打交道,不需要人了,不需要公司了,是这个意思吧?
杨彦波:我的观点可能比较激进,可能大概是这样,当然,取代了这些岗位以后,一定会诞生一些新的岗位。
马工:很恐怖的场景啊。
孙逸神:是这样子的,因为今天这个题目讨论的是最终会不会代替,做到最终这个事情上就很难说了,我们肯定得给它加个时间限制。
以我的经验来说的话,我做了挺多实验了,像彦波说的那样,让 agent 组成一个团队,这对解决问题流程是一个比较好的抽象。甚至我在这个层面上再加了一层抽象——就是本身任务怎么去做?因为任务会有相应的 SOP 来支撑这个任务怎么做,而不同的 SOP 都会有一整套的工作流程,我可以用这个 group 去组合各个不同的角色去做这个事情。
但这两层抽象我都做完了以后,它依然很难满足我实际生产上的工作需求。比如说我让它做一些数据分析类的工作,实际操作中因为你本身可能输入 token 数量就很多,然后在这个过程当中,它的上下文交流交互也很频繁,那这样的话,其实整个上下文可能超过 100K 以上。
在这种情况下,它最终能完成任务的概率其实还是挺小的。因为你每一个环节都存在它出错的可能性,最后就是一个乘法原理乘起来!那乘完了以后,它总的来说,成功率还是相当低的。
因为人家写论文的时候,他一定是会给你看它最棒的亮点!但是这个亮点如果重复100次,是不是里面有90%都是这个样子的,其实不好说。实际我最后用下来,如果上下文足够长,或者逻辑足够复杂的情况下,光靠一个 PM 去跟它沟通是挺难的。
PM 要具备审核所有生成代码的能力,那他其实不就已经相当于一个程序员?一个很复杂的项目我认为 PM 基本上没什么能力去审核,甚至他光看输入输出都不一定能对得上号。
马工:你提到的这个现象,会不会只是一个临时的现象,过两三年情况就大不一样了?比如说你刚才说的 100K 上下文,也许以后只有十兆上下文?又或者,当它复杂度上升的时候,工作不太顺畅了我再加一个程序员,就能解决问题。但是,相比于以前可能需要100个程序员,现在加1个就行,是不是也就相当于取代了99%的程序员了?
孙逸神:根据奥特曼的说法,chatGPT5 之后又是一个飞跃性的进展,所以这个还是挺难预测的。但是基于现在的 Transformer 模型,说白了还是比较倾向于一个马尔可夫决策过程,还是以概率为基础,根据之前的状态去预测下一个状态。如果这一点没有什么本质的改变,或者说人类对自己的认知科学也没有一个很完善的理解的话,至少这几年,取代程序员的情况是不会出现的。
现在,大家都在关注上下文增加之后,大模型的质量怎么样,关注如何拓展上下文的大小。但是到100K200K以上这个级别,它的准确率目前可能50%都不到。这种情况下,要突破,估计没有那么快。
今年上半年,我试过让 AutoGen 组成一个 group,让它能够按顺序去和人聊天,它都做不到。现在你说不光要让整个 group 的工作流程能够符合需求,还要让整个业务的 SOP 符合你的操作需求,整个步骤综合下来,至少我认为是很差的。
马工:这会不会是因为你们做分布式数据库的要求太高了呢?假如我就写个什么医疗信息管理系统,对程序员的要求很低,再把你那一套放到我这个医疗应用上,会不会效果就是可以接受的了?
孙逸神:一样的,我觉得对于不同领域来说,存在的问题是比较类似的。LLM 作为辅助肯定是 ok 的,但你让它真的去自动驾驶,这个肯定是不 ok 的。在程序员以外,还有一个比较重要的点,就是这个商业道德的问题,或者说商业责任的问题到底由谁来承担?
在医疗行业,大家都知道那个图像识别 CT 在这个领域用了很多,像看片子,其实 AI 都能给出一些结论,但是最终还是要医生来盖章签字。那落到程序员这边来说,也是一样的。PM 可以把这个任务交给一个 AI 去做,但最后还是要有一个人来签字画押。PM 来签这个字不太可能,最终还是要有一个程序员来签这个字,程序员还是要对这个结果做一个检查。不检查的话,那他签了字,老板就要背商业责任了。
马工:是个很有趣的点,大模型不能背锅。
03 什么样的岗位最危险?
杨彦波:自动驾驶的例子我不太赞同。事实上,现在很多城市已经试点了一些公交线路,像我们合肥就有一些试点无人公交,还有无人送快递,现实的例子已经 OK 了,只不过可能取代真正的人类还需要一段时间。不过,程序员这行也一样,它取代也是逐步的取代,先从一些简单的场景再到更复杂的场景逐步地去取代。
像我公司现在有一些工作,偏向简单重复的代码开发,我们之前都是招实习生来做,在大模型出来之后,我们已经探索出用一些依赖大模型的 agent 技术来取代这一类工作,极大降低了用人成本。
马工:你之前说的智能体是什么东西?跟 chatGPT 有什么区别?
杨彦波:智能体这个概念,在大模型没有出来之前就有了,它的英文名字叫 agent。Agent 中文叫代理人,意思就是你完成一件事情,可能不需要你亲自去干,但你需要一个工具,或者是要一个实体人去帮你干。现在,这个代理人就是 agent,它可能干的事情不仅仅是调大模型,它会有一些高阶的能力:它知道在这个事情的领域内,怎么跟大模型交互,怎么调用外部的一些工具。这就是智能体的概念。它本质上也是大模型,但它是在大模型之上,又封装了一些特定领域的任务规划,或者是一些知识,相当于它是更加贴近于我们的真实用户的。
马工:我这样理解:以前打电话给携程,需要告诉那个客服,让他帮我订票。现在这个客服可能改成了 LLM,对我来说,他就是智能体。
孙逸神:没错,你可以认为它就是一个控制器,或者说就是一个机器人。它主要做的事情,首先是接受一定的输入,能够去感知一个环境,然后通过这些输入的信息,自己做一定的决策,最后输出一些 action 去改变这个 environment。
04 被取代了该怎么办?
马工:我问一个问题,如果我们程序员真的被取代了,能有什么出路?彦波刚刚说了会有新的岗位产生,但是新的岗位是什么?我们应该怎么准备应对这一切?
杨彦波:我们最初发明 AI 是为了干啥?为了解放我们人类,提高我们的效率。那么,大模型一旦它的能力边界越来越大,能做的事情越来越多,那我们更需要关注的就是大模型给我们做的这些事情的质量,输出的东西是不是安全的,是不是符合伦理的,怎么控制大模型更好地输出?像大模型的内容安全这一块,一些新的岗位已经出来了。
还有一种岗位就是,怎么更高级地去使用大模型?像开发 agent,就是一种新的岗位:怎么去开发 agent,让大模型可以为小白所用?我觉得这种岗位会越来越多,而且每个领域它的 agent 可能都不一样,大家的开发方式也逐渐变化了。
马工:第一,普通程序员哪有能力去开发智能体?那我只能做那种智能体的小助手,审核一下它写的东西。也就是说,现在它是我的助手,但是过了若干年之后,我会变成它的助手。听起来不是很让我兴奋的旅程。
孙逸神:彦波刚刚提到了,大模型替代一些基础能力,是 ok 的。它其实还是你的助手,它在帮你干一些杂活,或者说价值不高、附加值很差的活。作为一个程序员来说,你也不可能完全的就干“接收一个 stc 的输入,然后输出一个程序”这么简单的事情。很多工作越往后,越可能往业务方向去走。那你在不同的领域,你可能还是需要在这个领域的知识里面去做很多的事情。
CS 这一块的话,系统架构也在不断的演进。只要是新的东西,都可以认为大模型是没有很强的能力的。因为它本质上来说,还是在总结既往已有的知识。在已有的知识前提下,它去创造,那它的创造力是很让人捉摸不定的。它也许偶尔灵光乍现能给你一些有用的信息,但是大部分情况下是没有的。
另外,它对物理定律的理解其实就是没有。如果去做一个极其复杂的 BI 场景,或者说我是一个开发 CAE 软件的人,如果连微积分都搞不定,AI 它也一样算不出来。我觉得,每个领域其实都有很多专业知识可以挖的。
马工:明白,如果我是个程序员,我要保证我的职业安全,我就应该让领导尽量用新的语言。每个语言出来了,我就赶紧用。LLM 它还没有读到足够的文本,它就用不了。哈哈。
更多直播内容,扫码看看回放吧↓↓↓
【开源漫谈】
OSCHINA 视频号畅聊栏目【开源漫谈】,每期一个技术话题,三五位专家围坐,各抒己见,畅聊开源。给大家带来最新的行业前沿、最热门的技术话题、最有趣的开源项目、最犀利的思想交锋。如果你手上也有新点子、好项目,想要跟同行交流分享,欢迎联系我们,讲坛随时开放~