fireplay-translation
可复用、可扩展的 Python 翻译路由包,支持同步和原生异步调用。
默认路由使用 qwen-mt-flash;只有主模型返回 HTTP 429/RPM 限流时才切换到 qwen3.8-flash。收到限流后会短暂熔断主模型,避免在限流窗口内重复发送必然失败的请求。鉴权、超时和普通服务错误不会被备用模型隐藏。
安装
从公共 PyPI 安装:
pip install fireplay-translation
使用 uv:
uv add fireplay-translation
包要求 Python 3.10 或更高版本。
同步调用
import os
from fireplay_translation import QwenConfig, create_qwen_translator
translator = create_qwen_translator(
QwenConfig(
api_key=os.environ["DASHSCOPE_API_KEY"],
# 按 API Key 所在地域覆盖此地址。
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
)
result = translator.translate(
"Hello, world",
source_language="auto",
target_language="zh-CN",
)
print(result.text)
print(result.model, result.fallback_used)
异步调用
FastAPI、Starlette、aiohttp 等异步服务应复用原生异步客户端,避免阻塞事件循环:
import os
from fireplay_translation import QwenConfig, create_async_qwen_translator
async def translate_once() -> str:
async with create_async_qwen_translator(
QwenConfig(api_key=os.environ["DASHSCOPE_API_KEY"])
) as translator:
result = await translator.translate(
"Hello, world",
source_language="auto",
target_language="zh-CN",
)
return result.text
长生命周期服务应在启动时创建一个 translator,在关闭时调用 await translator.aclose(),从而复用并正确释放连接池。
路由语义
qwen-mt-flash成功时直接返回结果。- 只有 HTTP 429 会触发
qwen3.8-flash。 - 限流熔断时间为
max(Retry-After, rate_limit_cooldown_seconds),默认至少 60 秒。 - 主模型的非 429 错误原样返回。
- 主模型限流且备用模型失败时,
TranslationFallbackError保留两次异常。 TranslationResult暴露实际模型、是否兜底、兜底原因和上游 token 用量。
完整契约见 Python 公共 API 和 429 兜底决策。
扩展其他模型或供应商
同步后端实现 TranslationBackend,异步后端实现 AsyncTranslationBackend,再注入 Translator 或 AsyncTranslator:
from fireplay_translation import Translator
translator = Translator(
MyPrimaryBackend(...),
rate_limit_fallback=MyFallbackBackend(...),
)
架构和资源生命周期约定见 翻译路由架构。
开发
uv sync --frozen
uv run pytest
uv build
发布新版本前必须遵循 公共 PyPI 发布手册,不要从包含旧版本制品的 dist/ 目录直接批量上传。
文档
项目知识索引 是文档入口和权威地图。项目文档使用稳定 ID、生命周期状态和生成式清单管理。先把 PROJECT_DOC_STEWARD_SKILL 指向本机安装的 project-doc-steward 目录,再执行:
uv run "$PROJECT_DOC_STEWARD_SKILL/scripts/inventory_documents.py" . --sync-ai-policy
uv run "$PROJECT_DOC_STEWARD_SKILL/scripts/validate_metadata.py" . --check
分发与许可
- PyPI:fireplay-translation
- 许可证元数据:
Proprietary
在项目所有者明确授权前,不要假定公共 PyPI 分发等同于开放源码许可。
Metadata
Release files for fireplay-translation 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fireplay_translation-0.2.1.tar.gz | 45.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fireplay_translation-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.8 kB
Release files / fireplay_translation-0.2.1.tar.gz
| Download URL | fireplay_translation-0.2.1.tar.gz |
|---|---|
| Size | 45.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92525e7c0fabb3651ff24a3752a81a8bef61f479a1cd985824539287c4b80f0b
|
|
BLAKE2b-256 checksum How to use checksums |
4585ae2fea2b157a00f6e18d8e75e51aea7bf5c6ae81d7eebde3de4950ef90ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / fireplay_translation-0.2.1-py3-none-any.whl
| Download URL | fireplay_translation-0.2.1-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
44a753b5d768c3c60f02624c1dc1216e2f5ced43686ffd7db60b48044bedfc65
|
|
BLAKE2b-256 checksum How to use checksums |
d5b5d33147e56d12a3f9d7ef8bf44c5baf188fd8701e0744822bf6d02b1ebfd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for fireplay-translation 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.