利用 ChatGPT 进行高效的国际化
本文分享了我们使用 ChatGPT API 高效支持产品国际化(即 i18n)的经验,提供了有关集成 API,优化翻译结果和优化指令的提示,以获得更好的结果。
本文分享了我们使用 ChatGPT API 高效支持产品国际化(即 i18n)的经验,提供了有关集成 API,优化翻译结果和优化指令的提示,以获得更好的结果。
在当今的全球市场中,产品的国际化(即 i18n)是必不可少的。通过支持多种语言,产品可以吸引和服务全球的用户群,增强用户体验,提高用户忠诚度,增加市场份额。然而,国际化支持往往伴随高昂的成本和复杂的维护:
在本文中,我们将分享 Logto 团队利用 ChatGPT 及其 API 高效支持我们产品国际化同时尽量降低成本的经验。
在集成了 ChatGPT API 之前,我们遵循一个传统的翻译流程来支持我们产品的国际化。这个流程是这样的:
下面是 zh-HK 语言的 index.ts 文件的一个例子:
为在 UI 中显示一个短语,我们使用了一个函数,该函数基于当前的环境获取翻译。我们使用点注释方式访问嵌套的对象或键。
例如,如果用户正在使用英文浏览器:
我们在这个方法中遇到了两个主要的挑战:
随着 ChatGPT 的流行,我们发现了一个有趣的用例。无意中,我们将一个 TypeScript 短语对象复制到 ChatGPT 中,发现它能够在保持代码结构的同时翻译代码段。这个发现让我们很兴奋。
例如:
然后的结果:
这是非常了不起的。在现实世界中,我们也有历史文件中包含一些用 // UNTRANSLATED 标记的未翻译的短语:
ChatGPT 甚至能够“部分地”翻译代码段,消除了最后的障碍。然而,它还远远不够完美。让我们来看看我们遇到的问题。
关于 ChatGPT 一件众所周知的事实是它的不可预测性。有时,结果是准确的,而有时,它们可能是奇怪的或者不是我们意图的结果。虽然在聊天机器人的上下文中这是可以接受的,但在生成翻译代码片段时就变得有问题了。
让我们重新看一下 zh-HK 的例子:
预期的 Nice to meet you. 在 zh-HK 的翻译是 很高興見到你。。然而,有时,代码段被翻译成 zh-CN:
很高兴见到你。 不同于 很高興見到你。。
有时,提示"请翻译..."也被翻译了:
偶尔,结果包含不必要的内容:
第一行"这是翻译:"对我们的需求是不必要的。
根据上述结果,我们可以发现 ChatGPT 和我们在对话中的几个差距:
为了解决上述问题,我们完善了我们的提示:
这个新提示证明是有效的。我们指导 ChatGPT:
如前所述,对于现有的短语,我们需要翻译那些带有 // UNTRANSLATED 标记的短语。这给提示引入了另一层复杂性。例如:
我们得到的一个结果:
它也翻译了(或者说转换了)短语 success ,并添加了两个 // TRANSLATED 评论,这都是我们预料之外的。
尽管前面的提示清晰且具体,但它相当长,即使对于人类来说也很难遵循。为了改善这种情况,我们给模型更多的时间来思考。我们提供了一个逐步的提示:
结果有了显著的改进。然而,有时 ChatGPT 会显示"思考过程",因为我们明确提供了步骤。
尽管没有直接的用户界面,我们可以通过为每条消息分配不同的"角色",向 ChatGPT 发送一个交互式且动态的对话。角色可以是以下之一:
通过使用角色,我们可以和 ChatGPT 创建一个更具互动性的对话。每条消息在引导对话中都扮演特定的角色。
这里,我们可以使用 "system" 角色来引导 ChatGPT 完成我们的任务:
使用 "user" 角色向 ChatGPT 要求翻译代码段:
使用 "assistant" 角色表示 "标准答案":
最后,结合我们想要翻译的代码段,和上面的三条消息,将它们作为单个请求发送到 聊天补全 API 。下面是一个例子:
我们将 languageCode 替换为目标码,将 code 替换为要翻译的代码段,我们看到了我们期望的准确结果。太好了!
虽然结果正确且稳定,但使用 ChatGPT API 的过程仍然不是很方便。我们必须手动复制代码段,将其粘贴到请求中,并替换 languageCode 和 code 变量。考虑到需要翻译10多种语言和100多个代码段,这并不是一种理想的体验。
为了解决这个问题,我们决定将 ChatGPT API 集成到我们的命令行接口(CLI)中。我们为我们的 CLI 添加了两个命令:
logto translate sync:这个命令集合所有语言的代码段,其中包含 // UNTRANSLATED 评论,翻译它们,并用翻译后的版本替换原始的代码段。logto translate create [languageCode]:这个命令创建了一个新的语言,使用指定的 [languageCode],并将所有代码段从默认语言(英语)翻译成新的语言。虽然翻译可能不完美,但它仍然是一个巨大的进步。我们现在可以专注于验证和改进翻译结果,而不是用于实际的翻译过程。
将 ChatGPT API 集成到我们的产品国际化工作流程中可以是一种强大的工具,但是需要仔细的规划和清晰的指示才能获得最好的结果。
如果你正在开发 AI 应用,用户身份验证是必不可少的。Logto 提供了一种简单而安全的方式来验证你的用户,并在你所有的应用中提供统一的用户身份系统,还为 ChatGPT 插件提供开箱即用的支持。欲了解更多信息,请查看我们的博客文章: