从边缘推理到知识库:Cloudflare AI 落地场景与实战命令指南
Cloudflare AI应用场景分析|附完整命令
随着生成式 AI 从“概念验证”走向“真实业务落地”,企业和开发者越来越关注两个核心问题:如何更快地把 AI 能力接入应用,以及如何在成本、性能、安全和可观测性之间取得平衡。Cloudflare 作为全球边缘网络服务商,近年来围绕 AI 推出了一系列能力,包括 Workers AI、AI Gateway、Vectorize、R2、Workers、Pages、D1、KV、Durable Objects 等,逐渐形成了一套适合构建 AI 应用的云原生边缘架构。
本文将围绕 Cloudflare AI 的核心产品、典型应用场景、架构设计思路以及完整命令示例进行分析,帮助你快速理解如何使用 Cloudflare 构建 AI 应用。
一、Cloudflare AI 能力概览
Cloudflare 的 AI 能力并不是单一产品,而是一组可组合的服务。开发者可以根据业务需求选择不同模块进行组合。
常见能力包括:
| 能力 | 说明 | 典型用途 |
|---|---|---|
| Workers AI | 在 Cloudflare 边缘运行 AI 模型 | 文本生成、翻译、摘要、分类、图像识别 |
| AI Gateway | AI 请求网关 | 统一管理 OpenAI、Workers AI 等模型调用 |
| Vectorize | 向量数据库 | RAG、语义搜索、知识库问答 |
| R2 | 对象存储 | 存放文档、图片、音频、模型输出 |
| Workers | 边缘函数计算 | 构建 API、鉴权、请求编排 |
| Pages | 前端部署平台 | 部署 AI Web 应用 |
| D1 | Serverless SQL 数据库 | 存储用户、会话、日志、配置 |
| KV | 键值存储 | 缓存 Prompt、配置、短期数据 |
| Durable Objects | 有状态边缘对象 | 实时会话、协作、队列控制 |
从架构上看,Cloudflare AI 更适合构建以下类型的应用:
- 低延迟 AI API
- 企业知识库问答
- AI 内容生成工具
- 智能客服系统
- 多模型调用网关
- AI 安全代理
- 语义搜索系统
- 边缘智能应用
二、为什么选择 Cloudflare 构建 AI 应用?
传统 AI 应用通常部署在中心化云服务上,例如某个固定区域的数据中心。用户访问时,请求需要跨越较长网络路径,尤其当用户分布在全球多个地区时,延迟会明显增加。
Cloudflare 的优势在于其庞大的全球边缘网络。通过 Workers 和 Workers AI,开发者可以在靠近用户的位置处理请求,从而降低网络延迟。
1. 边缘低延迟
用户请求可以就近进入 Cloudflare 网络,由边缘节点完成 API 处理、鉴权、缓存、模型调用或请求转发。这对于聊天机器人、实时翻译、智能搜索等场景非常重要。
2. 开发体验简单
Cloudflare Workers 使用 JavaScript、TypeScript 等常见语言,开发者不需要维护服务器,也不需要配置复杂的容器环境。通过 Wrangler CLI,可以快速创建、开发、部署应用。
3. 成本可控
AI 应用的成本往往来自多个方面:模型调用费用、存储费用、数据库费用、网络流量费用等。Cloudflare 提供的 Workers AI、R2、Vectorize 等服务可以组合使用,适合从小规模应用逐步扩展。
4. 适合代理和编排多个模型
AI Gateway 可以统一代理来自不同模型供应商的请求,例如 Workers AI、OpenAI、Anthropic 等。它可以提供缓存、日志、速率限制、监控等能力,适合企业统一管理 AI 调用。
5. 安全能力强
Cloudflare 本身具备 WAF、Bot 管理、Access、Zero Trust、Rate Limiting 等安全产品。AI 应用可以与这些安全能力结合,减少恶意调用、Prompt 注入、接口滥用和成本攻击等风险。
三、核心应用场景分析
场景一:基于 Workers AI 的文本生成 API
这是最基础的 Cloudflare AI 应用场景。开发者可以通过 Workers AI 调用模型,实现文本生成、摘要、翻译、分类、代码生成等功能。
适合业务
- AI 写作助手
- 智能摘要工具
- 标题生成器
- 商品描述生成
- 邮件自动回复
- 评论情感分析
- 多语言翻译
架构示意
用户
↓
Cloudflare Worker API
↓
Workers AI 模型
↓
返回生成结果
创建项目命令
首先安装 Node.js,推荐使用 LTS 版本。然后安装 Cloudflare Wrangler:
npm install -g wrangler
登录 Cloudflare:
wrangler login
创建 Worker 项目:
npm create cloudflare@latest cloudflare-ai-demo
进入项目目录:
cd cloudflare-ai-demo
如果项目还没有安装依赖,可以执行:
npm install
配置 wrangler.toml
在项目根目录中配置 Workers AI 绑定:
name = "cloudflare-ai-demo"
main = "src/index.ts"
compatibility_date = "2024-09-23"
[ai]
binding = "AI"
编写 Worker 代码
创建或修改 src/index.ts:
export interface Env {
AI: Ai;
}
export default {
async fetch(request: Request, env: Env): Promise {
if (request.method !== "POST") {
return new Response("Only POST requests are supported", {
status: 405,
});
}
const body = await request.json().catch(() => null) as {
prompt?: string;
} | null;
if (!body?.prompt) {
return Response.json(
{ error: "Missing prompt" },
{ status: 400 }
);
}
const result = await env.AI.run(
"@cf/meta/llama-3.1-8b-instruct",
{
messages: [
{
role: "system",
content: "你是一个专业、简洁、可靠的中文 AI 助手。",
},
{
role: "user",
content: body.prompt,
},
],
}
);
return Response.json(result);
},
};
本地开发命令
wrangler dev
测试接口:
curl -X POST http://localhost:8787 \
-H "Content-Type: application/json" \
-d '{"prompt":"请用中文总结 Cloudflare Workers AI 的优势"}'
部署命令
wrangler deploy
部署后测试:
curl -X POST https://cloudflare-ai-demo..workers.dev \
-H "Content-Type: application/json" \
-d '{"prompt":"请生成一段适合电商商品页的耳机描述"}'
场景二:使用 AI Gateway 管理多模型调用
当业务逐渐复杂后,开发者往往不会只使用一个模型。比如:
- 普通问题使用成本较低的小模型;
- 复杂推理使用更强的大模型;
- 图片理解使用视觉模型;
- 企业内部应用走私有模型;
- 外部应用调用 OpenAI 或其他模型服务商。
这时就需要统一入口管理模型调用。AI Gateway 可以作为 AI 请求的中间层,提供日志、缓存、限流、分析等能力。
适合业务
- 多模型 AI 平台
- 企业统一 AI 调用入口
- AI 成本监控
- 模型调用审计
- 提示词缓存
- 防止接口滥用
基础架构
应用前端 / 后端
↓
Cloudflare AI Gateway
↓
Workers AI / OpenAI / 其他模型
使用 AI Gateway 调用 Workers AI
假设你的 AI Gateway 地址类似:
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/workers-ai
可以使用以下命令调用:
curl https://gateway.ai.cloudflare.com/v1///workers-ai/@cf/meta/llama-3.1-8b-instruct \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "system",
"content": "你是一个专业的中文技术顾问。"
},
{
"role": "user",
"content": "请解释 AI Gateway 在企业 AI 应用中的价值。"
}
]
}'
使用 AI Gateway 调用 OpenAI
如果需要通过 AI Gateway 代理 OpenAI 请求,可以使用如下形式:
curl https://gateway.ai.cloudflare.com/v1///openai/chat/completions \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "你是一个中文助手。"
},
{
"role": "user",
"content": "请用三点说明 AI Gateway 的作用。"
}
]
}'
AI Gateway 的实际价值
AI Gateway 不仅仅是一个代理层,更像是企业 AI 应用的“控制面”。它可以帮助企业回答以下问题:
- 哪些用户或应用调用了 AI?
- 哪些模型调用成本最高?
- 哪些 Prompt 可以缓存?
- 是否存在异常请求?
- 是否需要对不同业务设置不同限流策略?
- 是否需要记录请求日志用于审计?
对于企业来说,AI 应用一旦进入生产环境,“能调用模型”只是第一步,“能治理模型调用”才是长期稳定运行的关键。
场景三:基于 Vectorize 构建企业知识库问答
RAG,即 Retrieval-Augmented Generation,中文常称为“检索增强生成”。它是当前企业 AI 应用中非常常见的方案。其核心思想是:先从知识库中检索相关内容,再把检索结果和用户问题一起交给大语言模型生成回答。
Cloudflare Vectorize 是向量数据库服务,适合用来存储文档向量,配合 Workers AI 的 Embedding 模型,可以构建知识库问答系统。
适合业务
- 企业内部知识库
- 产品文档问答
- 客服机器人
- 法务资料检索
- 技术支持助手
- 语义搜索
- FAQ 智能问答
架构示意
文档上传
↓
文本切分
↓
Embedding 模型生成向量
↓
写入 Vectorize
用户提问
↓
问题生成向量
↓
Vectorize 相似度检索
↓
拼接上下文
↓
Workers AI 生成回答
创建 Vectorize 索引
wrangler vectorize create docs-index \
--dimensions=768 \
--metric=cosine
注意:
dimensions需要与所使用的 Embedding 模型输出维度一致。如果更换模型,需要确认向量维度是否匹配。
在 wrangler.toml 中绑定 Vectorize
name = "cloudflare-rag-demo"
main = "src/index.ts"
compatibility_date = "2024-09-23"
[ai]
binding = "AI"
[[vectorize]]
binding = "VECTORIZE"
index_name = "docs-index"
写入文档向量示例
export interface Env {
AI: Ai;
VECTORIZE: VectorizeIndex;
}
async function embedText(env: Env, text: string): Promise {
const embedding = await env.AI.run(
"@cf/baai/bge-base-en-v1.5",
{
text,
}
) as {
data: number[][];
};
return embedding.data[0];
}
export default {
async fetch(request: Request, env: Env): Promise {
const url = new URL(request.url);
if (url.pathname === "/upsert" && request.method === "POST") {
const body = await request.json() as {
id: string;
text: string;
};
const values = await embedText(env, body.text);
await env.VECTORIZE.upsert([
{
id: body.id,
values,
metadata: {
text: body.text,
},
},
]);
return Response.json({
success: true,
id: body.id,
});
}
return new Response("Not Found", { status: 404 });
},
};
测试写入文档
curl -X POST http://localhost:8787/upsert \
-H "Content-Type: application/json" \
-d '{
"id": "doc-001",
"text": "Cloudflare Workers 是一种 Serverless 边缘计算平台,可以在全球边缘节点运行 JavaScript 或 TypeScript 代码。"
}'
查询并生成回答示例
export interface Env {
AI: Ai;
VECTORIZE: VectorizeIndex;
}
async function embedText(env: Env, text: string): Promise {
const embedding = await env.AI.run(
"@cf/baai/bge-base-en-v1.5",
{
text,
}
) as {
data: number[][];
};
return embedding.data[0];
}
export default {
async fetch(request: Request, env: Env): Promise {
const url = new URL(request.url);
if (url.pathname === "/ask" && request.method === "POST") {
const body = await request.json() as {
question: string;
};
const queryVector = await embedText(env, body.question);
const matches = await env.VECTORIZE.query(queryVector, {
topK: 3,
returnMetadata: true,
});
const context = matches.matches
.map((item: any, index: number) => {
return `资料 ${index + 1}:${item.metadata?.text || ""}`;
})
.join("\n\n");
const answer = await env.AI.run(
"@cf/meta/llama-3.1-8b-instruct",
{
messages: [
{
role: "system",
content:
"你是企业知识库问答助手。请只根据提供的资料回答,如果资料不足,请明确说明无法从资料中判断。",
},
{
role: "user",
content: `已知资料:\n${context}\n\n用户问题:${body.question}`,
},
],
}
);
return Response.json({
question: body.question,
matches,
answer,
});
}
return new Response("Not Found", { status: 404 });
},
};
测试问答
curl -X POST http://localhost:8787/ask \
-H "Content-Type: application/json" \
-d '{
"question": "Cloudflare Workers 是什么?"
}'
场景四:使用 R2 存储文档和 AI 生成内容
R2 是 Cloudflare 的对象存储服务,适合存储大量非结构化数据,例如:
- PDF 文档
- Markdown 文件
- 图片
- 音频
- 视频
- 用户上传文件
- AI 生成结果
- 日志归档
在 AI 应用中,R2 常常用于作为知识库原始文档存储,Vectorize 存储向量,D1 存储结构化元数据。
创建 R2 Bucket
wrangler r2 bucket create ai-docs-bucket
绑定 R2
name = "cloudflare-r2-ai-demo"
main = "src/index.ts"
compatibility_date = "2024-09-23"
[[r2_buckets]]
binding = "AI_DOCS"
bucket_name = "ai-docs-bucket"
上传文件到 R2
wrangler r2 object put ai-docs-bucket/docs/cloudflare-workers.md \
--file ./cloudflare-workers.md
查看文件
wrangler r2 object get ai-docs-bucket/docs/cloudflare-workers.md
删除文件
wrangler r2 object delete ai-docs-bucket/docs/cloudflare-workers.md
Worker 中读取 R2 文件
export interface Env {
AI_DOCS: R2Bucket;
}
export default {
async fetch(request: Request, env: Env): Promise {
const object = await env.AI_DOCS.get("docs/cloudflare-workers.md");
if (!object) {
return new Response("File not found", { status: 404 });
}
const text = await object.text();
return new Response(text, {
headers: {
"Content-Type": "text/plain;charset=utf-8",
},
});
},
};
场景五:构建 AI Web 应用并部署到 Cloudflare Pages
如果你的 AI 应用需要提供网页界面,可以使用 Cloudflare Pages 部署前端,使用 Workers 提供后端 API。
常见架构
Cloudflare Pages 前端
↓
Cloudflare Worker API
↓
Workers AI / Vectorize / R2 / D1
创建 Vite 前端项目
npm create vite@latest ai-web-app -- --template react-ts
进入目录:
cd ai-web-app
安装依赖:
npm install
本地启动:
npm run dev
构建:
npm run build
安装 Wrangler:
npm install -g wrangler
登录:
wrangler login
部署到 Pages:
wrangler pages deploy dist --project-name ai-web-app
前端调用 Worker API 示例
async function askAI(prompt: string) {
const response = await fetch("https://cloudflare-ai-demo..workers.dev", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt }),
});
if (!response.ok) {
throw new Error("AI request failed");
}
return response.json();
}
场景六:AI 安全代理与成本控制
AI 应用上线后,最容易被忽视的问题是安全和成本。许多开发者在测试阶段直接把模型 API 暴露给前端,甚至把 API Key 写入浏览器代码中,这是非常危险的。
正确做法是:
- 前端只调用自己的 Worker API;
- Worker 负责鉴权和限流;
- API Key 存储在 Cloudflare Secrets 中;
- 使用 AI Gateway 记录调用日志;
- 对用户、IP、Token 设置配额;
- 对 Prompt 长度和请求频率做限制。
设置 Secret
wrangler secret put OPENAI_API_KEY
输入密钥后,Cloudflare 会加密保存。
Worker 中读取 Secret
export interface Env {
OPENAI_API_KEY: string;
}
export default {
async fetch(request: Request, env: Env): Promise {
const response = await fetch(
"https://gateway.ai.cloudflare.com/v1///openai/chat/completions",
{
method: "POST",
headers: {
"Authorization": `Bearer ${env.OPENAI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [
{
role: "user",
content: "请介绍 Cloudflare AI Gateway",
},
],
}),
}
);
const data = await response.json();
return Response.json(data);
},
};
简单限制 Prompt 长度
const MAX_PROMPT_LENGTH = 2000;
if (body.prompt.length > MAX_PROMPT_LENGTH) {
return Response.json(
{
error: "Prompt is too long",
},
{
status: 400,
}
);
}
简单 API Token 鉴权
export interface Env {
API_TOKEN: string;
}
function checkAuth(request: Request, env: Env): boolean {
const token = request.headers.get("X-API-Token");
return token === env.API_TOKEN;
}
设置 Token:
wrangler secret put API_TOKEN
请求时携带:
curl -X POST https://your-worker.workers.dev \
-H "Content-Type: application/json" \
-H "X-API-Token: " \
-d '{"prompt":"请总结今天的会议纪要"}'
四、推荐架构:企业级知识库 AI 助手
如果要构建一个较完整的企业级知识库 AI 助手,可以采用如下架构:
用户浏览器
↓
Cloudflare Pages
↓
Cloudflare Worker API
↓
鉴权 / 限流 / 日志
↓
问题 Embedding
↓
Vectorize 检索相关文档
↓
R2 读取原始文档或片段
↓
Workers AI 生成答案
↓
D1 存储会话和反馈
↓
返回用户
各组件职责
| 组件 | 职责 |
|---|---|
| Pages | 部署前端页面 |
| Workers | 提供 API、业务编排、安全控制 |
| Workers AI | 生成回答、文本分类、Embedding |
| Vectorize | 存储向量,实现语义检索 |
| R2 | 存储原始文档和附件 |
| D1 | 存储用户、会话、反馈、文档元数据 |
| AI Gateway | 统一管理外部模型调用 |
| KV | 缓存系统 Prompt、配置、热点结果 |
这种架构的优势是清晰、轻量、可扩展,并且非常适合全球用户访问。如果业务从内部工具逐步发展到面向客户的 SaaS 产品,也可以在这个基础上继续扩展。
五、使用 D1 存储会话记录
为了让 AI 应用具备上下文能力,通常需要保存用户会话。Cloudflare D1 是基于 SQLite 的 Serverless 数据库,适合保存结构化数据。
创建 D1 数据库
wrangler d1 create ai_app_db
执行后会返回数据库 ID,将其写入 wrangler.toml:
[[d1_databases]]
binding = "DB"
database_name = "ai_app_db"
database_id = ""
创建 SQL 文件
创建 schema.sql:
CREATE TABLE IF NOT EXISTS conversations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT NOT NULL,
role TEXT NOT NULL,
content TEXT NOT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);
执行迁移:
wrangler d1 execute ai_app_db --file=./schema.sql
插入会话记录
export interface Env {
DB: D1Database;
}
async function saveMessage(
env: Env,
userId: string,
role: string,
content: string
) {
await env.DB.prepare(
"INSERT INTO conversations(user_id, role, content) VALUES (?, ?, ?)"
)
.bind(userId, role, content)
.run();
}
查询历史记录
async function getHistory(env: Env, userId: string) {
const result = await env.DB.prepare(
"SELECT role, content FROM conversations WHERE user_id = ? ORDER BY id DESC LIMIT 10"
)
.bind(userId)
.all();
return result.results.reverse();
}
六、Cloudflare AI 应用落地建议
1. 从单一场景开始
不要一开始就构建复杂的 AI 平台。建议先从一个明确场景开始,例如:
- 文档问答;
- 客服辅助;
- 内容摘要;
- 评论分类;
- 工单自动归类。
先把一个场景跑通,再逐渐扩展模型、数据源和用户权限。
2. 优先设计数据流
AI 应用的效果不仅取决于模型,也取决于数据。尤其是 RAG 应用,需要重点设计:
- 文档如何上传;
- 文本如何切分;
- 向量如何生成;
- 元数据如何保存;
- 检索结果如何排序;
- 回答如何引用来源;
- 用户反馈如何回流。
3. 对 Prompt 做版本管理
Prompt 是 AI 应用的重要资产。建议把系统 Prompt、任务 Prompt、检索模板等进行版本管理,可以存储在 KV、D1 或代码仓库中。对于企业应用,还需要记录每次调用使用了哪个 Prompt 版本,方便问题追踪。
4. 使用 AI Gateway 做监控
AI 应用上线后,必须关注调用量、延迟、错误率和成本。AI Gateway 可以帮助开发者观察模型请求,并对异常调用进行分析。
5. 加强安全控制
至少应实现以下安全措施:
- 不在前端暴露模型 API Key;
- 使用 Worker 作为后端代理;
- 对请求设置鉴权;
- 限制 Prompt 长度;
- 限制请求频率;
- 对用户输入做基础过滤;
- 对敏感数据做脱敏处理;
- 对企业内部应用接入 Zero Trust。
七、常用完整命令汇总
下面整理一组常用命令,便于实际开发时复制使用。
安装 Wrangler
npm install -g wrangler
登录 Cloudflare
wrangler login
创建 Worker 项目
npm create cloudflare@latest cloudflare-ai-demo
进入项目
cd cloudflare-ai-demo
安装依赖
npm install
本地运行
wrangler dev
部署 Worker
wrangler deploy
设置 Secret
wrangler secret put OPENAI_API_KEY
wrangler secret put API_TOKEN
创建 Vectorize 索引
wrangler vectorize create docs-index \
--dimensions=768 \
--metric=cosine
创建 R2 Bucket
wrangler r2 bucket create ai-docs-bucket
上传 R2 文件
wrangler r2 object put ai-docs-bucket/docs/example.md \
--file ./example.md
下载 R2 文件
wrangler r2 object get ai-docs-bucket/docs/example.md
删除 R2 文件
wrangler r2 object delete ai-docs-bucket/docs/example.md
创建 D1 数据库
wrangler d1 create ai_app_db
执行 D1 SQL
wrangler d1 execute ai_app_db --file=./schema.sql
创建 Vite 前端项目
npm create vite@latest ai-web-app -- --template react-ts
构建前端
npm run build
部署 Pages
wrangler pages deploy dist --project-name ai-web-app
八、总结
Cloudflare AI 的价值不只是“调用一个大模型”,而是提供了一套适合 AI 应用工程化落地的边缘云基础设施。Workers AI 负责模型推理,AI Gateway 负责调用治理,Vectorize 支持语义检索,R2 负责对象存储,D1 保存结构化数据,Workers 承担业务编排,Pages 则负责前端部署。
对于个人开发者来说,Cloudflare AI 可以帮助快速构建 AI Demo、知识库机器人、摘要工具和智能 API。对于企业来说,它更适合构建统一的 AI 接入层、企业知识库、智能客服、内部助手和全球低延迟 AI 应用。
如果你正在规划一个 AI 产品,可以优先从以下路径开始:
- 使用 Workers AI 构建基础文本生成接口;
- 使用 AI Gateway 管理模型调用;
- 使用 R2 和 Vectorize 构建知识库;
- 使用 D1 记录用户会话和反馈;
- 使用 Pages 部署前端;
- 最后加入鉴权、限流、监控和成本控制。
通过这种方式,Cloudflare 不仅能帮助你快速上线 AI 应用,也能让应用具备更好的扩展性、安全性和全球访问体验。