feat(translate): 加星火 Spark(Lite)作为优先翻译引擎

- 新增 app/services/translation/spark.py: OpenAI 兼容协议客户端,
  URL = https://spark-api-open.xf-yun.com/v1/chat/completions,
  鉴权 = Bearer <APIPassword>, model = lite(默认)/generalv3.5/4.0Ultra 可切换
- service.py 引擎链路调整为: spark → tencent(配额)→ maas → agnes → local。
  优先级降序: spark 配了 key 就用它,失败再走 tencent(继续吃配额,不绕过)。
  要完全绕开 tencent,把 TENCENTCLOUD_SECRET_ID 留空即可。
- 配置: 新增 SPARK_API_PASSWORD / SPARK_BASE_URL / SPARK_MODEL / SPARK_INTERVAL_SEC
  (留空 SPARK_API_PASSWORD = 走原 tencent 主链路,向后兼容)
- 缓存白名单 / 配额计数逻辑保持原行为,只把 spark 加入允许缓存的引擎集合
This commit is contained in:
Mavis
2026-06-10 23:14:20 +08:00
parent 759eefabc3
commit b27643123e
4 changed files with 172 additions and 20 deletions

View File

@@ -35,6 +35,16 @@ TENCENT_TMT_QUOTA_BUFFER=0.05
# 单次请求最大字符
TENCENT_TMT_MAX_CHARS_PER_REQ=4500
# ===== 星火 Spark(优先翻译;Lite 免费)=====
# 留空 = 不启用星火(直接走腾讯 TMT)
# 控制台 https://console.xfyun.cn/ → 应用 → Spark Lite → "HTTP 服务接口认证信息" → APIPassword
SPARK_API_PASSWORD=your_spark_api_password
SPARK_BASE_URL=https://spark-api-open.xf-yun.com/v1
# 模型:lite(默认,免费) / generalv3 / generalv3.5 / 4.0Ultra
SPARK_MODEL=lite
# 单次调用间隔(秒),避免被限速
SPARK_INTERVAL_SEC=1.0
# ===== 本地翻译(降级) =====
# 不启用就留空:不会用本地模<E59CB0>?LOCAL_TRANSLATE_ENABLED=false
LOCAL_TRANSLATE_MODEL=nllb-200-distilled-600M