Skip to main content

fireplay-translation

可复用的 Python 翻译路由包,支持同步和原生异步调用。调用方只依赖路由接口;默认实现以 qwen-mt-flash 为主模型,仅在主模型返回 429/RPM 限流时使用 qwen3.8-flash,并短暂熔断主模型,避免限流期间反复发送必然失败的请求。

安装与使用

从公司包仓安装构建后的 wheel,或在源码仓内执行:

uv build
pip install fireplay-translation
import os

from fireplay_translation import QwenConfig, create_qwen_translator

translator = create_qwen_translator(
    QwenConfig(
        api_key=os.environ["DASHSCOPE_API_KEY"],
        # 推荐换成与 API Key 同地域的 Model Studio 工作空间地址。
        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 等)使用原生 httpx.AsyncClient,不会阻塞事件循环:

import os

from fireplay_translation import QwenConfig, create_async_qwen_translator


async def main() -> None:
    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",
        )
        print(result.text)

长生命周期 Web 服务应在启动时创建一个异步 translator,在应用关闭时调用 await translator.aclose(),以复用连接池并正确释放资源。

路由语义

  • qwen-mt-flash 正常、超时、鉴权错误或服务异常时,错误原样返回,不静默换模型。
  • 只有 429 限流会触发 qwen3.8-flash,因此调用方能区分容量问题和配置/服务故障。
  • 收到 429 后按 max(Retry-After, rate_limit_cooldown_seconds) 暂停主路由,默认 60 秒。
  • Qwen3.8 回退请求关闭 thinking,并要求只返回译文。
  • TranslationResult.fallback_used、model 和 token 字段可用于监控成本与回退率。

扩展其他模型或厂商

同步后端实现 TranslationBackend,异步后端实现 AsyncTranslationBackend;分别注入 Translator 或 AsyncTranslator 即可,业务项目无需了解供应商协议:

from fireplay_translation import Translator

translator = Translator(
    MyPrimaryBackend(...),
    rate_limit_fallback=MyFallbackBackend(...),
)

异步扩展的 translate(TranslationRequest) 方法定义为 async def,路由调用方式为 await translator.translate(...)。

发布前建议依次执行:

uv run pytest
uv build

发布到公司包仓后,业务项目按普通版本依赖安装:

uv add fireplay-translation

Metadata

Release files for fireplay-translation 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fireplay-translation 0.2.0
File Size Uploaded Provenance
fireplay_translation-0.2.0.tar.gz 35.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fireplay-translation 0.2.0
File Interpreter ABI Platform
fireplay_translation-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.2 kB

Release files / fireplay_translation-0.2.0.tar.gz

Download URL fireplay_translation-0.2.0.tar.gz
Size 35.2 kB
Tags Source
SHA-256 checksum
How to use checksums
888e3640e98299181c75f32e3f90d9fbbb8109dce9bbfb520ac1450a9013c551
BLAKE2b-256 checksum
How to use checksums
7a3e68081d7b6e90948d2c0a72b898b625a8c22e5475b517b3c2e6a5be413f09
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.0-py3-none-any.whl

Download URL fireplay_translation-0.2.0-py3-none-any.whl
Size 10.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6b2148c726f3a8b0bdbea7dd95ff6df97f4e88cbaa20a52640eb81e90b18237d
BLAKE2b-256 checksum
How to use checksums
d4a97871babb1f338f2351816fbecd02835fb2b65b2406b87cf12431b31813b7
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.0

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page