说实话,第一次看到 OpenAI 账单的时候我整个人都傻了。一个月 200 多美元,就因为做了个小项目测试了几天 API。那时候我就在想:有没有免费或者便宜点的替代方案? 后来在研究 Cloudflare 的边缘计算功能时,偶然发现了 Workers AI。测试了一周后发现,免费额度对个人开发者来说真的够用。今天就把完整的使用方法分享给你。
Workers AI 是什么?为什么值得关注?
简单来说,Workers AI 就是 Cloudflare 推出的无服务器 AI 推理服务。你不需要自己买 GPU、不需要管服务器,写几行代码就能调用 Llama、Mistral 这些开源大模型。 最关键的是三点:
- 每天 10,000 Neurons 免费额度
- 实测大概能处理几百次对话,个人项目完全够用
- 用 Llama 3.1-8B 模型,我测试了 1000 次简单对话,消耗了大约 8000 Neurons
- 付费也很便宜: $0.011/1000 Neurons
- 比 OpenAI GPT-3.5 便宜 60-70%
- 比 GPT-4 便宜 90% 以上
- 全球边缘网络加速
- Cloudflare 有 300+ 个节点
- 响应速度比很多云服务商快
和其他方案对比一下
你可能会问:免费的东西能好用吗?我整理了个表格对比:
| 方案 | 免费额度 | 付费价格 | 响应速度 | 模型选择 |
|---|---|---|---|---|
| Workers AI | 10,000 Neurons/天 | $0.011/1k Neurons | 快(边缘节点) | 50+ 开源模型 |
| OpenAI API | $5 新用户(一次性) | $0.002/1k tokens(GPT-3.5) | 中等 | GPT 系列 |
| HuggingFace | 有限免费调用 | 按模型计费 | 较慢 | 海量模型 |
| 自建服务器 | - | GPU租用成本高 | 取决于配置 | 任意模型 |
| 什么时候适合用 Workers AI? |
- ✅ 个人项目、原型验证、学习实验
- ✅ 中小规模生产应用(QPS < 300)
- ✅ 对成本敏感的初创项目 什么时候不太合适?
- ⚠️ 大规模批量处理(每天几十万次调用)
- ⚠️ 对延迟极度敏感的实时应用(需要 < 100ms 响应)
- ⚠️ 需要最新 GPT-4 级别模型的场景
免费额度够用吗?我帮你算一笔账
这个"Neurons"是 Cloudflare 自己定义的计费单位,刚开始我也看懵了。简单理解就是: Neurons = (输入 tokens + 输出 tokens) × 模型系数 不同模型的系数不一样:
- Llama 3.1-8B: 系数约 0.8
- Llama 3.1-70B: 系数约 3.5
- Mistral 7B: 系数约 0.7 实际能用多少次? 我实测了一下,用 Llama 3.1-8B 处理中文对话:
- 简单问答(100 字以内): 每次消耗 5-8 Neurons
- 长文本摘要(1000 字输入): 每次消耗 30-50 Neurons
- 代码生成(500 行代码): 每次消耗 20-40 Neurons 按这个消耗量算,每天 10,000 Neurons 大概能处理:
- 1000-2000 次简单对话
- 200-300 次长文本处理
- 250-500 次代码生成 老实讲,对个人开发者来说真的很够用了。我现在用 Workers AI 跑了个小机器人,每天处理几百条消息,完全在免费额度内。
如果超了免费额度怎么办?
会自动转成付费模式,$0.011/1000 Neurons。 我算了一下,就算超了,成本也很低:
- 假设你每天用 50,000 Neurons(是免费额度的 5 倍)
- 超出部分: 40,000 Neurons
- 费用: 40,000 / 1000 × <math xmlns="http://www.w3.org/1998/Math/MathML"> 0.011 = ∗ ∗ 0.011 = ** </math>0.011=∗∗0.44/天**
- 一个月也就 ** <math xmlns="http://www.w3.org/1998/Math/MathML"> 13 左右 ∗ ∗ 对比 O p e n A I : 相同调用量可能要 13 左右** 对比 OpenAI:相同调用量可能要 </math>13左右∗∗对比OpenAI:相同调用量可能要50-100,Workers AI 确实便宜不少。
快速上手:三种方式调用 Workers AI
前置准备很简单:
- 注册 Cloudflare 账号(免费)
- 安装 Node.js(如果用方式二、三) 接下来我介绍三种调用方式,从简单到进阶,你可以根据自己需求选择。
方式一:最简单 - 直接用 REST API
这是最快的体验方式,连代码都不用写,用 curl 命令就能测试。
第一步:获取 API Token 和 Account ID
- 登录 Cloudflare,访问 dash.cloudflare.com
- 地址栏会显示
https://dash.cloudflare.com/xxxxxxxxx,这串xxxxxxxxx就是你的 Account ID,复制保存好 - 点击右上角头像 → My Profile → API Tokens
- 点击"Create Token" → 找到"Workers AI"模板 → "Use template"
- 继续到最后,会生成一个 Token,这个只显示一次,一定要保存好 我当时找这个 Token 位置翻了好久,所以专门截了图(如果你也找不到,可以搜 Cloudflare API Tokens 页面)。
第二步:测试调用 打开终端,运行这个命令(记得替换你的 Account ID 和 Token):
bash
curl https://api.cloudflare.com/client/v4/accounts/{你的Account_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct \
-H "Authorization: Bearer {你的API_Token}" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "system", "content": "你是一个友好的 AI 助手"},
{"role": "user", "content": "用一句话介绍一下 Cloudflare Workers AI"}
]
}'
如果看到返回类似这样的 JSON,就说明成功了:
json
{
"result": {
"response": "Cloudflare Workers AI 是一个无服务器的 AI 推理平台..."
},
"success": true
}
第一次成功返回的时候,我激动得截了个图发朋友圈😂 常见错误处理:
- 错误 7003: Token 或 Account ID 填错了,检查一下是否完整复制
- 错误 10000 : 模型名字写错了,注意是
@cf/meta/llama-3.1-8b-instruct,不要漏掉@cf/ - 超时: 首次调用可能慢一点(冷启动),等 10 秒左右,后续就快了
方式二:推荐 - 用 Workers + Wrangler 部署
这是官方推荐的方式,好处是可以部署成一个永久可用的 API,而且配置管理更方便。
第一步:安装 Wrangler CLI
bash
npm install -g wrangler
然后登录你的 Cloudflare 账号:
bash
wrangler login
会自动打开浏览器让你授权,点同意就行。
第二步:创建 Worker 项目
bash
npm create cloudflare@latest my-ai-worker
会问你几个问题,按这样选择:
- Select a project type: "Hello World" Worker
- Do you want to use TypeScript? 看你喜欢,我选的 No(用 JavaScript)
- Do you want to use git? Yes
- Do you want to deploy? 先选 No,测试好再部署
第三步:配置 Workers AI 绑定
进入项目目录,编辑 wrangler.toml 文件,在最后加上这几行:
toml
[ai]
binding = "AI"
这样就可以在代码里用 env.AI 访问 Workers AI 服务了,不需要手动传 Token。
第四步:写代码
编辑 src/index.js(或 index.ts),把内容改成这样:
javascript
export default {
async fetch(request, env) {
// 处理 CORS(如果你要从网页调用)
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST',
'Access-Control-Allow-Headers': 'Content-Type',
},
});
}
// 只接受 POST 请求
if (request.method !== 'POST') {
return new Response('Method not allowed', { status: 405 });
}
try {
// 解析请求
const { messages } = await request.json();
// 调用 AI 模型
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
messages: messages || [
{ role: 'user', content: 'Hello!' }
]
});
// 返回结果
return new Response(JSON.stringify(response), {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
});
} catch (error) {
return new Response(JSON.stringify({ error: error.message }), {
status: 500,
headers: { 'Content-Type': 'application/json' },
});
}
},
};
第五步:本地测试
bash
wrangler dev
会启动一个本地服务器,通常是 http://localhost:8787。 用 curl 测试一下:
bash
curl http://localhost:8787 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "介绍一下你自己"}
]
}'
如果返回正常,就可以部署了。
第六步:部署到生产环境
bash
wrangler deploy
部署成功后,会给你一个 *.workers.dev 域名,比如:
arduino
https://my-ai-worker.your-name.workers.dev
这就是你的 AI API 地址了,可以从任何地方调用。 我现在用这个方式跑了个小客服机器人,完全免费,响应速度也不错(通常 1-3 秒)。
方式三:用 OpenAI SDK 无缝迁移
如果你之前用的是 OpenAI API,现在想换成 Workers AI,这个方法最方便 - 代码几乎不用改。 Workers AI 提供了 OpenAI 兼容的端点,只需要改一下 baseURL 就行。
javascript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.CLOUDFLARE_API_TOKEN, // 用你的 Cloudflare Token
baseURL: `https://api.cloudflare.com/client/v4/accounts/${process.env.ACCOUNT_ID}/ai/v1`,
});
// 和 OpenAI 一模一样的调用方式
const chatCompletion = await client.chat.completions.create({
model: '@cf/meta/llama-3.1-8b-instruct', // 换成 Workers AI 的模型名
messages: [
{ role: 'system', content: '你是一个友好的 AI 助手' },
{ role: 'user', content: 'Hello!' }
],
});
console.log(chatCompletion.choices[0].message.content);
注意事项:
apiKey用 Cloudflare 的 API TokenbaseURL改成 Workers AI 的端点model改成 Workers AI 支持的模型名(前面要加@cf/) 我之前有个 Next.js 项目用的 OpenAI,迁移到 Workers AI 只花了 10 分钟,改了这三个地方就行。
能用哪些模型?怎么选?
Workers AI 现在支持 50 多个模型,我挑几个常用的介绍一下。
文本生成模型(最常用)
| 模型 | 参数量 | 特点 | 推荐场景 | 模型 ID |
|---|---|---|---|---|
| Llama 3.1 | 8B | 平衡性好,速度快 | 日常对话、客服、摘要 | @cf/meta/llama-3.1-8b-instruct |
| Llama 3.1 | 70B | 质量更高,慢一点 | 复杂推理、长文本 | @cf/meta/llama-3.1-70b-instruct |
| Llama 4 Scout | 17B(MoE) | 多模态(图文) | 图像理解+文本 | @cf/meta/llama-4-scout |
| Mistral 7B v0.2 | 7B | 32k 上下文 | 长文档分析 | @cf/mistral/mistral-7b-instruct-v0.2 |
| DeepSeek-R1 | 32B | 推理能力强 | 数学、代码、逻辑 | @cf/deepseek/deepseek-r1-distill-qwen-32b |
| OpenAI GPT-OSS | 120B/20B | Cloudflare 独家 | 接近 GPT-4 级别 | @cf/openai/gpt-oss-120b |
| 我的选择建议: |
- 初次尝试用 Llama 3.1-8B
- 响应快(1-2 秒)
- 质量够用,不输 GPT-3.5
- 免费额度消耗少
- 要求高一点用 Llama 3.1-70B 或 DeepSeek-R1
- 推理能力更强
- 生成质量接近 GPT-4
- 就是慢一点(3-5 秒),消耗也多 3-4 倍
- 长文档分析用 Mistral 7B v0.2
- 支持 32k 上下文窗口(Llama 3.1 只有 8k)
- 适合处理长论文、长代码
其他实用模型
- 图像生成 : Stable Diffusion XL -
@cf/stabilityai/stable-diffusion-xl-base-1.0 - 语音识别 : Whisper -
@cf/openai/whisper - 文本嵌入 : BGE-base -
@cf/baai/bge-base-en-v1.5(做向量搜索用) - 内容安全 : Llama Guard 3 -
@cf/meta/llama-guard-3-8b(检测有害内容) 完整模型列表可以看官方文档: developers.cloudflare.com/workers-ai/...
实战案例:三个真实例子
案例1:构建智能问答 API(最简单)
场景: 给你的博客或文档站加一个 AI 客服。 完整代码(基于方式二):
javascript
export default {
async fetch(request, env) {
// 允许跨域
const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type',
};
if (request.method === 'OPTIONS') {
return new Response(null, { headers: corsHeaders });
}
try {
const { question } = await request.json();
// 你可以在 system 提示词里加上你网站的背景知识
const messages = [
{
role: 'system',
content: '你是一个技术博客的 AI 助手,主要回答关于 Web 开发、AI 应用的问题。回答要简洁、友好。'
},
{
role: 'user',
content: question
}
];
const response = await env.AI.run(
'@cf/meta/llama-3.1-8b-instruct',
{ messages }
);
return new Response(
JSON.stringify({ answer: response.response }),
{ headers: { ...corsHeaders, 'Content-Type': 'application/json' } }
);
} catch (error) {
return new Response(
JSON.stringify({ error: '处理失败,请稍后重试' }),
{ status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } }
);
}
}
};
前端调用:
javascript
async function askQuestion(question) {
const response = await fetch('https://your-worker.workers.dev', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ question })
});
const data = await response.json();
return data.answer;
}
// 使用
const answer = await askQuestion('Workers AI 怎么收费?');
console.log(answer);
成本估算: 假设每天有 200 个用户提问,每次对话消耗 10 Neurons,总共 2000 Neurons,完全在免费额度内。
案例2:批量文本摘要生成
场景: 你有一堆文章需要生成摘要,比如 RSS 订阅、新闻抓取。
javascript
async function generateSummary(text, env) {
const messages = [
{
role: 'system',
content: '你是一个专业的文本摘要助手。请将用户提供的文章总结成 2-3 句话,突出核心观点。'
},
{
role: 'user',
content: `请总结以下文章:\n\n${text}`
}
];
const response = await env.AI.run(
'@cf/meta/llama-3.1-8b-instruct',
{
messages,
max_tokens: 150 // 限制输出长度,节省 Neurons
}
);
return response.response;
}
// 批量处理
export default {
async fetch(request, env) {
const { articles } = await request.json(); // 假设传入文章数组
const summaries = [];
// 注意速率限制: 300 请求/分钟,所以要控制并发
for (const article of articles) {
const summary = await generateSummary(article.content, env);
summaries.push({ title: article.title, summary });
// 简单的速率控制(实际应该用更智能的队列)
await new Promise(resolve => setTimeout(resolve, 200)); // 每次间隔 200ms
}
return new Response(JSON.stringify(summaries), {
headers: { 'Content-Type': 'application/json' }
});
}
};
注意速率限制:
- Llama 3.1-8B 限制是 300 请求/分钟
- 如果要批量处理,记得加延迟或用队列
- 我一般用
p-queue这个 npm 包控制并发 成本计算实例: - 假设每篇文章 1000 字,生成 100 字摘要
- 每次消耗约 30 Neurons
- 处理 300 篇文章 = 9000 Neurons,还在免费额度内
案例3:多语言翻译服务(比 Google Translate 便宜)
场景: 做一个翻译工具,或者给你的应用加国际化支持。
javascript
async function translate(text, targetLang, env) {
const messages = [
{
role: 'system',
content: `你是一个专业的翻译助手。将用户输入翻译成 ${targetLang},保持原文风格和语气。只返回翻译结果,不要加任何解释。`
},
{
role: 'user',
content: text
}
];
const response = await env.AI.run(
'@cf/meta/llama-3.1-8b-instruct', // Llama 3.1 支持多语言
{ messages }
);
return response.response;
}
export default {
async fetch(request, env) {
const { text, targetLang } = await request.json();
const translation = await translate(text, targetLang, env);
return new Response(JSON.stringify({ translation }), {
headers: { 'Content-Type': 'application/json' }
});
}
};
成本对比:
- Google Cloud Translation API: $20/百万字符
- Workers AI(Llama 3.1) : 假设 100 字文本消耗 15 Neurons
- 百万字符 = 10,000 次调用 = 150,000 Neurons
- 成本: 150,000/1000 × <math xmlns="http://www.w3.org/1998/Math/MathML"> 0.011 = ∗ ∗ 0.011 = ** </math>0.011=∗∗1.65** 便宜了 10 倍以上!当然,Google Translate 准确度可能稍高一点,但 Llama 3.1 的翻译质量我觉得也够用了。
进阶技巧:优化性能和成本
1. 使用流式响应减少等待时间
对于长文本生成,可以用流式响应,让用户看到逐字输出(像 ChatGPT 那样)。
javascript
const response = await env.AI.run(
'@cf/meta/llama-3.1-8b-instruct',
{
messages,
stream: true // 开启流式响应
}
);
// 返回流式响应
return new Response(response, {
headers: { 'Content-Type': 'text/event-stream' }
});
前端用 Server-Sent Events(SSE)接收:
javascript
const eventSource = new EventSource('https://your-worker.workers.dev');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data.response); // 逐字显示
};
2. 设置 max_tokens 控制成本
如果你不需要很长的回复,可以限制输出长度:
javascript
const response = await env.AI.run(
'@cf/meta/llama-3.1-8b-instruct',
{
messages,
max_tokens: 100 // 最多生成 100 个 token
}
);
这样能节省不少 Neurons,尤其是批量处理的时候。
3. 用 Cloudflare AI Gateway 做缓存和监控
Cloudflare 还有个 AI Gateway 服务,可以:
- 缓存相同请求的结果(节省 Neurons)
- 监控 API 调用统计
- 限流保护 (防止滥用) 配置很简单,在
wrangler.toml里加:
toml
[ai]
binding = "AI"
gateway = "my-gateway" # 你的 AI Gateway 名字
然后在 Cloudflare Dashboard → AI Gateway 里创建一个 Gateway。 我现在用这个来监控我的 Worker,可以看到每天消耗了多少 Neurons,哪些请求最慢,挺方便的。
4. 与其他服务集成
集成到 Next.js 应用:
typescript
// app/api/ai/route.ts
import { NextRequest, NextResponse } from 'next/server';
export const runtime = 'edge'; // 重要: 用 Edge Runtime
export async function POST(request: NextRequest) {
const { messages } = await request.json();
const response = await fetch(
`https://api.cloudflare.com/client/v4/accounts/${process.env.ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CF_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ messages }),
}
);
const data = await response.json();
return NextResponse.json(data);
}
结合 Cloudflare Pages 部署前端: 你可以把前端部署到 Cloudflare Pages,后端用 Workers AI,全部在 Cloudflare 生态内,速度更快而且都免费。 我现在有个项目就是这么部署的,前端 + 后端一分钱没花。
常见问题解答
Q1: 如何获取 API Token?
A: Dashboard → My Profile → API Tokens → Create Token → 选择 "Workers AI" 模板。记得保存好,只显示一次。
Q2: Account ID 在哪里找?
A: 登录后看地址栏,https://dash.cloudflare.com/xxxxxxxxx,那串 xxxxxxxxx 就是。
Q3: Token 泄露了怎么办?
A: 立即去 API Tokens 页面撤销(Revoke)旧 Token,然后重新生成一个。
Q4: 免费额度用完了怎么办?
A: 会自动转成付费模式,按 $0.011/1000 Neurons 计费。你可以在 Dashboard 设置用量提醒,避免超支。
Q5: 遇到速率限制怎么处理?
A: 大多数 LLM 限制是 300 请求/分钟。如果超了:
- 加延迟控制请求频率
- 用队列系统缓冲请求
- 考虑升级到付费计划(会有更高限制)
Q6: 哪些地区可以使用?
A: 全球都可以,Cloudflare 有 300+ 个边缘节点。但中国大陆访问可能需要特殊网络。
Q7: 模型输出质量不如预期怎么办?
A: 几个建议:
- 优化 prompt,多给一些示例(few-shot learning)
- 换更大的模型,比如从 8B 换到 70B
- 调整 temperature 参数(默认 1.0,降低会更稳定)
Q8: 可以微调模型吗?
A: Workers AI 现在支持 LoRA 微调(2024年新增功能),但这是付费功能,而且需要一定的机器学习知识。对大多数人来说,优化 prompt 就够了。
Q9: 如何监控用量?
A: Cloudflare Dashboard → Workers AI → Analytics,可以看到:
- 每天消耗的 Neurons
- 请求次数和成功率
- 平均响应时间 建议定期检查,避免超额。
Q10: 支持哪些编程语言?
A: 官方支持:
- JavaScript/TypeScript(Workers)
- Python(通过 REST API)
- 任何能发 HTTP 请求的语言 用 REST API 的话,什么语言都能调用。
总结:Workers AI 值得尝试吗?
测试了一个月后,我的结论是:对个人开发者和小团队来说,非常值得。 优点:
- ✅ 免费额度慷慨(每天 10,000 Neurons)
- ✅ 付费价格便宜(比 OpenAI 便宜 60-90%)
- ✅ 上手简单(有 REST API 和 OpenAI 兼容接口)
- ✅ 响应速度快(全球边缘网络)
- ✅ 模型选择多(50+ 开源模型) 缺点:
- ⚠️ 模型质量略逊于 GPT-4(但接近 GPT-3.5)
- ⚠️ 速率限制(300 请求/分钟,大规模应用可能不够)
- ⚠️ 文档还不够完善(有些功能要自己摸索) 我的建议:
- 个人项目直接上,免费额度足够,而且省了服务器成本
- 创业项目可以先用,等规模上来再考虑迁移到其他方案
- 企业应用谨慎评估,要考虑 SLA、数据合规性等问题 如果你也在找低成本的 AI 方案,不妨试试 Workers AI。注册账号 5 分钟,跑通第一个例子也就 15 分钟,万一适合你呢?
延伸学习资源
- Cloudflare Workers AI 官方文档
- Workers AI 模型目录
- Workers AI Playground - 在线测试各个模型
- Cloudflare Community - 有问题可以在这里问
欢迎在评论区分享:
- 你用 Workers AI 做了什么项目?
- 遇到了什么坑?
- 有什么优化建议? 大家一起交流学习,说不定能碰撞出新的想法😄
原文首发自个人博客