Splync博客支持42种语言
这是我为Splync撰写的博客的第23篇文章。Splync是一款用于夫妻、朋友和家庭的共享预算跟踪器。您可能会好奇,我如何在作为一名独立工程师的情况下,将每篇文章发布成42种语言。如每篇文章顶部的免责声明所言,这个网站是通过我自己开发的软件自动翻译成多种语言的。可以明确的是:我没有用英语以外的任何语言手动撰写过哪怕一个句子。因此,当意义的准确性至关重要时,我恳请读者参阅原版英语。不过,在经过多轮试验和错误的翻译管道改进后,我相信整体翻译质量相当不错。在这篇文章中,我将分享我的软件如何使Splync博客实现多语言化。
Python和OpenAI API的协作
我总是从用简单英语撰写每篇文章开始,包括与SEO相关的元数据。之后,我的Python脚本将英文文本发送到OpenAI API,附上提示和一个小型参考文件。在OpenAI的服务器上,ChatGPT-4o读取请求并返回翻译后的文章——例如阿拉伯语版本——以JSON格式呈现。一旦我的MacBook收到该翻译,脚本会立即发送另一个请求,这次请求孟加拉语。脚本自动循环遍历所有42种目标语言。过程结束时,我的计算机拥有42个翻译后的JSON文件。另一个Python脚本随后将每种翻译嵌入HTML模板,并在不到一秒钟内生成42个HTML文件。所有文件上传到托管这个博客的服务器上,每个语言版本放入其自己的目录中。最后,一个服务器端Python脚本更新文章索引和“下一篇文章”链接,以确保每个语言的导航保持一致。整个过程通常在5分钟内完成,当我需要进行修改时,可以使用服务器端Python脚本同时更新多个HTML文件。
什么是API
如果您不熟悉技术术语,您可能会好奇我的计算机最初如何与OpenAI的服务器“对话”。答案是所谓的API,应用程序编程接口。您可以将API视为两个程序之间的消息窗口:一个程序发送请求,另一个程序返回响应。例如,我的Python脚本发送类似“请将这篇文章翻译成德语”的信息。OpenAI通过API接收该信息,准备翻译并返回结果。这就像在餐馆点菜:您告诉服务员您想要什么,厨房准备好,然后服务员将其送到您的桌上。而您需要服务员的原因是,因为您不会走进厨房,也不会直接与厨师交谈——您不知道厨房如何运作,也不需要知道。您可能对服务员说“能来个芝士汉堡吗?”,而服务员可能以完全不同的格式大喊“订单已上!T21,奇瓦瓦!”。API发挥着同样的作用。它连接两个不同的系统,无需它们了解彼此的内部语言或工作流程。
为什么我需要OpenAI API
现在我们知道API是什么了,这是我对这个博客依赖它的原因。实际情况是,我确实知道如何自己“与”ChatGPT交谈——但我有42种语言需要处理。叫42次服务员是很繁琐的(程序会跳过将英语翻译成英语,但仍将文本转换为JSON)。使用OpenAI API允许我的Python脚本自动发送所有这些请求,节省了我从重复工作中解脱出来,让我可以专注于其他事情。我是一个独立开发者,所以我需要尽可能高效地利用我的时间。每当我看到一个重复性强且有明确规则的任务时,我就会自动化它。结果通常是一个快上百万倍且完全无误的过程。这就是为什么通过API实现自动化至关重要——它让我的脚本能够即时且可靠地下达所有42个“订单”。
为什么是42种语言
从技术上讲,我可以添加更多语言;在我洗碗时,它只需多花几分钟运行。但我个人喜欢42这个数字,这是道格拉斯·亚当斯的书中关于生命、宇宙和一切的终极问题的答案。除了对42的喜爱,添加非常小众的语言可能有风险,因为对于训练数据有限的语言,AI翻译可能变得不太可靠。
ChatGPT 4o的温度
当我第一次尝试这种多语言翻译方法时,结果还不错,但不完美。有些句子翻译错误,过于字面或在某些语言中稍显误导。我也担心无意中生成在特定文化背景下可能不合适或不敏感的表达。当然,我也不想让我的翻译听起来像机器一样机械。影响翻译质量的关键因素之一是温度设置——一个控制AI应该多“有创意”或多“严格”的参数。高温度会让AI更具想象力,但也更不可预测。低温度会让它更接近原意,但有时可能感觉僵硬。经过众多试验,我找到适合这个博客需求的最佳平衡:低温度确保准确性,但不能太低以至于文本失去活力。经过多次实验,我觉得温度=0.8是最佳选择:足够准确以忠实于英文原作,同时足够灵活以在其他语言中显得自然。
ChatGPT 5.x不支持温度
更新的模型如ChatGPT 5和5.1完全不再支持温度设置——这个参数被移除,并被推理和努力等概念取代,它们影响的是模型的思考方式而不是“创造力”。换句话说,ChatGPT 4o给了我一个可以用于微调翻译风格的物理旋钮,而5.x系列则完全是另一种哲学。如果您随便对最新的模型说“用温度=0.8来翻译”,它可能会尝试表现得像这样的设置仍然存在,但内部该参数已消失。模型只是近似地实现意图。随着OpenAI不断更新他们的模型,我可能会在某天调整我的翻译管道。目前,ChatGPT 4o仍然是我进行多语言翻译的首选——不仅因为它在多种语言之间上下文理解很好,而且因为它的API定价对我这样的独立开发者来说是合理的。事实上,4o可能会成为OpenAI历史上最受欢迎的模型之一。
OpenAI API的工作原理
与直接在浏览器中使用ChatGPT相比,OpenAI API的一个惊人之处在于,您可以同时使用多个ChatGPT“工作单元”。当我为42种语言发送翻译请求时,我不是一个一个慢慢地发送。相反,API能并行处理多个请求,就像我突然雇了一屋子的翻译人员同时开始工作一样。我的Python脚本将流程处理得像一个小型生产线:准备好英文文章,发送请求,等待响应,并将结果处理成JSON文件。同时,OpenAI服务器同时运行多个模型实例,每个都在并行翻译不同的语言。这是ChatGPT网站或应用无法做到的——这些界面一次只给您一个模型、一个对话、一个任务。但有了API,您可以根据脚本的允许范围扩大工作负荷。对于像我这样的独立开发者来说,这感觉就像拥有了一小队最聪明且毫无自我的助手。部分取决于网速,但我通常设置工作单元=12。
我通过洗碗实现博客多语言化
我在京都大学学习数学时,曾在学生食堂做洗碗工。尽管薪水大约是5美元每小时,我一直喜欢在经过几小时——有时几天——的深度智力集中后,从事重复性的体力劳动。后来,当我在北海道的一家大蒜加工厂工作时,我的工作就是抛光成千上万个白色大蒜球,让它们在传送带上看起来更亮。每天八小时——全神贯注,节奏稳定。这是种奇特的满足感。现在,回到这些回忆,我当前从事的是智力工作——编写软件、设计系统、撰写这些文章。但平衡没有改变。如果您问我如何独自将博客文章发布成42种语言,诚实的回答是:我通过洗碗做到的。