GPT-4发布:多模态AI的新纪元

OpenAI在3月发布了GPT-4,用了两个月,说说感受。比起GPT-3.5,这不是量变而是质变。

GPT-4的核心提升

更长的上下文窗口

GPT-3.5最大支持4K token(约3000个中文字),GPT-4标准版支持8K,还有32K版本。32K意味着你可以把一整篇论文或一个完整的代码文件丢进去。

实际使用中,长上下文的意义在于:

  • 分析长代码不用拆分了
  • 可以一次性给更多的few-shot示例
  • 对话历史保留更多,不容易"忘记"前面说的话

准确性大幅提升

GPT-3.5经常一本正经地胡说八道(hallucination)。GPT-4这个问题明显改善了。具体体现在:

  • 代码生成的bug率明显降低
  • 逻辑推理更靠谱,不容易自相矛盾
  • 对"我不确定"的回答更诚实

OpenAI公布的数据:GPT-4在律师资格考试(Uniform Bar Exam)上得分在前10%,GPT-3.5只在后10%。

多模态能力

GPT-4可以理解图片了(目前API还没开放图片输入,只在ChatGPT Plus里可用)。能做的事:

  • 看一张手绘的网页草图,生成对应的HTML/CSS代码
  • 分析图表和数据截图
  • 理解UI截图并给出修改建议
  • 解读论文中的图表

这对开发者的意义巨大——以后截个图就能让AI帮你改代码了。

与GPT-3.5的实际对比

以开发者日常使用的场景对比:

代码生成

给同一个prompt:"用Go实现一个带限流功能的HTTP中间件"

  • GPT-3.5:能写出基本结构,但令牌桶算法的实现有并发bug(没加锁),错误处理不完整
  • GPT-4:代码几乎可以直接用,正确使用了sync.Mutex,边界条件处理得当,还主动加了注释说明设计选择

调试能力

贴一段有bug的代码让它找问题:

  • GPT-3.5:能找到明显的语法错误和简单逻辑错误,但对竞态条件、内存泄漏等隐蔽问题经常漏掉
  • GPT-4:能识别出竞态条件,会指出goroutine泄漏的风险,还能给出修复方案和解释

架构设计

问"电商系统的库存扣减方案":

  • GPT-3.5:给出教科书式的答案,但脱离实际,不区分场景
  • GPT-4:会分析不同场景(高并发秒杀 vs 普通下单),给出不同方案,讨论各方案的trade-off,甚至会提到分布式事务的实际问题

在编程任务上的表现

OpenAI的技术报告中给出了GPT-4在各种考试上的成绩,编程相关的:

考试/基准 GPT-3.5 GPT-4
LeetCode Easy ~70% ~90%
LeetCode Medium ~40% ~70%
LeetCode Hard ~15% ~40%
Codeforces Rating ~800 ~1400
AP Computer Science 5 5

GPT-4在LeetCode Medium上的通过率已经接近普通程序员的水平了。虽然Hard题还有差距,但进步是明显的。

对开发者的影响

两个月用下来的感受:

  1. 代码审查助手:GPT-4看代码比GPT-3.5靠谱太多了。已经成了我的第一个code reviewer
  2. 学习加速器:学新框架/语言时,GPT-4能给出更准确的示例和解释
  3. 写文档:生成API文档、注释的质量提高了很多
  4. 不能完全信任:虽然进步大,但GPT-4仍然会犯错。关键代码必须自己review
  5. 提示工程更重要了:模型能力强了,能做的事更多,但如何精确描述需求成了瓶颈

定价

GPT-4比GPT-3.5贵很多:

模型 输入 输出
GPT-3.5-turbo $0.002/1K tokens $0.002/1K tokens
GPT-4 (8K) $0.03/1K tokens $0.06/1K tokens
GPT-4 (32K) $0.06/1K tokens $0.12/1K tokens

GPT-4的输入价格是GPT-3.5的15倍,输出是30倍。日常开发中两个混着用比较合理:简单任务用GPT-3.5省钱,复杂任务上GPT-4确保质量。

未来展望

GPT-4出来才两个月,已经催生了大量新工具和新玩法。下一步值得关注的:

  • 多模态API开放:图片输入API开放后,代码理解能力会再上一个台阶
  • Plugin生态:ChatGPT Plugins让AI可以调用外部工具,想象空间很大
  • 微调支持:如果GPT-4开放微调,针对特定领域(如某个公司的代码库)做优化,效果会更好
  • 开源追赶:LLaMA、ChatGLM等开源模型在快速追赶,竞争对开发者是好事

作为开发者,拥抱AI工具已经不是选择而是必然。关键是搞清楚AI能做什么、不能做什么,把它用对地方。