Skip to main content

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 分发等同于开放源码许可。

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)

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

Built distribution (wheel)

Table of built distributions (wheels) for fireplay-translation 0.2.1
File Interpreter ABI Platform
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.

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