GPT-4o API 实测解析:开发者的福音还是挑战?
前些天都在聊 GPT-4o 有多震撼,今天也该聊些硬核干货了。
我们的 AI 应用是否应该立即切换到 GPT-4o 的 API?会遇到哪些挑战,又该如何应对?尝试通过自己的实际测试来解答这些问题。
需要升级 ChatGPT Plus 可以参考 升级 GPT-4o 教程 ,一步步详细操作进行升级。
价格
GPT-4o 的发布对于开发者来说,最直接的吸引力就是价格大降!GPT-4o API 的定价相对于 GPT-4-Turbo 直接腰斩,这是一项重大利好。
之前整理的 “各家旗舰模型 API 参考定价表”,今天更新如下:(单位:元 / 百万 token)
此外,对于国内的开发者来说,GPT-4o 的纸面定价不仅相对于 GPT-4-Turbo 降了一半,它的实际调用成本还有隐性缩减。且听继续分析。
Token 利用率
GPT-4o 对开发者的第二大利好,可能很多人都没有发觉。昨天在对 GPT-4o API 做初步测试时,就发现一个细节颇不寻常——它的 “Token 利用率” 有变化!
要知道 GPT 从 3.5 至今,分词算法(Tokenizer)就没有变过,而 GPT-4o 竟然 “违背祖训”?我们来一测究竟。
小科普:
“Token 利用率” 对于国内的 AI 应用开发者来说,是一个非常重要的指标。它表示模型的 Token 数量与汉字数量的换算关系。
国外大模型的架构设计通常不会针对中文语料优化,Token 利用率相比国产大模型要低。这就导致开发者在调用国外大模型时,还承担了额外的隐形成本(更多介绍请参考 这篇文章)。
在接下来的测试中,我们还请来了两位竞品,分别是国产大模型的当红炸子鸡 Kimi (Moonshot) v1 和新晋黑马 DeepSeek v2,方便大家对比参考。
今天的测试素材仍然是在中文互联网摘录的一篇 1690 字散文。并且此次测试统一采用 API 的返回统计数值来做 Token 计数,理论上更加精准。
测试结果如下:
大家可以看到,GPT-4o 的 Token 利用率比 GPT-4-Turbo 提升了 50%!这意味着相同的中文提示词在调用 GPT-4o 时,消耗的 Token 数更少,实际成本进一步降低!
推理速度
第三大利好,就是模型的吞吐速率明显提升,也就是推理速度更快了。OpenAI 官方表示,GPT-4o 的推理速度相对于 GPT-4-Turbo 直接翻倍。
这一点是直接影响用户体验和运行效率的。想像一下:以前是人等模型出字,现在是模型等人读完;以前是一个小时跑完脚本,现在半小时搞定……
真有那么快?还是拿测试数据说活。
为让各个模型输出大致相同的内容,本轮测试设计了三项任务(简繁转换、背英文诗、背中文诗);每项任务在流式与非流式方式下各跑 5 次,取调用耗时的中位数。最终结果汇总如下(单位秒)。
任务一:简繁转换
任务二:背英文诗
任务三:背中文诗
[注] 此模型无法完成测试,这里列出的是换算值。
从以上数据可见,GPT-4o 基本上是全程领跑,相比 GPT-4-Turbo 确实有翻倍的提升,相比 GPT-3.5-Turbo 也是有过之而无不及!
新模型的挑战与对策
说了这么多利好,大家是不是心动了?也是迫不及待,立刻就把自己的项目切到了 GPT-4o 的 API 上。不过实际运行的效果并不理想,生成内容与预期有较大偏差。
也算是身经百战,几番磨合之后,对 GPT-4o 的脾气便有了更深的了解。针对性地调整提示词和参数之后,整个应用的表现重回正轨。在此过程中,主观感受和心得如下:
GPT-4o 对 System Prompt(系统提示词)更敏感了。以往我们在面向 LLM 开发的时候,可能图省事,把所有提示词都丢进 User Prompt(用户提示词)里了,反正效果都差不多嘛。 这也是很多开发者曾经对 GPT 诟病的一点——System Prompt 的作用不明显,后来 OpenAI 也承诺改进这个问题。现在看来这个承诺在 GPT-4o 身上兑现了。 魔法哥的体感是 GPT-4o 对 System Prompt 的权重分配较以往的 GPT 模型更高。因此,如果你以前没有区分 System Prompt 和 User Prompt 的话,建议把指令性的提示词放进前者,把待处理的输入数据放进后者,这样也更符合模型的设计初衷。
创意生成场景需要更高的温度(
temperature
)参数。以往魔法哥在调用 GPT-4 时,温度参数取的是默认的 0.7,但现在换了模型之后,感觉在创意生成方面有点 “懒”。于是尝试把温度加到 1,有所好转。GPT-4o 对指令更敏感。这肯定是进步,但为什么在我的项目里跑起来效果不好呢?魔法哥排查了一遍提示词,发现往常为了激发或抑制模型的某些行为,添加了一些比较夸张的词汇。调整之后,GPT-4o 的工作明显更加符合预期了。
对示例的范化能力更强。因此,我们需要给出更精准的示例,以免模型把示例错误地套用到其他类似场景上。
对列举型的指令极为敏感。我们在提示词中有时会采用列举的方式来对指令进行补充,方便模型更好地理解,比如 “你需要处理×××,比如××、××、××等”。然而这种句式在 GPT-4o 身上的效果是:只要你提到,它就能做到;但如果你漏了,它就敢忽略。 所以对于这种指令,我们要么穷举所有情况,要么就不要列举了,相信 GPT-4o 的常识,直接给出整体要求就好。
魔法哥的一把辛酸泪就说到这里,不知道有没有相同心路历程的小伙伴呀?请务必留言让我看到!
在调教好新模型之后,我们把手边的几个常用模型都请过来做个评估,看看 GPT-4o 在实际场景中表现如何。
实际场景综合评估
在这个环节,还是拿出之前测评 Kimi 和 DeepSeek 所用的项目,涉及复杂指令理解、角色扮演、语言处理等多项能力,综合考查模型在特定的 AI 应用开发场景下的表现。
其实这个项目最初就是基于 GPT-3.5 和 GPT-4 做立项验证的,今天正好对比 GPT-4o 的表现。(当然,再次强调,这套测试仅基于有限的场景和用例,请谨慎参考。)
整体来说,GPT-4o 发挥了应有水准,与 GPT-4 的表现几乎一致。因此在实际运行中,完全可以取代 GPT-4,享受更低的成本和更快的推理速度。
常见问题解答
一、我的项目升级到 GPT-4o 需要修改原有代码吗?
GPT-4o 和 GPT-3.5/4 一样,都是通过 Chat Completion 接口来访问,参数定义也完全一致。因此,在接入层面所需的修改是极少的:
如果你的项目原来在用 GPT-3.5 或 4,只需要在 SDK 中把模型名改为 GPT-4o 即可。
如果你的项目原来在用兼容 OpenAI 的其他模型,比如 Kimi 和 DeepSeek,则只需要修改 API Base URL、模型名和 API Key 这三个配置即可。
此外,上面提到,业务层可能还需要对提示词和温度参数做一些调整,以适应 GPT-4o 的特性。
二、GPT-4o 好像有两个模型,我应该选哪一个?
我们来到 OpenAI 官网,可以看到 GPT-4o 目前提供了两个模型名称。那在项目中应该填哪一个呢?
gpt-4o
gpt-4o-2024-05-13
解释一下:gpt-4o-2024-05-13
是一个快照版本。也就是说,它在未来不会有较大变动,你的项目在调试稳定后可以固定在这个版本,以确保稳定性。
而 gpt-4o
并不是一个具体的版本,而是一个指针,指向最新的 GPT-4o 模型。目前由于 GPT-4o 只发布了 gpt-4o-2024-05-13
这一个版本,所以 gpt-4o
目前就是指向它的。这两者在现阶段其实就是一回事儿。
不过在将来,GPT-4o 模型推出新版本时,gpt-4o
就会指向新版本。如果你在项目中写的是 gpt-4o
,好处是可以自动升级到新模型,坏处则在于新模型的行为与旧版可能存在差异,可能给你的应用带来风险。
另外,快照版本也有它的生命周期,未来可能会宣布弃用并下线。因此要记得定期测试并迁移到较新的模型,以确保应用的长期运行。
三、GPT-4o API 提供了哪些能力?
GPT-4o 本身是一款原生多模态大模型,支持文本/图像/语音/视频等多种数据的处理。大家在看了发布会后,肯定对 GPT-4o 所带来的可能性充满了期待,憧憬自己的应用也能像发布会的演示那般神奇。
不过目前 GPT-4o 通过 API 暴露出来的能力和 GPT-4 相比并没有什么变化,都是接受文字和图像输入,生成文字输出。
需要升级 ChatGPT Plus 可以参考 升级 GPT-4o 教程 ,一步步详细操作进行升级。
小结
新模型带来了诸多利好,同时也向开发者提出了新的挑战,希望本期分享能帮助大家更有效地用上新模型!欢迎你在留言区一起交流分享,也别忘了把文章分享给身边的小伙伴哦!
评论