→记得评论私信~还可加入交流群~
对游戏企业来说,在成本允许的条件下,从性能方面考虑自然优先选择 GPT-4 ;但考虑到游戏成本,适当“降级”到 GPT-3.5 似乎也在情理之中。
那么,具体要如何抉择呢?
最近,我们的游戏《You Are Not Alice》的演示版上线,很高兴看到许多人对技术演示感兴趣,并将其发送给他们的朋友。与此同时,我们看到 OpenAI 的成本上升速度远超我们的预期——这是一个重大问题,应当尽快解决。
图:演示版上线后, OpenAI 的成本迅速上升
游戏上线的头两天,OpenAI 每日的开销超过了 30 美元。虽然对于一些资金充裕的公司来说,这项支出完全能长期负担,但我看到了深入研究每个提示的必要性,以此来分析哪些应该继续使用 GPT-4,而哪些“降级”到 GPT-3.5 也不会导致质量或性能下降。
在深入介绍最后的研究结果之前,我想先简要介绍一下游戏,以便你对背景有大致的了解。
我们的游戏
我们的游戏名为《You Are Not Alice》,主人公 Alice 是一家大公司的财务实习生。你将在游戏中扮演一名黑客,入侵 Alice 的办公电脑。通过远程访问浏览她的文件,并与她的同事交谈(伪装成Alice),可以将病毒文件(virus.exe)发送到她的文件系统,控制他们的电脑。
核心游戏循环要求你欺骗公司的其他雇员,让他们运行你的病毒文件,这样你就可以通过公司网络传播并控制更多的计算机,获取更多员工电脑的访问权限,然后再伪装成他们,感染他们的同事。
我们使用的生成式人工智能需要完成以下任务:
1. 为每个员工生成文件系统;
2. 为每个文件的内容生成文本;
3. 员工两两之间的现有对话记录;
4. 实时响应所有新消息。
GPT-3.5 与 GPT-4 之间的分工
刚开始的时候,所有提示都发送给了 GPT-4,但对于其中一些提示来说,很明显使用 GPT-4 有点大材小用了。在意识到这一点后,我们针对每个提示分别尝试了 GPT-3.5 和 GPT-4,并发现了以下规则,可在保持高质量的同时将成本最小化。
1. 每个提示使用的模型不必完全相同
这应该是最明显的结论之一,但对于使用第三方库的人来说,可配置的部分比较有限,因此可能这个结论没有那么直观。所有提示不需要统一使用 GPT-3.5 或 GPT-4,你可以根据需要为每个提示选择不同的模型。
2. 对于要求完美格式的输出的提示,请使用 GPT-4
如果你需要生成 JSON、XML 或 YAML 这类机器可读的输出,则应该使用 GPT-4。虽然在大多数情况下 GPT-3.5 也能确保格式正确,但我们发现它偶尔会出现一些句法错误,而根据我们的经验,GPT-4 没有这个问题。
我们的游戏在生成文件系统时,会生成一个文件夹和文件的树状图,缩进用空格表示,如下所示:
对于这种格式,前导空格的数量和行前缀都会影响到能否构建正确的文件系统。我们在使用 GPT-3.5 时偶尔会遇到一些句法错误(一次缩进超过 1 个空格,多余的空行,添加其他前缀等)。为了避免在遇到解析问题时“重新生成”,我们切换到了 GPT-4,从那以后就没有再遇到过任何句法错误。
3. 生成速度敏感的提示,请使用 GPT-4
在游戏中,当用户尝试打开文件时,我们需要快速响应。我们没有预加载文件系统上的所有文件,而是选择为每个员工生成文件系统结构,然后在玩家打开文件时生成文件的内容。
我们针对生成文件内容的提示,分别测试了在 GPT-3.5 与 GPT-4 的性能,结果显示 GPT-4 的平均输出速度快了 4~5 倍。
大多数生成可以(而且通常应该)在玩家需要输出之前预加载。然而,如果你想等到用户发出动作再生成,那我建议使用 GPT-4 以获得最快的响应。
4. 生成内容期间应播放动画或游戏事件
这条建议显而易见,但对于你选择使用 GPT-3.5 还是 GPT-4 可能会产生影响。
下面是两个例子:
(1)我们都希望尽快生成文件内容。在游戏中,我们缓存了每个文件生成花费的时间,并显示一个类似 Windows 的加载条,让玩家大致了解此次生成将花费多长时间。在添加这个动画之前,游戏看起来像是出了问题或卡住了;添加之后,玩家可以选择等待(知道大约需要多长时间)或者利用这段时间做其他事情。
(2)对话响应可以容忍较长的响应延迟,因为我们模拟了一个“真实”员工回复消息。对于这种类型的生成,游戏的聊天程序使用了带有动画的打字指示,让玩家知道消息已收到,而且还会回复。如果没有这些指示,我们可能会为了提高响应速度而感到更有压力。有了这些指示后,我们就可以慢慢提供响应了。
5. 对于上下文没有限制的生成,建议使用 GPT-3.5
这条建议很重要,如果玩家在玩游戏时可以生成越来越大的上下文窗口(例如聊天对话中的消息越来越多),而你又不想限制上下文窗口,则应该将这些提示从 GPT-4 换到 GPT-3.5。
我们的游戏使用 GPT-3.5 来回复所有新的对话消息。这是我们节省的最大的一笔 OpenAI 费用,一些对话的长度甚至接近 OpenAI 的上下文窗口限制(GPT-4 为 8K 或 32K Token,而 GPT-3.5-turbo 为 4K 或 16K Token)。
6. 对于很短的生成,请使用 Temperature 较高的 GPT-3.5
为了避免偶尔的句法错误,我们将文件系统生成提示切换到了 GPT-4。但在这之前我们曾尝试使用 GPT-3.5 生成文件系统,因为它可以在后台生成,而且不需要极高的质量。
然而我们发现,当结果非常短时,GPT-3.5 会“照抄”系统提示中给定的输出示例。同一部门内的许多员工所拥有的文件夹相同,甚至连文件都相同,因此浏览电脑就变成了重复动作。我们发现 Temperature(一个超参数,可用于控制生成语言模型中生成文本的随机性和创造性)的小幅提升(从 0.7 提高到 0.8,甚至 0.85)可在保持高质量输出的同时,提高为每个员工生成的文件夹/文件的差异性。
还有一个额外的好处,这与使用 GPT-4 生成的文件内容非常契合,因为可以根据文件名(以及其他元数据,如员工姓名、职位等)生成非常逼真的内容,即使文件名本身与工作似乎毫不相关。
7. 对于所有其他情况,默认使用 GPT-3.5
对于大多数生成任务而言,GPT-3.5 已经足够好了,而 GPT-4 可提供更多功能,但同时成本也更高。除非你有特殊原因(速度、语法等)必须使用 GPT-4,否则我建议首先使用 GPT-3.5,并尝试 Temperature、采样策略和生成惩罚。通过一些测试,通常能够以较小的成本得到很好的结果!
小贴士:为每个提示设置备用模型!
在过去的一段时间里,我们还看到有时 GPT-3.5 宕机,而 GPT-4 仍然保持正常运行。如果你已经配置了基础设施,并指定了每个提示使用的模型,那么只需略调整配置就可以在某些依赖性宕机时故障转移模型。
在我们的游戏中,GPT-3.5 宕机会导致游戏中出现空文件系统,也会导致游戏中的角色不回复消息,这样基本上游戏就没法玩了。将这些出现故障的提示切换到 GPT-4(或切换到 GPT-3.5),可以让游戏更加稳定,并为无法玩游戏的玩家提供持续的、无缝的游戏体验。