AI摘要
写博客的人,迟早会遇到一个很现实的问题:中文文章写得好好的,海外读者看不懂;想做英文版,人工翻译太磨人;接第三方翻译接口,又怕账单一不小心起飞。
这也是很多 Typecho 用户折腾文章翻译插件的原因。像 我的SmartTranslate 插件,思路其实很舒服:在后台把文章翻译好,译文存进字段里,前台读者需要英文就切英文,需要中文就看原文。页面不用每次打开都实时翻译,API Key 也不会暴露在前端,体验上稳很多。
问题卡在另一头:翻译接口到底用谁?
OpenAI 当然能用,可很多个人站、技术博客、轻量项目,没必要一上来就把预算砸进去。Cloudflare Workers AI 这时候就挺香,它提供免费额度,还支持类似 OpenAI 的调用方式。对已经适配 OpenAI 接口的插件来说,改动往往没想象中那么大。
这篇就不绕弯子,直接讲清楚三件事:
- 从 Cloudflare 官方页面拿到 Account ID;
- 创建 Workers AI 可用的 API Token;
- 用 OpenAI 兼容格式测试 Cloudflare 免费 AI 大模型,并选一个更适合翻译场景的模型。
为什么从“翻译”这个场景切进去
翻译这件事特别适合拿来测试大模型接口。
原因很简单,结果好不好,肉眼就能看出来。你把一句中文技术描述丢进去,模型给出英文,通不通顺、术语准不准、有没有乱加意思,一眼就能判断。
比如 Typecho 插件介绍、主题说明、部署教程、开源项目文档,这些内容最怕机器翻得像说明书残片。句子没错,但味道不对,读者读两段就跑了。
所以这类文章翻译,我更建议用 OpenAI 兼容的大语言模型来处理,而不是只会逐句硬翻的接口。大模型能理解上下文,它知道“插件后台”“自定义字段”“前端切换”这些词放在技术文章里该怎么说。
这也是 Cloudflare Workers AI 有意思的地方:它不是只给你一个翻译 API,而是给你一批大模型。你可以拿它做翻译,也可以继续拿它做摘要、标题、SEO 描述、标签生成。对博客插件来说,一套接口能干不少事。
你要准备的东西
别准备太多,真的就这几样:
| 名称 | 用来干嘛 | 在哪里拿 |
|---|---|---|
| Cloudflare 账号 | 进入控制台,开 Workers AI | Cloudflare 官网注册 |
| Account ID | 拼接 API 地址 | Workers AI 的 REST API 页面 |
| API Token | 调用接口时鉴权 | Workers AI 页面一键创建 |
| 模型 ID | 告诉 Cloudflare 调哪个模型 | Workers AI Models 文档 |
| OpenAI 兼容 Base URL | 给插件或代码填写接口地址 | https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1 |
注意,Cloudflare 这里用的是 API Token,不是你账号密码,也不是全局 API Key。别把 Cloudflare 账号密码填到插件里,那个太危险了。
从 Cloudflare 官方页面拿 Account ID
打开 Cloudflare 控制台,登录之后,在左侧菜单里找到 Workers & Pages,再进入 Workers AI。
Cloudflare 官方的 REST API 入门页面给的流程很直接:进入 Workers AI 页面,点击 Use REST API,这个页面会把你需要的 Account ID 和创建 API Token 的入口放在一起。

进入 Workers AI 后,找到 REST API。
点进去之后,页面会出现 获取帐户 ID 。把里面的 Account ID 复制出来,先放到记事本里。
它长得大概像这样:
ACCOUNT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这串东西不是密钥,但也别随便公开。

创建 Workers AI API Token
同一个 REST API 页面里,找到 创建 Workers AI API令牌。
点进去之后,Cloudflare 会给你预填好一套权限。正常情况下,用这个模板创建就够了。
流程是这样:
- 点击
创建 Workers AI API令牌; - 确认生成后立刻复制保存。
API Token 只适合放在服务端、插件后台配置、环境变量里,别写到前端 JS,别塞进公开 GitHub 仓库。

创建成功后,页面会显示一串 Token。立刻复制,建议保存成下面这种格式:
CLOUDFLARE_ACCOUNT_ID=你的AccountID
CLOUDFLARE_API_TOKEN=你的APIToken
先用 REST API 测一下账号能不能跑
拿到 Account ID 和 API Token 后,别急着往 Typecho 插件里填。先用终端测一下,能跑通再说。
把下面命令里的 {ACCOUNT_ID} 和 {API_TOKEN} 换成你自己的。
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct-fp8 \
-X POST \
-H "Authorization: Bearer {API_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "system",
"content": "你是一个专业翻译助手,只输出英文译文,不解释。"
},
{
"role": "user",
"content": "请把这句话翻译成英文:这款 Typecho 插件可以在后台生成文章英文译文,并在前台切换显示。"
}
]
}'如果成功,会看到类似这样的返回:
{
"result": {
"response": "This Typecho plugin can generate English translations of articles in the backend and switch between versions on the frontend."
},
"success": true,
"errors": [],
"messages": []
}这里你重点看两个地方:
success是不是true;result.response里有没有正常译文。
再用 OpenAI 兼容格式测试
很多插件支持的是 OpenAI 接口。它们不是直接请求 /ai/run/模型名,而是请求这种地址:
/v1/chat/completionsCloudflare Workers AI 支持 OpenAI 兼容端点,文本生成走 /v1/chat/completions,所以你只需要把 OpenAI 的 Base URL 换成 Cloudflare 的地址。
Cloudflare 的 OpenAI 兼容 Base URL 是:
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1完整测试命令如下:
curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1/chat/completions \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--data '{
"model": "@cf/meta/llama-3.1-8b-instruct-fp8",
"messages": [
{
"role": "system",
"content": "你是一个专业的中英翻译助手。请保留技术术语,不要添加解释,只输出英文译文。"
},
{
"role": "user",
"content": "Cloudflare Workers AI 可以通过 OpenAI 兼容格式调用,这样很多现成插件只需要改 Base URL 和模型名称。"
}
],
"temperature": 0.2,
"max_tokens": 800
}'成功后,返回结构会更像 OpenAI:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Cloudflare Workers AI can be called through an OpenAI-compatible format, so many existing plugins only need to change the Base URL and model name."
},
"finish_reason": "stop"
}
]
}插件一般会读取:
choices[0].message.content只要这个字段有译文,OpenAI 兼容接口就算打通了。
填到 Typecho 翻译插件里该怎么写
不同插件后台字段名字可能不完全一样,但思路差不多。你只要认准这几项:
| 插件配置项 | 应该填写 |
|---|---|
| API 地址 / Base URL | https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1 |
| API Key | Cloudflare 创建的 API Token |
| 模型名称 / Model | @cf/zai-org/glm-4.7-flash |
| 接口类型 | OpenAI / OpenAI Compatible / Chat Completions |
| 温度 temperature | 0.6 左右 |
| 最大输出 max_tokens | 看文章长度,短文 800,长文 2000 起步 |
别把 /chat/completions 重复填进去。
有些插件让你填的是 Base URL,这时填:
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1有些插件让你填的是完整请求地址,才填:
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1/chat/completions这个地方很容易填错。填错后一般会出现 404、接口不存在、解析失败之类的问题。
下图是使用我的翻译插件的示例

推荐的翻译提示词
翻译文章别只丢一句“翻译成英文”。这样出来的东西不稳定,有时它会解释,有时它会补内容,有时它会把代码块也乱改。
可以用下面这个 system prompt:
你是一个专业的中英技术文章翻译助手。
请将用户提供的中文内容翻译成自然、准确、适合技术博客阅读的英文。
保留 Markdown 格式、代码块、链接、图片标记、表格结构和专有名词。
不要添加解释,不要输出原文,不要总结,只输出英文译文。
如果遇到不常见技术词,请保留准确表达。哪个模型性价比最高
这是重点,别一上来就选最大模型。
Cloudflare Workers AI 的模型定价会按模型变化。以当前官方定价表来看,常见几个模型大概是这样:
| 模型 | 适合场景 | 输入价格 | 输出价格 | 我的建议 |
|---|---|---|---|---|
@cf/zai-org/glm-4.7-flash | OpenAI 兼容接口、文章翻译、长文处理、多语言内容 | $0.06 / 百万 token | $0.40 / 百万 token | 主推,便宜、上下文长,翻译和技术文章处理都舒服 |
@cf/meta/llama-3.1-8b-instruct-fp8 | OpenAI 兼容接口、文章翻译、摘要 | $0.152 / 百万 token | $0.287 / 百万 token | 也能用,输出便宜些,但输入价比 GLM 高 |
@cf/meta/llama-3.1-8b-instruct | 通用文本生成、翻译 | $0.282 / 百万 token | $0.827 / 百万 token | 老方案能跑,但价格不香,而且官方已列入弃用名单 |
@cf/meta/llama-3.1-8b-instruct-awq | 便宜文本生成 | $0.123 / 百万 token | $0.266 / 百万 token | 旧项目临时可用,新项目不建议押它 |
@cf/meta/m2m100-1.2b | 专门翻译 | $0.342 / 百万 token | $0.342 / 百万 token | 翻译模型本身不错,但它不是标准 chat completions 插件最顺手的选择 |
如果你的目标是:Typecho 插件里直接用 OpenAI 格式调用 Cloudflare AI 大模型做文章翻译,我建议默认选:
@cf/zai-org/glm-4.7-flash它的优势比较实在:
- 支持 OpenAI 兼容调用,插件适配省事;
- 价格比普通
kimi2.6低不少; - 上下文窗口更适合处理长一点的文章段落;
- 翻译技术文章时,比小模型更稳,不容易把术语翻飞。
如果你只想做一个单独的“翻译 API”,不要求 OpenAI 兼容格式,那可以考虑:
@cf/meta/m2m100-1.2b它是专门的多语言翻译模型,请求参数是这样的:
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/m2m100-1.2b \
-X POST \
-H "Authorization: Bearer {API_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"text": "This Typecho plugin can generate English translations in the backend.",
"source_lang": "english",
"target_lang": "chinese"
}'它更像传统翻译接口,简单直接。但很多 OpenAI 插件默认不会按 text/source_lang/target_lang 这种格式发请求,所以你要么改插件代码,要么在中间套一层 Worker 做转接。
免费额度到底够不够用
Cloudflare Workers AI 免费额度按神经元计算。官方当前写法是每天 10,000 神经元 免费额度,超出后需要 Workers 付费计划。
很多人看到 神经元 会懵,其实你可以先粗暴理解成token。
博客翻译的用量一般没那么吓人。比如你不是每天翻译几百篇文章,只是写完文章后点一下“生成英文译文”,大概率够用。
真正要注意的是批量翻译。
假设你站里有 500 篇旧文章,一次性全点生成,肯定容易撞额度。更稳的办法是:
- 每次只处理 10 到 20 篇;
- 长文章按段落翻译,失败了只重试那一段;
- 已经生成过译文的文章不要重复请求;

常见报错怎么处理
401 Unauthorized
大概率是 API Token 错了。
检查这几个点:
- Token 有没有复制完整;
Authorization前面是不是Bearer;- Token 有没有被你多复制了空格;
- 自定义 Token 有没有 Workers AI 权限。
正确写法是:
Authorization: Bearer 你的API_TOKEN404 Not Found
多半是地址填错了。
OpenAI 兼容 Base URL 是:
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1完整 chat completions 地址是:
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/v1/chat/completions别把 {ACCOUNT_ID} 原样留下,也别漏掉 /accounts/。
模型不存在
模型名必须完整,包括前面的 @cf/。
正确:
@cf/meta/llama-3.1-8b-instruct-fp8错误:
llama-3.1-8b-instruct-fp8少了 @cf/meta/,Cloudflare 找不到。
插件返回空白
接口可能成功了,但插件没解析到字段。
你需要确认插件读取的是:
choices[0].message.content如果插件原来只兼容某些返回格式,可能要看一下插件代码里解析响应的地方。
文章发布前的小检查
配置好后,别急着发。拿一篇短文测一轮。
建议按这个顺序看:
- 中文标题有没有被翻得太硬;
- 代码块有没有被改;
- 链接有没有丢;
- 图片 Markdown 有没有保留;
- Typecho、Cloudflare、Workers AI、API Token 这些词有没有乱翻;
- 前台切换中英文时,页面布局有没有炸。
翻译功能的价值不在“生成一下就完事”,而是让读者真的能读。尤其技术文章,术语和代码一乱,可信度会掉得很快。
参考资料
- Cloudflare Workers AI REST API 官方文档:https://developers.cloudflare.com/workers-ai/get-started/rest-api/
- Cloudflare Workers AI OpenAI 兼容接口文档:https://developers.cloudflare.com/workers-ai/configuration/open-ai-compatibility/
- Cloudflare Workers AI 定价文档:https://developers.cloudflare.com/workers-ai/platform/pricing/
- Cloudflare
@cf/meta/llama-3.1-8b-instruct-fp8模型文档:https://developers.cloudflare.com/workers-ai/models/llama-3.1-8b-instruct-fp8/ - Cloudflare
@cf/meta/m2m100-1.2b翻译模型文档:https://developers.cloudflare.com/workers-ai/models/m2m100-1.2b/
结尾
翻译插件真正好用的地方,不是让博客看起来“支持国际化”四个字,而是让文章多一条被读到的路。
Cloudflare Workers AI 这套方案的舒服点就在这:不用自己买服务器,不用折腾 GPU,也不用把插件大改一遍。拿到 Account ID,创建 API Token,换成 OpenAI 兼容 Base URL,再选一个合适的模型,文章翻译这条线基本就能跑起来。