从GPT-3.5到GPT-5:程序员与AI协作的真相与应对之道

发布时间:2026/9/13 12:36:45
从GPT-3.5到GPT-5:程序员与AI协作的真相与应对之道 最近开发群里的风向又变了前一阵还在聊“ChatGPT 能不能帮我写单元测试”这几天已经变成“GPT-5 都来了咱们程序员是不是真该考虑转行”。作为一个从 GPT-3.5 时代就开始把模型塞进日常工作流的开发者我其实挺理解这种焦虑的。每隔几个月模型就“进化”一次每次都能看到它把原本属于我们的活干得更好。但焦虑归焦虑手里的活儿还得干。这篇文章我想直接聊聊从 GPT-3.5 到 GPT-5 我一路实测下来的真实变化也把 ChatGPT 和程序员之间“协作 or 取代”这个问题掰开揉碎讲清楚。不管你是刚入行的新人还是写了好几年业务代码的老手这篇文章应该都能给你一个相对清醒的判断。1. 从 GPT-3.5 到 GPT-5能力到底变了多少1.1 初次接触 GPT-3.5新鲜感大于实用性2022 年底 GPT-3.5 刚开放那会儿我和大多数人一样第一反应是拿它写点“花活”——让它写首诗、编个笑话、总结一段新闻。但作为一个程序员我很快就把注意力转向了编码场景。当时最直观的感受是它确实能写代码而且写得“像模像样”。比如我让它写一个 Python 装饰器用来统计函数执行耗时。它能很快给出一个比较标准的实现包含functools.wraps、时间计算、异常处理代码风格甚至比团队里某些新同事还规范。但一旦进入真实业务场景问题就出来了上下文稍微长一点它就开始忘事儿。我前一句话刚说“这个接口要兼容旧版本不能改方法签名”后一句话让它“帮忙优化一下入参”它就可能把签名改得面目全非。再比如让它生成一个稍微复杂的 SQL它给出的语句在逻辑上说得通但放到真实库上跑一遍不是索引没走就是没考虑 null 值。那时候我给它总结了一个评价能力像刚毕业的实习生骨架搭得不错但细节经不起推敲。你用它可以减少“从零开始打字”的时间但指望它直接交付一段能上生产的代码还不够成熟。当时团队里也有同事试过让它生成正则表达式结果被坑了一次之后就再也不敢用了。不过 GPT-3.5 有一个价值被很多人低估了就是“降低启动成本”。遇到一个不熟悉的库写一个从来没有用过的 API以前要一个个翻文档现在可以先用它生成一个大概能跑的示例再拿示例去对照文档和报错信息。这个过程很像是“先画草图再精修”效率提升是实打实的。1.2 GPT-4 带来的质变从“能写”到“能改”GPT-4 发布的时候我原本以为只是参数变大、回答更流畅但真正用下来才发现它在编程场景下的能力跨越比我想象中大得多。最明显的变化是“遵循约束的能力”。同样给我那个装饰器需求如果提前把项目里的代码规范、异常处理策略、日志格式一并告诉它它给出的代码基本能直接合入项目只需要做很少的调整。这种“约束遵循”的能力对代码生成来说太关键了。因为真实项目里的代码难点往往不在于“算法”而在于“在几十个约束条件之间找到一个平衡解”。多模态能力也是从 GPT-4 开始真正进入实用阶段的。以前排查前端布局问题我得把浏览器截图、HTML 代码、CSS 样式文字描述一大段它还是一头雾水。现在直接把截图丢给它它能看到“按钮错位”“间距不对”“字体没加载”这些视觉信息。我自己最常用的是把报错截图扔给它它会结合截图里的错误信息、代码上下文给出排查方向这在以前是想都不敢想的。但 GPT-4 也不是万能的。它依然会产生“幻觉”尤其擅长一本正经地编造不存在的函数名和库。我给一个嵌入式项目做交叉编译配置时它引用了一个看起来很像 Linux 工具链里存在的命令但实际上那个版本的 toolchain 根本没有这个参数结果编译直接挂了。所以从 4 开始我养成了一个习惯AI 给出的任何“冷门知识”都要去官方文档验证一遍。1.3 GPT-4.5 与 GPT-5 的方向从“知识库”到“思维链”到了 GPT-4.5 和传闻中的 GPT-5我感受到的变化不再是“它懂更多知识”而是“它更愿意在回答之前多想几步”。之前用 GPT-3.5/4 问问题它的回答是“即问即答”你问一句它答一句更像一个知识渊博但有点急躁的同事。而新的模型包括 OpenAI 的 o 系列开始引入“推理时计算”的概念模型在生成最终答案之前会先在内部生成一段推理过程对问题做逐步拆解。简单说它变“慢”了但变“稳”了。在实际开发里这种“慢思考”特别适合用来排查复杂问题。比如一次线上偶发的高并发超时问题如果直接问“为什么接口超时”老模型通常会给出“可能是数据库连接池满了”这种泛泛的答案。而新一代模型会先列出导致超时的所有可能方向网络层、应用线程池、数据库锁、GC 停顿、外部依赖然后逐一给出排查建议和验证方法最后结合你提供的监控截图和日志片段给出一个概率最高的根因排序。这个过程很像一个经验丰富的人在“过脑子”。所以我现在的判断是GPT-5 这一代模型的核心竞争力正在从“知道什么”转向“怎么想”。对程序员来说这比记住更多 API 重要得多因为后者已经被搜索引擎和文档代替了前者才是真正的经验壁垒。2. 模型演进背后的底层逻辑为什么它越来越像“同事”2.1 参数、数据与对齐三个“看得见”的变量很多人把 GPT 的进化简单理解成“参数变多所以更聪明”这其实只说对了一部分。参数规模确实很重要它决定了模型能“装下”多少知识和模式。但真正让模型从“会聊天的数据库”变成“会干活的助手”靠的是后面两步训练数据的质量和人类反馈对齐。把模型想象成一个读书破万卷的人预训练阶段它读了互联网上的海量文本学到了语言的统计规律和大量知识。但这个时候它只是“知道得多”并不知道哪些回答是用户喜欢的、哪些是错误甚至有害的。人类反馈对齐RLHF 以及后来的各种对齐方法做的事情就像导师在一份考卷上批改哪句回答靠谱、哪句在胡说八道、哪个细节需要补充。经过这样的“纠偏”模型才越来越像一个真正理解用户意图的对话者。这里的“理解”要打引号。模型本质上是根据上下文预测下一个 token它并没有真正的意识。但它通过海量数据学到的模式已经足以让它在一段代码、一段报错、一段需求描述面前给出一个在统计意义上“最像正确回答”的输出。这个机制决定了它永远不会 100% 正确但会越来越“擅长表现得正确”所以我们更需要批判性地去用。2.2 上下文窗口与注意力记忆超强的“金鱼”GPT-3.5 时代上下文窗口只有 4K 左右稍微长一点的代码文件就塞不进去。后来 GPT-4 达到了 8K、32K再往后一些模型支持 128K 甚至 1M。看起来是“记忆容量”突飞猛进但实际使用中依然有坑把 10 万行代码全部塞进去模型并不会对所有内容一视同仁。注意力机制决定了它会对某些片段格外“上心”而对另一些片段视而不见。这就像一个记忆力超强但是有选择性注意的人你以为它记住了所有细节其实它只关注了和你提问最相关的部分。所以我在真实项目中很少把整个仓库喂给模型。更有效的做法是先把仓库结构、核心模块职责、关键接口定义整理成一个精简的上下文再让模型针对某一个模块做修改。这就像给新人做入职培训你不可能让他第一天就记住所有代码但给他一份接口文档和模块说明他就能开始干活了。2.3 多模态与工具调用模型开始“动手”了如果说 GPT-3.5 到 GPT-4 是“脑子变好使了”那从 GPT-4 开始加入的“工具调用”Function Calling就是“开始长手了”。这意味着模型不再局限于输出文字它可以输出一个结构化的调用指令由外部程序去执行搜索、查数据库、计算、写文件等操作然后把执行结果再反馈给它。这个机制听起来简单但它是智能体Agent能跑起来的基础。想象一下你让模型“帮我查一下这个线上接口最近一小时的错误日志分析一下原因”。老模型只能回答“把日志贴给我看看”而有工具调用能力的模型则可以先调用日志查询接口、拿到数据、做统计分析、再给出结论。整个过程有多个步骤每一步的结果都可能影响下一步的动作这就是 Agent 工作流的基本形态。到了 GPT-5 这一代模型内部的“任务规划”能力正在变强。它不再只是“生成下一步动作”而是会在心里推演一个多分支的计划如果方案 A 失败就尝试方案 B同时判断需要哪些信息来验证结果。这已经很接近一个初级开发者的工作方式了。3. 我用 ChatGPT 重构开发工作流的真实记录3.1 需求拆解和架构设计能帮上忙但你需要会“追问”我接到的很多活表面上是一个“开发任务”实际上是一个“翻译任务”——把产品经理的模糊表述翻译成技术方案。以前这个翻译过程全靠自己脑补现在我会让 ChatGPT 先帮我做一版粗方案。举个例子最近要做一个短链接服务。我不会直接说“帮我设计一个短链接系统”而是给出更具体的背景预计日活、生成频率、跳转延迟要求、是否需要统计点击、团队使用的技术栈、现有基础设施。ChatGPT 会输出一张结构图式的方案包括发号器、缓存层、数据库分表、重定向状态码、过期策略等。但这时候我要特别强调它给出的只是“标准答案”不是“你的答案”。比如它可能默认用数据库自增 ID但我们已有的订单号生成服务用的是 Snowflake那短链发号器是否也要统一它可能没考虑多租户隔离但我们的业务恰恰需要按客户维度做数据隔离。这些都是自己必须追问的。所以我的习惯是把 ChatGPT 当做一个“可以无限耐心讨论方案的同事”第一版方案只是草稿我会继续抛问题“如果 QPS 到 10 万怎么办”“如果某个地区网络延迟高怎么加 CDN”“如果数据库挂了有没有降级方案”每追问一次方案就贴近实际情况一分。整个过程下来架构设计的时间可能没有明显缩短但设计时考虑到的边界条件比过去更全面了。3.2 编码环节最适合交给 AI 的部分和最不该交给它的部分现在写 CRUD 接口我的流程已经变成先定义好数据模型和接口协议然后把这段协议和项目现有的代码风格一起发给 ChatGPT让它生成 Service 和 Controller 层的样板代码。一个简单的用户管理模块从写代码到能跑通接口大概能省一半时间。它生产的代码在格式上、命名上、基本异常处理上都很规范我只需要做代码审查和补一些业务校验。但是涉及核心业务逻辑的时候我强烈不建议直接把决策权交给 AI。原因很简单业务规则往往没有写在任何文档里而是散落在历史代码、产品经理的大脑和一堆 legacy 系统的行为中。比如一个订单状态机的流转什么条件下允许从“待支付”变成“已取消”什么条件下不允许这些约束 ChatGPT 不可能凭空知道。如果你把不完整的约束告诉它它会用自己的“常识”补全而补全的那部分很可能和真实业务不符。我的方法是把大任务拆成小任务每个小任务都可以独立验证。比如状态机拆成“状态枚举定义”“状态迁移校验方法”“迁移日志记录”三块分别让它实现然后自己负责最后的组装和业务校验。这样即使某一块生成的代码不符合预期也能快速定位和修改。下面给一个我常用的提示词模板供参考项目背景我们是 Java 8 Spring Boot 2 的微服务项目。 任务为订单模块新增一个“用户申请发票”的接口。 已有类OrderService提供 getOrderById、UserService提供 getCurrentUser。 业务规则只有状态为“已完成”的订单才能申请每个订单只能申请一次发票金额不能超过订单实付金额。 要求使用 Result 作为统一返回体异常使用 BizException写单元测试覆盖以上规则。 请先给出接口定义和数据模型再实现核心逻辑。这样写比“帮我写一个发票申请的接口”这种模糊需求生成的东西可用性高一个量级。3.3 代码审查、调试与重构被低估的高价值场景我花了很多时间说编码但其实 ChatGPT 在我工作流里价值最大的部分反而是代码审查和调试。以前审查同事的代码我得逐行读、在脑子里模拟数据流和异常路径。现在我会把一段代码原样贴给 ChatGPT让它“从代码审查的角度挑问题包括正确性、边界条件、并发安全、性能隐患、可读性”。它列出的问题里大约七成是靠谱的三成是过度设计或误判。但即便是误判也能帮我重新审视代码确认自己是正确的。这个过程中AI 相当于帮我扩大了“审查覆盖面”。调试就更明显了。遇到一个诡异的问题我原来的习惯是凭经验猜一个方向然后打日志验证往往要来回试好几次。现在的做法是把报错堆栈、相关代码、已有日志、最近改动记录一起丢给模型让它列出“最可能的原因”并给出验证步骤。有一次排查一个偶发的并发问题我怀疑是共享变量线程安全的问题但 ChatGPT 从代码里发现真正可疑的是数据库连接池的隔离级别设置。后来一查确实是配置在切换数据源时被覆盖了。这种跨模块的联想能力正是经验丰富的工程师最值钱的地方而它已经在被 AI 快速补上。4. “取代程序员”的焦虑和它背后的真实问题4.1 哪些岗位风险高哪些反而更安全先说大家最关心的结论短期内纯执行层面的编码工作确实面临最大冲击。岗位描述里写着“负责接口开发、bug 修复、脚本编写”这类工作并且业务逻辑相对简单、上下文清晰、不需要太多决策的岗位最容易被大模型替代。一些外包性质的 CRUD 开发、内部工具脚本、基础的数据处理任务已经在肉眼可见地减少。反而是那些看起来“也写代码”的岗位变得更重要了。比如系统架构师、技术负责人、SRE、行业解决方案专家。因为 AI 能生成代码但拿不稳“这个代码该不该写”“这个方案是否符合当前公司的技术现状”“这个性能瓶颈是否会影响下个月的业务活动”。这些判断需要大量上下文而这些上下文往往不在代码库里也不在训练数据里。我观察到一个很有意思的现象团队里最能利用 AI 提效的不是那些编程基础最差的人反而是那些基本功最扎实、对业务理解最深的人。新手拿到 AI 生成的代码不知道哪里可能出问题老手拿到 AI 代码能立刻看出“这个嵌套事务在特定场景下会失效”“这里用了乐观锁但重试策略没写”。所以说AI 大概率会扩大“强手”和“弱手”之间的差距而不是拉平。4.2 从“写代码的人”到“审代码的人”“取代”这个说法其实是个伪命题。更准确的描述是程序员的日常工作重心正在从“写代码”转向“审代码、定架构、控质量、追问题”。以前写一千行代码要花一整天现在可能两个小时生成完但你要花三个小时去审查、测试、修正 AI 的遗漏。这听起来好像没省多少时间但需要注意的是你省掉的是重复机械的“打字组装”增加的是更有价值的“决策判断”。我自己现在的状态就是ChatGPT 是我的第一批代码审查者我是第二道CI 是第三道团队里经验更丰富的人才是第四道。每一道关卡依旧存在但 AI 成了最便宜、响应最快的一环。这个模式带来的最大变化是一个人能维护的代码量变大了一个人能推动的业务范围也变大了。有一个很直观的数据以前我一个人大概能维护两到三个中型的服务现在借助 AI这个数字变成了四到五个。不是因为 AI 直接把代码写完了而是因为 AI 帮我节省了大量“查文档”“写重复代码”“排查低级错误”的时间让我能把精力集中在真正需要判断的事情上。4.3 团队协作的新分工与流程调整程序员和 AI 的协作不能停留在“个人随手用用”的层面更好的做法是把 AI 纳入团队流程。我们团队现在有几个变化第一代码审查的 checklist 里加入了“AI 可能出现的幻觉点”。比如禁止直接合并 AI 生成的“看起来正确但没人验证过”的冷门 API 调用。第二需求文档里强制加入“给 AI 的上下文说明”包括业务背景、技术栈、约束条件、验收标准。这样在任务拆分时AI 就能更早地参与生成初步方案而不是等代码写完了才发现理解偏了。第三对于高频的、模式化的开发任务我们沉淀了一套内部提示词模板和工具脚本相当于把人机协作的流程固化成了团队资产。这个变化背后有一个理念AI 不是“替代某个人”的工具而是“放大整个团队能力”的工具。前提是团队里有人懂如何定义问题、如何验证结果、如何把 AI 的输出与真实业务风险隔离。这恰恰是程序员最擅长的能力——把复杂问题拆解成可验证的单元。5. 给还没“上车”的程序员几条实操建议5.1 把模型当“结对程序员”而不是搜索引擎如果你现在还在用 ChatGPT 的方式是“遇到问题搜一下复制答案就走”那确实很难感受到它带来的质变。搜索引擎的使用逻辑是“找到信息”但 ChatGPT 这类大模型的使用逻辑应该是“一起干活”。所谓“一起干活”就是你给它足够上下文它给你一个初步产出你再提出修改意见它继续迭代。这个过程很像结对编程里的“驾驶员-导航员”模式。你需要在每个环节都做出判断这里它写得不对、那里的约束没表达清楚、这个方案在性能上可能有问题。这种交互不是一次性的问答而是多轮次的协作。所以我的第一建议是把每一个需求都当成一次“和小组成员的沟通”来对待。你给它的信息越完整它的表现越接近“资深工程师”你只丢一句“帮我写个登录接口”得到的往往是“刚毕业的新人”的水平。5.2 核心竞争力该往哪几个方向打磨在 AI 能写出越来越像样的代码之后我觉得程序员真正应该打磨的是下面三件事一是“提出好问题的能力”。AI 的回答质量很大程度上取决于问题质量。能把一个模糊的业务需求拆解成“输入、输出、约束、异常路径、验收标准”这个能力的价值只会越来越高。二是“判断与决策能力”。AI 会给你多种候选方案你能否判断哪个更适合当前的业务阶段能否预见到某个方案在两个版本之后会成为技术债这些判断来自真实的系统设计经验和业务理解是模型难以替代的。三是“快速学习与验证能力”。新技术层出不穷AI 可以帮你生成任何语言、任何框架的示例代码但你需要能看懂这些代码、知道如何改造成符合项目现状的东西并且能用自己的话复述。保持手写能力的意义不在于“不依赖 AI”而在于“即使 AI 给出了错误答案你也能发现并修正”。5.3 一个可落地的学习路径和工具清单如果你现在刚刚开始接触我建议按这个路径走先熟练使用主流 AI 对话工具把“写代码、改 bug、解释代码、写测试”这四类任务各跑 10 遍总结一套适合自己的提示词模板。学习结构化输出比如让 AI 输出 JSON、Markdown、代码文件并尝试用脚本调用这些输出这会为你后面搭 Agent 做铺垫。尝试用代码解释器或类似工具把数据分析和脚本生成任务交给 AI感受“它会自己跑代码”的工作方式。在有经验的同事指导下把 AI 生成的代码合入一个非核心项目经历一次完整的“生成-审查-测试-发布-观察”过程。工具方面我目前常用的组合是ChatGPT 作为通用对话和方案讨论GitHub Copilot 作为 IDE 里的实时补全一些支持自定义 API 的代码生成工具用来批量处理重复任务。不建议一上来就追求最强工具更重要的是先把“人机协作”的思维习惯建立起来。另外还有一个小建议一定要在某一个垂直领域里积累自己的深度知识。算法题、八股文的价值会随着 AI 普及而下降但“你在某个行业里踩过的坑、沉淀的解决方案、对业务和技术的连接能力”这些才是真正的护城河。我自己的切身体会是现在写代码的速度已经很难跟 GPT 拼了但那又怎么样呢真正懂技术的人从来不是打字快的人而是在一堆似是而非的备选方案里能一眼认出哪个能上线、哪个会翻车的人。ChatGPT 把“写代码”的门槛拉低了但它让人更清晰地看到这个行业的终极岗位是那个能拍板的人。你带过一个新人就会明白团队里真正稀缺的从来不是手速而是判断力。