使用 ChatGPT 進行長上下文 JSON 翻譯
了解如何使用最新的 ChatGPT 模型和 JSON 模式翻譯具有長上下文的 JSON 對象,並將輸出流回 JSON。
了解如何使用最新的 ChatGPT 模型和 JSON 模式翻譯具有長上下文的 JSON 文件,並將輸出流回 JSON。
介紹
距離我們上次的帖子 使用 ChatGPT 高效地進行國際化 已經有一段時間,當時我們展示了如何使用 ChatGPT 翻譯 JSON 對象。隨著模型的演進,翻譯能力已顯著提升,具有更長的上下文窗口、增加的最大輸出符號,以及像 JSON 模式這樣的新功能,使得開發者的體驗更佳。
增加的最大輸出符號
讓我們來看一看模型最後兩個版本的快速比較:
Model | Description | Context window | Max output tokens | Training data |
---|---|---|---|---|
gpt-4o-2024-05-13 | gpt-4o 目前指向此版本。 | 128,000 tokens | 4,096 tokens | Up to Oct 2023 |
gpt-4o-2024-08-06 | 最新支持結構化輸出的快照版本。 | 128,000 tokens | 16,384 tokens | Up to Oct 2023 |
最顯著的變化是最大輸出符號從 4,096 增加到 16,384,這非常適合翻譯場景,因為翻譯的輸出通常與輸入的長度相等或更長。同時,價格甚至下降了,相較於之前的 32K 符號模型(以前很昂貴)。
JSON 模式
顧名思義,當你想確保輸出為有效的 JSON 對象時,JSON 模式非常有用。對於新模型,你甚至可以使用 結構化輸出 定義輸出 JSON 對象的架構。
開始
初始化
我們將在這篇文章中使用 OpenAI 的 Node.js SDK v4.56.0 進行演示。隨時可以用其他任何你喜歡的方法或語言。
首先,我們需要初始化 OpenAI 客戶端:
我強烈建議使用流模式進行長上下文翻譯,因為這樣更高效,你不需要等很長時間才能獲得輸出(例如,一次請求需要一分鐘)。代碼看起來像這樣:
我們來寫一些提示
我們可以使用 system
角色來指導模型工作:
記得用你的目標語言代碼替換 "es"。根據我們的經驗,需要告訴模型一些指令以獲得更好的輸出和減少人為干預:
你可能會想知道為什麼我們需要最後的指令。這是來自 OpenAI 的解釋來自 OpenAI 的解釋:
使用 JSON 模式時,必須通過對話中的某些消息指令模型生成 JSON,例如通過系統消息。如果你沒有包括明確的指令來生成 JSON,模型可能會生成不斷的空白流,請求可能會一直運行直到達到符號限制。
有了上述指令,我們可以在接下來的消息中放入要翻譯的 JSON 對象,使用 user
角色。讓我們把我們目前擁有 的組合起來:
處理輸出
由於我們使用了流模式,我們需要以流式風格處理輸出。這裡是一個例子:
結論
就是這樣!隨著新 ChatGPT 模型的推出,JSON 翻譯的效率進一步提升,翻譯質量也得到了改善。希望這篇文章能讓你對 ChatGPT 和 JSON 翻譯有一些新看法。下次見!