翻译队列:批量处理系统

本文介绍我们如何通过队列和批量处理来优化AI API使用。

问题:按需翻译成本高昂

按需翻译内容存在以下问题:

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

  • 成本高:每次请求都有API费用

  • 重复性:相同文本被多次翻译

  • 阻塞性:用户需要等待翻译完成

我们需要更好的解决方案。

解决方案:队列与批量处理

队列:收集翻译请求

批量:同时处理多个翻译

缓存:存储结果以供重用

调度:定期处理队列(非实时)

队列结构

队列文件

位置:磁盘上的JSON文件

格式:翻译请求数组

字段

  • text:待翻译的英文文本

  • target_lang:语言代码(hi、de、fr等)

  • context:文本出现位置(产品、查询、文章)

  • 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)

系统提示:已缓存(同一语言的所有批次相同)

用户提示:变量(批次特定)

格式:编号列表

示例

翻译以下10个文本:
1. Mini PC
2. Thin Client
3. Compact Desktop
...

响应

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

解析

按行号提取翻译:

  • 移除数字前缀(1.2.等)

  • 按位置匹配原始文本

  • 验证数量匹配

错误处理

API失败:使用备用API重试

解析失败:返回原始文本

部分成功:保存成功翻译,重新排队失败的请求

缓存策略

短语表

位置:每种语言的JSON文件

格式{"英文": "翻译"}

加载:启动时一次性加载

优势:快速查找,无需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使用:

  • 每日请求数

  • 每次请求的令牌数

  • 每种语言的成本

参考

相关文章

总结

翻译队列实现高效批量处理:

队列

  • ✅ 收集翻译请求

  • ✅ 批次内去重

  • ✅ 优先级处理

  • ✅ 验证和过滤

批量处理

  • ✅ 按语言分组

  • ✅ 发送到DeepSeek API

  • ✅ 解析编号响应

  • ✅ 保存到短语表

缓存

  • ✅ 翻译前检查缓存

  • ✅ 高缓存命中率

  • ✅ 降低API成本

调度

  • ✅ 通过cron每6小时运行

  • ✅ 锁文件防止并发运行

  • ✅ 每周文章翻译

保留规则

  • ✅ 品牌名称

  • ✅ HTML标签

  • ✅ URL和SKU

这种方法通过批处理和缓存降低了API成本,提高了翻译质量。


← 返回文档索引