尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从GPT-3.5到GPT-5:ChatGPT与程序员是协作还是取代?

从GPT-3.5到GPT-5:ChatGPT与程序员是协作还是取代? [ChatGPT] 从 GPT-3.5 到 GPT-5 的进化之路 | ChatGPT 和程序员 : 协作 or 取代现在聊 ChatGPT 和程序员的关系基本绕不开两个问题一是 GPT 模型到底进化到什么程度了二是程序员会不会被它干掉。我最早是从 GPT-3.5 一路用上来的那时候它还只是个“高级聊天机器人”写代码偶尔能给你整段能跑的但 debug 经常把自己绕进去。到了 GPT-4、GPT-4o再到现在大家口中常提到的 GPT-5 这一代它已经明显从“玩具”变成了“队友”。这篇文章我不打算给你复读官方文档而是站在一个天天拿它干活、用它在真实项目里踩坑的程序员视角把这条进化路径、协作边界、以及“取代焦虑”这件事拆开讲清楚。先说结论免得你带着悬念往下读短期内 ChatGPT 取代程序员是伪命题但“不会用 ChatGPT 的程序员被会用的人甩开”已经是真命题。关键是搞清楚它擅长什么、不擅长什么以及怎么把它接进你的工作流。1. GPT 模型演进从“能聊天”到“能干活”的三个关键分水岭1.1 GPT-3.5 时代它只是个“有常识的对话者”GPT-3.5 刚出现的时候最震撼的不是它多聪明而是它第一次让普通人觉得“AI 真的能和我正常说话”。它背后是 GPT-3 系列的大规模预训练加指令微调InstructGPT 那套 RLHF 路线让它具备了很强的自然语言理解能力。对程序员来说它能干的事情包括帮你解释一段陌生代码、写正则表达式、生成 SQL 查询、翻译技术文档。但它的上限非常明显。第一上下文窗口小早期只有 4K 左右聊着聊着就“失忆”你前面说过的需求它说忘就忘。第二代码生成长度有限让它写一个完整的类或模块还可以让它写一个完整的项目文件结构加业务逻辑它往往写到一半就开始自相矛盾。第三它的“推理”本质上是模式匹配不是真正的逻辑推演遇到稍微绕一点的业务规则就翻车。当时我拿它做过一个内部小工具让它生成 Python 脚本读取 Excel 并汇总数据。它写得挺快但边界条件处理得乱七八糟空单元格没判断、日期格式写死、文件路径硬编码。这种代码放到生产环境分分钟出事。所以那个阶段大家普遍的心态是AI 写代码图一乐可以真干活还得靠人。1.2 GPT-4 时代推理能力的质变GPT-4 的出现是一个真正的分水岭。它最核心的提升不只是参数规模而是推理链的长度和稳定性。你让它写一个带复杂业务判断的函数它开始学会“先分析需求再拆解步骤最后给代码”。这种思维链Chain-of-Thought能力让它在算法题、重构、代码审查这些任务上表现出了接近初级工程师的水平。我印象最深的是GPT-4 在 Code Review 场景下真的能干活。有次我让它审查一个 Go 项目的并发逻辑它不仅指出了 goroutine 泄露的风险还给出了具体的修复建议甚至解释了为什么用 context.WithCancel 比用 channel 关闭更合适。这种深度在 GPT-3.5 时代是完全不可想象的。不过 GPT-4 也有自己的毛病慢、贵、偶尔一本正经地胡说八道。早期 API 调用一次复杂任务可能要等几十秒成本也高导致很多团队只是“试点”而不是“全面铺开”。而且它在长上下文场景下的注意力会稀释你给它塞 8K 甚至 32K 的上下文它经常忽略中间部分的关键信息这就是著名的“lost in the middle”现象。1.3 GPT-4o 到 GPT-5多模态、实时性与工具调用到了 GPT-4o进化方向变成了“实时交互”和“多模态融合”。它不再是傻等输入输出而是能处理音频、图片响应速度快得接近人类对话。对程序员来说最有价值的其实是工具调用Function Calling能力的成熟。你可以让模型决定什么时候调用外部 API、查数据库、执行代码而不只是“生成文本”。再往后大家开始讨论 GPT-5。虽然我不能给你剧透什么内部参数但从公开的可观测变化和大量开发者的实际使用反馈来看这一代的重点明显放在了三件事上更长更稳的上下文理解、更强的多步推理、以及与代码执行环境Codex / Code Interpreter的深度集成。现在很多 GPT-5 相关的报错信息比如 “the gpt-5.6-sol model is not supported when using codex with a chatgpt account” 这类提示恰恰说明了一个趋势模型标识越来越多每种模型被绑定到了具体的执行环境和账户权限上。模型本身正在从“一个对话接口”变成“一整套开发基础设施”。2. ChatGPT 与程序员协作 or 取代的理性边界2.1 取代焦虑从哪来它确实在做“程序员的外包活”网上为什么总有“程序员要被取代”的声音因为 ChatGPT 确实能完成很多以前需要外包或者初级开发才能干的活。比如用 Python 写一个爬虫脚本、把一段 Java 代码转成 Go、给已有代码写单元测试、生成 Swagger 文档、写 SQL 查询语句。这些任务技术含量不高、逻辑相对固定、验收标准清晰交给 AI 做效率极高。这正好撞上了“程序员外包”这个敏感话题。很多公司以前会把这类活包给外包团队现在发现直接让 AI 干更快而且不用等排期、不用沟通需求。久而久之简单重复的编码工作确实在被挤压。如果你程序员的定位就是“把接口文档变成 CRUD 代码”那确实危险。但问题是真实项目里这种“纯净的编码任务”只占很小一部分。绝大部分工作量在于理解模糊的业务需求、权衡技术方案、排查线上故障、协调团队资源、处理历史债务。这些事有一个共同特点信息不完整、目标不确定、需要大量上下文判断。而这恰恰是当前 GPT 模型最不擅长的地方。2.2 取代的边界它能写代码但不能对结果负责我个人的体会是ChatGPT 是一个“超强外包开发”但它不能当“技术负责人”。原因有三点第一它对业务语义的理解是浅层的。你告诉它“做一个订单超时自动关闭的功能”它知道要写定时任务但它不知道“超时”在这个业务里到底是指支付超时还是发货超时、需不需要区分用户类型、超时后要不要发通知、退款流程怎么联动。这些上下文不在 prompt 里它永远问不出来。第二它没有“责任感”。代码写错了线上事故了背锅的还是人。模型不会因为生成了一段有性能隐患的代码而失眠也不会因为漏掉一个并发边界条件而愧疚。最终为代码质量兜底的永远是人类工程师。第三它无法处理“真实系统的混乱”。生产环境里有几十个微服务有各种历史遗留的怪逻辑有同事写了注释但注释和代码完全不符的模块有只在特定流量下才触发的 bug。这种系统级的复杂度和理解难度不是模型靠“读文档”就能掌握的它需要长期在团队里积累 context。所以我一直觉得纠结“取代还是协作”这个问题本身就是在问一个错误的问题。更贴切的比喻是ChatGPT 不是来取代程序员的它是来“取代程序员工作中不需要创造力的那部分”。这不是坏事因为那些工作本来就没什么成长空间。2.3 两个时代的对比从“人找代码”到“代码找人”用更宏观的视角看GPT-3.5 到 GPT-5 的进化其实是一个“能力门槛不断下移”的过程。以前你要写一个完整的前端页面需要知道 HTML、CSS、JavaScript、框架 API、打包配置。现在你跟模型说“用 React 写一个带表格和筛选功能的页面样式参考 Ant Design”它生成的东西直接能用。这意味着什么意味着编程这件事的“表达成本”在大幅降低。以前是人去适应机器的语言现在机器开始适应人的语言。这就像搜索引擎出现之前你要查资料得记住文献索引号现在你只需要会打字就行。能力门槛下移不会消灭专业者但会消灭“只会做低门槛工作的人”。这个视角下“协作 or 取代”就有了清晰答案取代的是岗位中的“低价值执行环节”协作的是“高价值的判断与决策环节”。而且越往后这种分化会越明显。3. 程序员如何把 GPT 用成“主力队友”实操经验分享3.1 选对入口API、Codex 还是桌面端聊实操之前先解决一个基础问题你现在到底怎么用 ChatGPT不同入口对应不同场景选错了会非常痛苦。如果你是在 IDE 里写代码最理想的是用官方提供的 Codex CLI 或者集成了 GPT 模型的编辑插件。它可以把当前文件、选中代码、编译错误信息自动塞给模型形成“代码上下文 自然语言指令”的闭环。比手动复制粘贴到网页版高效太多。如果你是做需求分析、写文档、设计数据库表结构这类“纯脑力活”用网页版或者桌面端就够了。桌面端的优势是可以开多窗口、长时间保持会话、上传文件做解析适合把整个需求文档拖进去让它帮你梳理。如果你在做自动化流程比如 CI/CD 集成、批量代码审查、自动生成测试用例那就得走 API。API 的核心价值是可编程、可批量、可嵌入到现有工具链里。但要注意API 的模型版本和账户权限绑定很死我身边不止一个人遇到过模型标识符不支持的问题。遇到这种报错先别急着怀疑代码去查一下你的 API key 对应的模型权限列表十有八九是权限不够或者模型名写错了。3.2 让 GPT 写出“能直接上线”代码的 Prompt 模板很多人说“ChatGPT 写的代码质量差”我猜八成是 prompt 问得太糙。你上来一句“帮我写个登录功能”它只能给你一个通用的、没有任何业务约束的 Demo。要让模型输出接近生产级的代码你得给它“当程序员一样的信息密度”。我实际用下来效果比较好的模板是这样的角色你是一名有 X 年经验的 Go 后端工程师。 任务实现一个 HTTP 接口支持用户通过手机号和验证码登录。 约束 - 使用 Gin 框架数据库用 PostgreSQLORM 用 GORM。 - 需要处理验证码过期和错误次数的限制。 - 登录成功后返回 JWT token并把用户 ID 写入 token 的 claims。 - 错误码要统一格式为 { code: int, message: string }。 - 考虑并发场景验证码校验需要原子操作。 - 补充必要的单元测试覆盖正常流程和验证码错误两种场景。 - 先给我讲解一下你的实现思路再开始写代码。你看这个 prompt 里包含了角色定位、任务目标、技术栈约束、业务规则、错误处理要求、并发考虑、测试要求、输出顺序。这种情况下模型生成的代码质量会高一个量级。因为它不再需要“猜”你想要什么而是在你给定的边界内做工程实现。3.3 让 GPT 帮你“理解陌生项目”的正确姿势接手一个老项目时我最常用的一个技巧是不是让 GPT 直接解释整个项目而是让它按层次拆解。第一步把项目根目录的 README、pom.xml / package.json / go.mod 这些依赖描述文件喂给它问它“这个项目的技术栈是什么模块划分大概是什么样”。这一步花 5 分钟能省掉你半天翻文档的时间。第二步挑一个你正在改的核心文件或接口把代码贴过去配上问题“请解释这个接口的调用链从 HTTP 入口到数据库查询的完整路径重点标明参数传递和异常处理”。这一步能帮你快速定位修改影响面。第三步让它“站在 code review 的角度”分析代码缺陷而不是“这个代码是什么意思”。同样是读代码两个问题的产出完全不一样。前者给的是你下一步要动手改的问题清单后者只是复述代码逻辑。这个“三步法”我安利给过很多同事实测下来对快速上手陌生项目非常管用。尤其是那些没有文档、注释稀烂、逻辑绕来绕去的历史项目相当于项目里那些老骨干会长期坚持做大量 review。3.4 把 GPT 当成“结对编程的下班搭子”写测试、写文档、写提交信息除了核心业务代码GPT 在“程序员最不想干的杂活”上表现堪称完美。写单元测试。你只要把被测函数和它依赖的接口定义扔给它让它生成测试用例再让它标注每个用例覆盖的分支条件质量基本能到可用的程度。关键技巧是要求它“覆盖正常、边界、异常三类场景”并让它把 mock 数据和断言一起给出来。写接口文档。把 Controller 代码贴进去要求输出 OpenAPI 格式文档包含参数说明、示例值、响应码。它的产出找个人微调一下就能用。写 commit message。很多人懒得写规范的 commit message现在只要把 git diff 贴给它让它按 Conventional Commits 规范生成描述它生成的 message 往往比你自己写的还规范。这些任务有一个共性边界清晰、评价标准明确、不需要太多上下文。属于 AI 最擅长、效率翻倍最高的范围。3.5 真实案例我用 GPT 系列模型重构一个遗留模块的经历分享一个我自己的实际项目可能会给你更直观的感受。之前公司有一个 PHP 写的老模块负责订单数据汇总逻辑乱、性能差跑一次报表要 40 多秒而且经常超时。领导让我评估重构方案。我一开始人肉读代码读了两个小时还是一团浆糊。后来我换了思路把整个文件分段截图导入 GPT-4o 的多模态分析能力让它“先梳理执行流程再圈出性能瓶颈点”。它很快就给出了结论问题主要在三处——第一SQL 是逐条查询再在 PHP 里循环求和没有用聚合函数第二数据量大之后索引失效走了全表扫描第三缓存只缓存了最终的报表结果中间量级的数据没有缓存导致每次都要全量计算。接下来我让它给重构建议它推荐了三个方案改写查询逻辑用一条聚合 SQL、增加二级缓存、把计算任务拆成定时任务异步执行。最后我们按它的思路落地报表从 40 多秒降到了 3 秒以内。这个过程里GPT 干了“代码理解”、“性能瓶颈分析”、“重构方案建议”的活但最终方案选型、落地的进度管理、上线后的稳定性保障都是我做的。这就是我认为的“真协作”它负责把信息吃透并行输出人类负责判断和决策。4. 常见问题与避坑技巧实测总结4.1 模型报错与上下文丢失不是代码的锅是使用方式的坑最近网上挺多关于 ChatGPT 报错的讨论比如什么 “chatgpt 无法加载 config.toml因此此对话串无法继续”或者各种 “model is not supported when using codex”。这些报错看起来像技术问题但绝大多数不是代码 bug而是配置、权限、上下文损坏导致的状态异常。我遇到过两次类似情况一次是 API request 里带了过期的 model 名另一次是本地 CLI 工具的 config.toml 和远程账户配置不同步。解决办法很简单先重新生成配置文件确认当前账户可用的模型标识符再检查 API key 的权限范围最后把上下文简单化开新会话重试。不要在一个已经出错的会话里反复挣扎重启一个干净的新会话往往是最快的。4.2 长上下文处理它真的“记得”所有内容吗很多人以为 GPT 的上下文窗口越大越好于是把几万行代码一次性塞进去。实际效果往往是灾难性的模型会“迷失在中间地带”漏掉关键参数、忘记早期约束甚至前后自相矛盾。我的做法是“化整为零”。大文件分段处理先让它总结每一段的职责再汇总成一个全局理解。重要约束放在 prompt 开头和结尾因为模型对这两个位置的注意力最集中。而且每隔一段时间就问它一句“根据我们之前的讨论你现在的任务是什么”检验它有没有偏航。4.3 模型幻觉怎么识别 AI 一本正经地胡说八道GPT 系列模型学得越多一个 bug 也越明显它非常擅长一本正经地胡说八道。你问它一个冷门 API 的用法它可能给你编一个不存在的函数签名你让它引述某篇论文它可能给一个正确格式但完全不存在的参考文献。应对策略就一条任何拿不准的事实性信息都要交叉验证。代码能跑不一定代表逻辑对参考文献能搜到才算存在。我会在 prompt 里加一句“如果你不确定请直接说不确定不要猜测”。这能显著降低幻觉率但不能完全消灭。所以重要代码上线前必须人工 review这是铁律。4.4 提示词陷阱别让它“先给结论再解释”要让它“先思考再回答”有个细节我踩过一次坑才明白如果 prompt 里直接问“这个代码有什么问题”模型经常只看一眼就给出一个表面结论比如“缺少错误处理”。但如果你加一句“请先逐步分析代码的每个分支列出可能的问题点再给出结论”它的回答质量会明显提升。这背后的原理是模型在生成时必须“逐步推理”如果 prompt 强制它先把推理过程写出来它能完成任务的概率就更高。编程场景下我会把“先思考”拆得更细请先分析需求约束再设计接口签名再考虑异常分支最后写出代码。交互效果比“直接给我代码”好非常多。4.5 关于账户和订阅的那点坑稳定使用比什么都重要现在 GPT 相关的充值、账户限制话题很热比如“ChatGPT Plus 每周额度”、“免费版能不能用上最新模型”等等。我的建议是如果你只把它当搜索引擎的替代品免费版够用如果每天都要写代码、调 API开 Plus 或按 API 用量付费是值的它省下来的时间远超订阅费。但要注意几点第一不要轻信非官方渠道的“共享号”或“低价代充”经常翻车在最大号这种前置条件上容易被卡在 quota 上。第二注意 API 和网页版的配额是分开的别把两者混在一起算。第三账号安全信息不要乱同步特别是多设备登录时容易触发安全校验被临时限制就耽误事了。5. 程序员如何在这波浪潮里保持“不可替代性”5.1 从“写代码的人”转向“定义问题的人”到了 GPT-5 这一代模型能完成的“确定性编码任务”会越来越多覆盖面会越来越广。单纯“把需求翻译成代码”的能力会快速贬值。程序员真正的护城河正在从“怎么写代码”转向“为什么写这段代码”和“这段代码到底解决了什么问题”。这意味着两件事。第一需求分析能力变得比编码能力更重要。你能不能在用户含糊其辞的描述里把真正的核心问题提取出来转化为技术方案这决定了你能不能给 AI 下达一个高质量的任务。第二系统设计能力变得比代码细节更重要。你懂不懂数据库表结构、缓存策略、消息队列、分布式事务直接决定了你构建出的系统靠不靠谱。这些决策模型只能给建议不能替你做。5.2 把 AI 工具链当成你的“第二外语”我见过很多程序员现在还在用最原始的方式和 AI 交互把这个文件全部复制进去问几个通用问题得到通用答案然后抱怨 AI 没用。这种用法其实是把自己当成了“人类提示词劣质生成器”。真正高效的人会像学一门新语言一样学 prompt 设计会像研究框架一样研究模型能力边界会像整理代码库一样整理自己的 Prompt 模板库。他们会维护一套自己的“人机协作流程”什么任务走 IDE 插件、什么任务用 API 批量跑、什么任务必须亲自写代码。长期来看“人机协作效率”会成为程序员之间新的能力分水岭。一个熟练使用 AI 辅助工具、能在 20 分钟内完成需求分析和方案设计的工程师和一个还在逐行手写代码、凡事都要自己试错的工程师产出差距会快速拉开。这种差距会让人觉得他们不是同一物种。5.3 给还在焦虑“被取代”的人几句大实话与其焦虑不如先问自己几个问题你现在每天花多少时间在“可被自动化”的低价值任务上你对你负责的系统有没有“模型无法获得的上下文理解”如果明天团队引入 AI 编码工具你最可能被分配什么角色第二和第三两个问题的答案才真正决定了你的“不可替代性”。如果你发现自己除了写接口什么都不会现在开始慌反而来得及因为你有足够的时间补系统设计、补业务建模、补沟通协调能力如果你已经是一个能影响技术决策、带项目推进的人那 GPT-5 对你来说只是“一个非常强的实习生”你带着它干活远比孤军奋战要强。我个人的体会是从 GPT-3.5 用到 GPT-5 这条路最大的变化不是模型变聪明了多少而是我的使用方式变了从“把它当搜索引擎”到“把它当结对同事”从“让它给我答案”到“让它帮我理清思路”。模型越强越考验使用者的判断力。真正该担心的不是“AI 取代程序员”而是“不愿改变的程序员把自己留在了原地”。
返回列表