Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPT-4o API 实测解析:开发者的福音还是挑战? #126

Open
cssmagic opened this issue May 16, 2024 · 0 comments
Open

GPT-4o API 实测解析:开发者的福音还是挑战? #126

cssmagic opened this issue May 16, 2024 · 0 comments

Comments

@cssmagic
Copy link
Owner

cssmagic commented May 16, 2024

前两天都在聊 GPT-4o 有多震撼,今天也该聊些硬核干货了。

我们的 AI 应用是否应该立即切换到 GPT-4o 的 API?会遇到哪些挑战,又该如何应对?魔法哥尝试通过自己的实际测试来解答这些问题。

价格

GPT-4o 的发布对于开发者来说,最直接的吸引力就是价格大降!GPT-4o API 的定价相对于 GPT-4-Turbo 直接腰斩,这是一项重大利好。

魔法哥之前整理的 “各家旗舰模型 API 参考定价表”,今天更新如下:(单位:元 / 百万 token)

厂商 模型 输入
定价
输出
定价
OpenAI gpt-4-turbo 72.30 216.90
OpenAI gpt-4o 36.15 108.45
文心 ERNIE-4.0-8K 120 120
通义千问 qwen-max 120 120
智谱 GLM-4 100 100
Kimi moonshot-v1-32k 24 24
Kimi moonshot-v1-8k 12 12
MiniMax abab6.5 30 30
MiniMax abab6.5s 10 10
DeepSeek deepseek-chat (32k) 1 2

此外,对于国内的开发者来说,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 计数,理论上更加精准。

测试结果如下:

模型 Token 数 Token 利用率
GPT-3.5-Turbo 2,266 0.75
GPT-4-Turbo 2,266 0.75
GPT-4o 1,500 1.13
Kimi v1 1,195 1.41
DeepSeek v2 1,275 1.33

大家可以看到,GPT-4o 的 Token 利用率比 GPT-4-Turbo 提升了 50%!这意味着相同的中文提示词在调用 GPT-4o 时,消耗的 Token 数更少,实际成本进一步降低!

推理速度

第三大利好,就是模型的吞吐速率明显提升,也就是推理速度更快了。OpenAI 官方表示,GPT-4o 的推理速度相对于 GPT-4-Turbo 直接翻倍

这一点是直接影响用户体验和运行效率的。想像一下:以前是人等模型出字,现在是模型等人读完;以前是一个小时跑完脚本,现在半小时搞定……

真有那么快?魔法哥还是拿测试数据说活。

为让各个模型输出大致相同的内容,本轮测试设计了三项任务(简繁转换、背英文诗、背中文诗);每项任务在流式与非流式方式下各跑 5 次,取调用耗时的中位数。最终结果汇总如下(单位秒)。

任务一:简繁转换

模型 非流式 流式
GPT-3.5-Turbo 14 15
GPT-4-Turbo 30 36
GPT-4o 8 9
Kimi v1 21 28
DeepSeek v2 37 39

任务二:背英文诗

模型 非流式 流式
GPT-3.5-Turbo 3.3 3.9
GPT-4-Turbo 7.4 8.3
GPT-4o 3.5 4.0
Kimi v1 6.5 6.4
DeepSeek v2 11.0 10.7

任务三:背中文诗

模型 非流式 流式
GPT-3.5-Turbo [注] 14 12
GPT-4-Turbo 38 34
GPT-4o 12 13
Kimi v1 20 23
DeepSeek v2 42 42

[注] 此模型无法完成测试,这里列出的是换算值。

从以上数据可见,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 的表现。(当然,再次强调,这套测试仅基于有限的场景和用例,请谨慎参考。)

compare

整体来说,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 相比并没有什么变化,都是接受文字和图像输入,生成文字输出。

这样看来,希望借助 GPT-4o API 做出实时语音交互的小伙伴,还要再等等……

小结

新模型带来了诸多利好,同时也向开发者提出了新的挑战,希望本期分享能帮助大家更有效地用上新模型!欢迎你在留言区一起交流分享,也别忘了把文章分享给身边的小伙伴哦!

魔法哥最近一年都在做 AI 领域的研发和探索,下期分享更精彩。各位新朋友请关注公众号,下次更新不迷路

weixin-qrcode


📣 AI 魔法群开放啦!

对 AI 感兴趣的同学不妨扫码加群,与数百名同好交流分享:

qun-qr


🔥 往期推荐

AI 应用开发指南:

ChatGPT 高级技巧:

AI 资讯与评述:


© Creative Commons BY-NC-ND 4.0   |   我要订阅   |   我要打赏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant