LibreTranslate 自建翻译API完整指南:一条命令本地部署并调通接口
【免费下载链接】LibreTranslateFree and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup.项目地址: https://gitcode.com/GitHub_Trending/li/LibreTranslate
同事把内部文档站丢给我,说"加个中英互译吧"。商业接口这条路我当场否了:按字符计费,传的还是内部资料。我选的是 LibreTranslate——一个免费、开源、可自托管的机器翻译服务,装在自己的机器上就能提供翻译接口。一天后,这个站有了自己说了算的翻译API,翻译数据全程没出过内网。按下面的顺序走一遍,你也能把这套服务搭起来。
装之前先判断:三条标准决定要不要自建翻译API
先给结论:下面三条命中任意一条,就值得自建;一条都不沾,商业API的免费额度够你用了。
- 数据不能出网。涉及客户资料、内部文档时,很多公司对翻译数据隐私有明确要求。自建与商业服务最本质的差别就在这:翻译请求全程在你自己的机器上完成,文本不需要发给任何第三方服务器。
- 量大、长期跑。商业翻译服务按调用量或字符数计费,跑得越久账越大;一套免费机器翻译跑起来之后,边际成本只有电费,调用次数你自己说了算,也没有每分钟请求数的限制。
- 环境联不上外网。内网、机房、离线设备上,商业API直接不可用,只有本地部署的开源翻译服务能顶上。
一句实话:它的底层是 Argos Translate 开源模型,翻译质量略逊于大厂的商业引擎。对翻译质量要求高的场景,先用 Web 界面试译几段样文再决定。
十分钟完成翻译API本地部署(Docker 一条命令)
前提:机器上装了 Docker,内存至少 2GB(模型加载要吃内存)。
docker run -d -p 5000:5000 --name libretranslate libretranslate/libretranslate:latest首次启动会在后台下载语言模型,几十个语言对下来需要几分钟,所以第一次打开页面慢属正常。装完后浏览器打开http://localhost:5000,你得到的不只是API,还有一个完整的 Web 翻译界面——页面底部会直接展示当前请求的参数,可以照着拼 curl。
需要改代码或参与开发的话,克隆源码仓库git clone https://gitcode.com/GitHub_Trending/li/LibreTranslate,pip install -e .装好依赖后,python main.py启动的效果和 docker 一样。仓库里自带 docker-compose.yml,含健康检查配置,生产部署时可以直接参考。
敲通第一条请求:/translate、/detect 与 /languages
先用GET /health确认服务活着,返回{"status":"ok"}就可以开工。
发第一条翻译请求:
curl -X POST http://localhost:5000/translate -d "q=Hello world" -d "source=auto" -d "target=zh"source传auto时服务端会先做语言检测,所以响应里除了translatedText,还会有带置信度的detectedLanguage字段。
另外两个高频端点:
GET /languages:返回已加载语言及每种语言能翻译到的目标列表(targets)。翻译报错时先查它;POST /detect:只检测不翻译,传q参数,返回语言代码和置信度。
/translate同时支持 form 和 JSON 两种请求体,q传数组就是批量翻译,返回对应数组。完整参数不用背,服务自带/docs接口文档页,浏览器直接打开就能看。
把翻译API接进你的代码
import requests r = requests.post( "http://localhost:5000/translate", data={"q": "The weather is nice", "source": "auto", "target": "zh"}, ) print(r.json()["translatedText"])要翻译文件(txt、docx 等)则改用POST /translate_file:上传文件后,响应返回一个下载地址translatedFileUrl,取回的就是翻译好的文件。
开启 API 密钥的正确姿势
只你自己用,裸奔没问题;多人或多服务共用时,建议打开密钥认证,这样每个调用方可以单独限流。两步:
- 启动时加开关:docker 加
-e LT_API_KEYS=true,源码启动加--api-keys; - 先带
--api-keys启动一次让数据库建好,然后签发密钥:
python manage.py keys add 100 --key auto第一个数字是该密钥每分钟可请求的次数,--key auto自动生成,也可以--key 你自己的串自定义。调用时在请求里带上api_key参数即可。密钥库默认落在db/api_keys.db,docker 部署时把该目录挂成卷,避免重建容器丢密钥。
省内存:只加载你用的语言
默认行为会安装全部语言对,内存占用高、首启下载久。只用中英的话,只装这一对:
python main.py --load-only en,zh --host 0.0.0.0 --port 5000docker 部署则加环境变量LT_LOAD_ONLY=en,zh,效果相同。语言越少,启动越快,内存越省——先按需裁剪,确认质量后再扩展。
三个最常见的坑:现象、原因、解法
- 现象:启动后页面长时间打不开,或容器反复重启。原因:首次启动正在下载并安装语言模型,属正常现象。解决:耐心等;或提前用 scripts/install_models.py 脚本预装,docker 记得挂卷持久化模型目录。
- 现象:局域网里其他机器访问不了。原因:默认绑定 127.0.0.1,只监听本机。解决:docker 用
-p 5000:5000映射端口;源码启动加--host 0.0.0.0。 - 现象:翻译返回 "is not supported" 之类的 400。原因:你传的语言方向没有直接模型,并非所有语言两两之间都有。解决:先调
GET /languages看targets字段,挑现成的语言对。
GPU 加速、Prometheus 监控(--metrics)、翻译结果缓存(--translation-cache)、多实例负载均衡这些深水区,项目都留了对应参数,需要时查官方文档即可。眼下你要做的就一件事:跑通上面那条 curl 请求,然后打开浏览器访问/docs页面,对照着把每个参数试一遍——到这一步,这套自建翻译API 就彻底归你了。
【免费下载链接】LibreTranslateFree and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup.项目地址: https://gitcode.com/GitHub_Trending/li/LibreTranslate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考