翻译队列:批处理系统
本文解释了我們如何將翻譯排隊並進行批處理,以優化 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 成本並提高了翻譯質量。