每次有人问我”怎么快速部署一个 AI 功能”,我的第一反应都是:**别急着买服务器**。
如果你只是在做 MVP 或者个人工具,Cloudflare Workers 几乎是最优解。免费额度够用,冷启动几乎为零,全球 300+ 节点自动分发。关键是你不需要管服务器、不需要配 Nginx、不用担心 DDoS。
我整理了一个可直接复用的 Starter Kit,包含了搭建 AI API 网关最常用的几个组件:请求路由、多模型代理、速率限制、用量追踪。全部跑在 Cloudflare Workers + D1 + KV 上。
—
## 这套模板解决了什么
你手头可能有个想法:做一个 AI 翻译工具、一个内容改写助手、或者一个 AI 客服前端。这些产品 80% 的架构需求是一样的:
– 用户发请求过来
– 转发到某个 AI 模型(OpenAI / Claude / DeepSeek 等)
– 记录调用次数
– 限制滥用
– 返回结果
这套模板让你不用每次都从零写这些基础设施代码。
—
## 项目结构
“`
ai-api-gateway/
├── wrangler.toml # Worker 配置
├── src/
│ ├── index.ts # 入口路由
│ ├── proxy.ts # AI API 代理
│ ├── rate-limit.ts # 速率限制
│ ├── usage.ts # 用量记录 (D1)
│ ├── cache.ts # 响应缓存 (KV)
│ └── types.ts # 类型定义
├── migrations/
│ └── 001_create_usage.sql
├── package.json
└── tsconfig.json
“`
## wrangler.toml
“`toml
name = “ai-api-gateway”
main = “src/index.ts”
compatibility_date = “2026-07-01”
[[d1_databases]]
binding = “DB”
database_name = “ai-usage-db”
database_id = “your-db-id”
[[kv_namespaces]]
binding = “CACHE”
id = “your-kv-id”
[ai]
binding = “AI”
“`
创建 D1 数据库和 KV Namespace 后,把对应的 ID 填进去。
## 核心代码
### 1. 入口路由 (src/index.ts)
“`typescript
export default {
async fetch(request: Request, env: Env): Promise
const url = new URL(request.url)
const path = url.pathname
if (path === ‘/v1/chat/completions’) {
return handleChatCompletion(request, env)
}
if (path === ‘/api/usage’) {
return handleUsageQuery(request, env)
}
return new Response(‘Not Found’, { status: 404 })
}
}
“`
路由按路径分发。你可以按需加更多路由,比如 `/v1/embeddings`、`/v1/images/generations`。
### 2. AI API 代理 (src/proxy.ts)
“`typescript
const PROVIDERS = {
openai: {
baseUrl: ‘https://api.openai.com/v1’,
envKey: ‘OPENAI_API_KEY’
},
deepseek: {
baseUrl: ‘https://api.deepseek.com/v1’,
envKey: ‘DEEPSEEK_API_KEY’
},
claude: {
baseUrl: ‘https://api.anthropic.com/v1’,
envKey: ‘ANTHROPIC_API_KEY’
}
}
export async function proxyToProvider(
provider: string,
body: any,
env: Env
): Promise
const config = PROVIDERS[provider as keyof typeof PROVIDERS]
if (!config) {
return new Response(`Unsupported provider: ${provider}`, { status: 400 })
}
const apiKey = env[config.envKey]
if (!apiKey) {
return new Response(`${provider} API key not configured`, { status: 500 })
}
const response = await fetch(`${config.baseUrl}/chat/completions`, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘Authorization’: `Bearer ${apiKey}`
},
body: JSON.stringify(body)
})
return response
}
“`
这个设计让你可以配置多个 AI 供应商,客户端传 `provider` 参数就能切换模型。做 A/B 测试或者成本优化时特别好用。
### 3. 速率限制 (src/rate-limit.ts)
“`typescript
export async function checkRateLimit(
userId: string,
env: Env
): Promise<{ allowed: boolean; remaining: number }> {
const key = `ratelimit:${userId}`
const windowMs = 60_000 // 1 分钟窗口
const maxRequests = 60
const current = await env.CACHE.get(key)
if (current) {
const count = parseInt(current)
if (count >= maxRequests) {
return { allowed: false, remaining: 0 }
}
await env.CACHE.put(key, String(count + 1), {
expirationTtl: Math.ceil(windowMs / 1000)
})
return { allowed: true, remaining: maxRequests – count – 1 }
}
await env.CACHE.put(key, ‘1’, {
expirationTtl: Math.ceil(windowMs / 1000)
})
return { allowed: true, remaining: maxRequests – 1 }
}
“`
KV 的 TTL 特性天然适合做速率限制窗口,不需要额外引入 Redis。每用户每分钟 60 次的限制对大部分 MVP 够用了,数字你可以自己调。
### 4. 用量追踪 D1 Schema (migrations/001_create_usage.sql)
“`sql
CREATE TABLE usage_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT NOT NULL,
provider TEXT NOT NULL,
model TEXT NOT NULL,
prompt_tokens INTEGER NOT NULL,
completion_tokens INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_user_id ON usage_logs(user_id);
CREATE INDEX idx_created_at ON usage_logs(created_at);
“`
记录每次请求的 token 消耗,方便后续给用户出账单或者看成本趋势。
## 部署步骤
“`bash
# 1. 安装依赖
npm install
# 2. 创建 D1 数据库
npx wrangler d1 create ai-usage-db
# 3. 创建 KV Namespace
npx wrangler kv:namespace create “CACHE”
# 4. 运行数据库迁移
npx wrangler d1 migrations apply ai-usage-db
# 5. 设置 API Keys
npx wrangler secret put OPENAI_API_KEY
npx wrangler secret put DEEPSEEK_API_KEY
# 6. 部署
npx wrangler deploy
“`
以上 6 步跑完,你就有了一个带速率限制和用量追踪的 AI API 网关。
## 成本分析
Cloudflare Workers 免费计划每天 10 万次请求,对 MVP 阶段完全够用。D1 数据库免费额度 5GB 存储、每月 500 万次读取。KV 免费 100 万次读/天。
超出后 Workers $0.30/百万次请求,D1 读取 $0.80/百万次。相比自己租一台云服务器(最便宜 $5/月起步),这套架构在初期几乎零成本。
根据 Cloudflare 2026 年 4 月发布的开发者报告,Workers 平台日均处理超过 100 亿次请求,生产稳定性已经过大规模验证。
—
**完整的 Starter Kit 代码在 GitHub 上可以找到参考实现,你也可以按上面的代码片段拼出自己的版本。核心思路就四个字:路由 + 代理 + 限制 + 记录。先把这四层搭好,再加业务逻辑就快了。**
你有什么项目想用 Workers 做?可以直接用这个模板跑起来,10 分钟就能有一个可测试的原型。
