翻译队列:批处理系统

本文解释了我們如何將翻譯排隊並進行批處理,以優化 AI API 的使用。

問題:按需翻譯成本高昂

按需求翻譯內容存在以下問題:

  • 速度慢:每次翻譯需要 1-2 秒

  • 成本高:每次請求都會產生 API 費用

  • 重複性:相同文本被多次翻譯

  • 阻塞性:用戶需要等待翻譯完成

我們需要更好的方法。

解決方案:排隊與批處理

排隊:收集翻譯請求

批處理:將多個翻譯一起處理

緩存:存儲結果以供重複使用

調度:定期處理隊列(非實時)

隊列結構

隊列文件

位置:磁盤上的 JSON 文件

格式:翻譯請求數組

字段:

  • text:要翻譯的英文文本

  • target_lang:語言代碼(hi、de、fr 等)

  • context:文本出現的位置(product、query、article)

  • priority:高/普通/低

添加到隊列

當翻譯缺失時:

queue_translation(text, target_lang, context="product")

去重:檢查是否已在隊列中

驗證:拒絕無效值

批處理

腳本

位置:scripts/web/process_translation_queue.py

調度:通過 cron 每 6 小時運行一次

鎖文件:防止並發運行

處理流程

1. 加載隊列:讀取所有待處理請求

2. 按語言分組:將相同語言的請求批量分組

3. 去重:移除批次內的重複項

4. 檢查緩存:跳過已翻譯的文本

5. 批量翻譯:發送到 DeepSeek API

6. 解析結果:從響應中提取翻譯

7. 保存到緩存:存儲在短語表中

8. 清空隊列:移除已處理的請求

批量翻譯

API 調用

模型:DeepSeek-V3(通過 Together.ai)

系統提示:已緩存(同一語言的所有批次相同)

用戶提示:可變(特定於批次)

格式:編號列表

示例:

Translate these 10 texts:
1. Mini PC
2. Thin Client
3. Compact Desktop
...

響應:

1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...

解析

按行號提取翻譯:

  • 移除數字前綴(1.、2. 等)

  • 按位置匹配原始文本

  • 驗證數量匹配

錯誤處理

API 失敗:使用備用 API 重試

解析失敗:返回原始文本

部分成功:保存成功的翻譯,將失敗的重新排隊

緩存策略

短語表

位置:每種語言的 JSON 文件

格式:{"English": "Translation"}

加載:啟動時加載一次

優勢:快速查找,無需 API 調用

緩存命中率

首次運行:低(一切都是新的)

後續運行:高(大多數文本已緩存)

優勢:降低 API 成本

保留規則

翻譯過程中,我們保留:

品牌名稱:Thinvent®、Intel®、AMD®

HTML 標籤:<p>、<br>、<strong>

URL:https://www.thinvent.in

SKU:Treo-N100-8-256

數字:8GB、256GB、4 核

實現方式:系統提示中的正則表達式模式

語言檢測

翻譯之前,檢查是否已翻譯:

方法:字符集分析

印地語:天城文腳本

中文:CJK 字符

阿拉伯語:阿拉伯語腳本

優勢:跳過不必要的翻譯

優先級處理

高優先級:產品名稱、功能(優先處理)

普通優先級:描述、文章(其次處理)

低優先級:舊內容、極少查看的內容(最後處理)

優勢:重要內容優先翻譯

調度

Cron 任務

頻率:每 6 小時

命令:python3 scripts/web/process_translation_queue.py

鎖文件:/tmp/process_translation_queue.lock

優勢:自動處理,無需手動干預

每週任務

文章:每週翻譯新文章

Babel 字符串:每週更新模板翻譯

腳本:scripts/web/translate_articles_weekly.sh

監控

隊列大小

跟蹤待處理請求:

  • 總請求數

  • 每種語言的請求數

  • 最舊請求的時間

警報:如果隊列增長過大

翻譯統計

跟蹤處理情況:

  • 每批次的翻譯數量

  • API 成功率

  • 緩存命中率

  • 處理時間

成本跟蹤

監控 API 使用情況:

  • 每天的請求數

  • 每次請求的 token 數

  • 每種語言的成本

參考

相關文章

總結

翻譯隊列實現了高效的批處理:

隊列:

  • 收集翻譯請求

  • 批次內去重

  • 優先級處理

  • 驗證和過濾

批處理:

  • 按語言分組

  • 發送到 DeepSeek API

  • 解析編號響應

  • 保存到短語表

緩存:

  • 翻譯前檢查緩存

  • 高緩存命中率

  • 降低 API 成本

調度:

  • 通過 cron 每 6 小時運行

  • 鎖文件防止並發運行

  • 每週文章翻譯

保留:

  • 品牌名稱

  • HTML 標籤

  • URL 和 SKU

這種方法通過批處理和緩存降低了 API 成本並提高了翻譯質量。


← 返回文檔索引