本網站使用 Kohei Koyanagi 開發的軟體自動翻譯為多種語言。為確保準確,請參考原始 英文 版本。

這個博客如何被翻譯成42種語言

Splync博客有42種語言

這是我為Splync寫的第23篇博客文章,這是一個為伴侶、朋友和家庭共享的預算追蹤器。你可能會好奇,我如何能在身為一名單獨工程師的情況下,將每篇帖子發佈到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更具創意,但也更不可預測。低溫度讓AI更貼近原意,但有時顯得僵硬。經過多次試驗,我找到了合適的平衡點:足夠低以確保準確性,但不至於讓文本變得毫無生氣。經過多次實驗,我認為溫度=0.8最適合這個博客的需求:足夠準確以忠實於英文原版,但又足夠靈活以讓其他語言聽起來自然。

ChatGPT 5.x不支持溫度設定

較新的模型,如ChatGPT 5和5.1,已不再支持溫度設置——這個參數被移除,取而代之的是推理和努力等概念,影響模型的思考方式,而不是它的“創造性”程度。換句話說,ChatGPT 4o給我一個可以調整翻譯風格的實體刻度盤,但5.x系列則完全採用不同的理念。如果您隨意地要求最新的模型“以溫度=0.8翻譯這個”,它可能試圖模仿這種設置,但內部已經沒有這個參數。模型只是大致估計了這個意圖。隨著OpenAI繼續更新其模型,我可能會在某天調整我的翻譯流程。目前,ChatGPT 4o仍是我進行多語言翻譯的選擇——不僅因為它能很好地理解多種語言的上下文,還因為它的API定價對我這樣的單獨開發者來說是合理的。事實上,4o可能會成為OpenAI歷史上最受喜愛的模型之一。

OpenAI API的工作人員

OpenAI API的一個驚人之處——與直接在瀏覽器中使用ChatGPT相比——是您可以同時使用多個ChatGPT“工作人員”。當我發送42種語言的翻譯請求時,我並不是一個一個慢慢地發送。相反,API可以同時處理多個請求,就像我突然雇了一整房間的翻譯人員同時開始工作。我的Python腳本像一條小生產線一樣處理工作流程:準備英文文章,發送請求,等待回應,並將結果處理成JSON文件。與此同時,OpenAI的伺服器會同時運行多個模型實例,每個都同時翻譯不同的語言。這是ChatGPT網站或應用程式無法做到的——那些介面一次只給你一個模型,一次對話,一次任務。但使用API,您可以根據腳本的允許範圍擴展您的負載。對於我這樣的單獨開發者來說,這就像擁有一支由最聰明且無自我的助手組成的小團隊。這部分取決於網速,但我通常設置工作人員=12。

我如何將博客多語言化:洗碗

我曾經在京都大學讀數學時,在學生食堂做洗碗工。儘管工資大約是每小時5美元,但在經過幾個小時——有時是幾天的深度智力集中後,我總是喜歡這種重複的手工工作。後來,當我在北海道的大蒜工廠工作時,我的工作就是簡單地拋光成千上萬的白色蒜頭,讓它們在傳送帶上看起來更亮。每天八小時——全神貫注,節奏穩定。這種感覺奇異地令人滿足。現在,回到這些記憶中,我目前正從事智力工作——編寫軟體、設計系統、撰寫這些文章。但平衡沒有改變。如果你問我如何獨自將博客文章以42種語言發佈,誠實的答案是:我靠洗碗來完成。