使用 ChatGPT 进行长文本 JSON 翻译
学习如何使用最新的 ChatGPT 模型和 JSON 模式将具有长上下文的 JSON 对象翻译,并将输出流回 JSON。
学习如何使用最新的 ChatGPT 模型和 JSON 模式将具有长上下文的 JSON 文件翻译,并将输出流回 JSON。
介绍
自从我们上次发布使用 ChatGPT 高效国际化以来已经有一段时间了,我们在其中展示了如何使用 ChatGPT 翻译 JSON 对象。随着模型的演变,翻译能力显著提高,拥有更长的上下文窗口,增加的最大输出 tokens,以及新的功能如 JSON 模式使开发者体验更加出色。
增加的最大输出 tokens
让我们看看模型的最后两个版本的快速比较:
模型 | 描述 | 上下文窗口 | 最大输出 tokens | 训练数据 |
---|---|---|---|---|
gpt-4o-2024-05-13 | gpt-4o 当前指向此版本。 | 128,000 tokens | 4,096 tokens | 截至 2023 年 10 月 |
gpt-4o-2024-08-06 | 支持结构化输出的最新快照 | 128,000 tokens | 16,384 tokens | 截至 2023 年 10 月 |
最显著的变化是最大输出 tokens 从 4,096 增加到 16,384,这非常适合翻译场景,因为翻译的输出通常与输入长度相当或更多。同时,与之前的 32K token 模型相比,价格甚至下降了(过去很贵)。
JSON 模式
顾名思义,当你想确保输出是一个有效的 JSON 对象时,JSON 模式非常有用。对于新模型,你甚至可以使用 Structured Outputs 定义输出 JSON 对象的架构。
开始
初始化
我们将在本篇文章中使用 OpenAI 的 Node.js SDK v4.56.0 进行演示。你可以随意使用任何其他方法或语言。
首先,我们需要初始化 OpenAI 客户端:
对于长上下文翻译,我强烈建议使用流模式,因为这样效率更高,而且你无需等待很长时间来获取输出(例如,一个请求需要一分钟)。代码看起来像这样:
编写一些提示
我们可以使用 system
角色来指示模型的工作:
记得将 "es" 替换为你的目标语言代码。根据我们的经验,有几个指令需要告诉模型以获得更好的输出和更少的人为干预:
你可能会想为什么我们需要最后一个指令。这是 OpenAI 的解释:
使用 JSON 模式时,你必须始终通过对话中的某个消息指示模型生成 JSON,例如通过你的系统消息。如果没有明确指示生成 JSON,模型可能会生成无尽的空白流,且请求可能会持续运行直到达到 token 限制。
有了上述指令,我们可以将要翻译的 JSON 对象放入具有 user
角色的以下消息中。让我们来整理一下我们目前的内容:
处理输出
由于我们正在使用流模式,我们需要以流式样式处理输出。以下是一个示例:
结论
就是这样!使用新的 ChatGPT 模型,JSON 翻译的效率得到了进一步提高,翻译质量也更好。希望这篇文章能帮助你对 ChatGPT 和 JSON 翻译有一些新的见解。下次再见!