Cloudflare Workers AI 与 AI Gateway 入门:边缘推理与统一代理

本文带你从零上手 Cloudflare Workers AI 与 AI Gateway:在全球 GPU 网络上运行 Llama、Whisper、BGE 等开源模型实现边缘推理,配合 Vectorize 构建 RAG,并用 AI Gateway 统一代理 OpenAI、Anthropic 等多家 LLM,获得缓存、限流与可观测性能力。

Cloudflare Workers AI 是 Cloudflare 推出的边缘推理(Edge Inference)服务:它在 Cloudflare 全球骨干网络的 GPU 节点上运行开源大模型(如 Llama、Whisper、BGE 等),与 Workers 运行时原生绑定,开发者通过 env.AI.run() 一行代码即可调用,并按"神经元(Neurons)“用量计费,无需自己采购 GPU 或部署推理框架。对 Workers 平台本身还不熟悉的读者,建议先阅读 Cloudflare Workers 入门实战

AI Gateway 则是一个统一的大模型 API 代理网关:它位于你的应用与 OpenAI、Anthropic、Workers AI 等多家模型供应商之间,提供请求缓存、速率限制、重试、日志与用量分析等能力。接入方式极其简单——大多数情况下只需把 SDK 的 baseURL 改成网关地址,即可让现有代码获得缓存与可观测性加成。

两者结合,构成了 Cloudflare 在 AI 时代的组合拳:Workers AI 解决"在哪里跑模型”,AI Gateway 解决"如何管理多家模型"


1. Workers AI 快速上手

1.1 模型目录

Workers AI 的模型目录覆盖文本、语音、向量、图像四大类,常用模型 ID 格式为 @cf/厂商/模型名

  • 文本生成@cf/meta/llama-3.1-8b-instruct(Llama 系列指令模型,适合 Chatbot、摘要、翻译)
  • 语音识别@cf/openai/whisper(语音转文字)
  • 向量 Embedding@cf/baai/bge-base-en-v1.5(768 维,常与 Vectorize 配合做 RAG)
  • 图像分类@cf/microsoft/resnet-50
  • 图像生成@cf/stabilityai/stable-diffusion-xl-base-1.0

模型目录持续更新,具体可用列表与参数以 Cloudflare 官方模型目录 为准。

1.2 绑定与调用

wrangler.toml 中声明 AI 绑定:

name = "edge-chatbot"
main = "src/index.js"
compatibility_date = "2025-01-01"

[ai]
binding = "AI"

然后在 Worker 代码中直接调用:

export default {
  async fetch(request, env) {
    const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
      messages: [
        { role: 'system', content: '你是一个简洁的中文助手' },
        { role: 'user', content: '用一句话解释什么是边缘计算' }
      ]
    });

    return Response.json(response);
  }
};

env.AI.run() 的第一个参数是模型 ID,第二个参数是模型相关的输入对象。文本模型返回 { response: "..." },Embedding 模型返回向量数组,Whisper 返回转写文本——返回结构随任务类型而不同。

1.3 流式响应(SSE)

Chatbot 场景下,逐字输出体验远好于等待整段生成。给请求加 stream: trueAI.run() 会返回一个 ReadableStream,直接包装为 SSE 响应即可:

export default {
  async fetch(request, env) {
    const stream = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
      messages: [{ role: 'user', content: '写一首关于大海的短诗' }],
      stream: true
    });

    return new Response(stream, {
      headers: { 'content-type': 'text/event-stream' }
    });
  }
};

前端用 EventSourcefetch + ReadableStream 逐段消费,就能获得与 ChatGPT 类似的打字机效果。


2. 实战示例一:边缘 Chatbot API

把上面的能力组装成一个带流式输出的 Chatbot API,核心代码不到 30 行:

export default {
  async fetch(request, env) {
    if (request.method !== 'POST') {
      return new Response('Method Not Allowed', { status: 405 });
    }

    const { message } = await request.json();
    if (!message) {
      return Response.json({ error: 'message is required' }, { status: 400 });
    }

    const stream = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
      messages: [
        { role: 'system', content: '你是部署在 Cloudflare 边缘的 AI 助手,回答简洁专业。' },
        { role: 'user', content: message }
      ],
      stream: true
    });

    return new Response(stream, {
      headers: {
        'content-type': 'text/event-stream',
        'cache-control': 'no-cache'
      }
    });
  }
};

部署只需一条命令:

npx wrangler deploy

这个 API 的独特价值在于就近推理:请求在用户附近的边缘节点被 GPU 直接处理,省去了回源到中心化推理集群的长途网络开销,首 Token 延迟(TTFT)显著优于跨洋调用传统 LLM API。


3. 实战示例二:BGE Embedding + Vectorize 构建 RAG

检索增强生成(RAG)是让模型"读过你的文档"的主流方案。Cloudflare 提供了完整闭环:BGE 模型生成向量,Vectorize 存储与检索,Llama 生成答案。

3.1 创建向量索引

npx wrangler vectorize create docs-index --dimensions=768 --metric=cosine

dimensions 必须与所用 Embedding 模型一致(bge-base-en-v1.5 输出 768 维)。创建后在 wrangler.toml 中绑定:

[[vectorize]]
binding = "VECTOR_INDEX"
index_name = "docs-index"

3.2 写入与检索

// 写入:把文档切片转成向量后 upsert
const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
  text: ['Cloudflare Workers 是基于 V8 隔离的无服务器运行时']
});

await env.VECTOR_INDEX.upsert([
  {
    id: 'doc-1',
    values: embedding.data[0],
    metadata: { source: 'workers-docs' }
  }
]);

// 检索:用问题向量查最相似的片段
const queryVector = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
  text: ['Workers 的底层运行时是什么?']
});

const matches = await env.VECTOR_INDEX.query(queryVector.data[0], {
  topK: 3,
  returnMetadata: 'all'
});

拿到 matches 后,把相似片段拼进 Llama 的 prompt,就完成了一次最简 RAG:先检索、后生成,答案有据可查。生产环境中还需要处理文档切片策略、混合检索(关键词 + 向量)与重排序,但核心链路就是这三步。


4. AI Gateway 实战:一行代码接入统一代理

如果你的应用同时(或未来可能)使用 OpenAI、Anthropic 等多家模型,AI Gateway 能让你在不改动业务逻辑的前提下获得统一的可观测性与成本控制能力。

4.1 创建网关

在 Cloudflare Dashboard 的 AI → AI Gateway 中创建一个网关,记下 Account ID 和 Gateway ID,得到形如这样的 endpoint:

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai

4.2 改一行 baseURL 接入

以 OpenAI 官方 SDK 为例,只需修改 baseURL

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: env.OPENAI_API_KEY,
  baseURL: 'https://gateway.ai.cloudflare.com/v1/ACCOUNT_ID/GATEWAY_ID/openai'
});

const completion = await client.chat.completions.create({
  model: 'gpt-4o-mini',
  messages: [{ role: 'user', content: '你好' }]
});

业务代码的其余部分完全不用动。Anthropic 同理,把路径末段换成 anthropic 即可。多家模型可以走同一个网关,在 Dashboard 中统一查看。

4.3 核心能力

  • 缓存(Caching):相同请求命中缓存直接返回,不产生模型费用。对 FAQ 机器人、固定 prompt 的批处理任务,缓存命中率往往能达到 30% 以上,直接省下对应比例的 Token 成本。
  • 速率限制(Rate Limiting):按网关维度限制请求频率,防止突发流量打爆供应商配额,也能防止 API Key 泄露后被恶意刷量。
  • 分析面板(Analytics):查看每个模型的请求量、Token 消耗、缓存命中率、错误率与成本估算,是做 FinOps 的基础数据。
  • 日志与重试:请求级日志便于排查问题;供应商故障时可配置自动重试或降级到备用模型。

多模型统一切换是 AI Gateway 的隐藏价值:当某个供应商涨价或限流时,你只需在网关层调整路由,而不用在所有调用点改代码。


5. 成本模型:Neurons 计费与免费额度

Workers AI 不按 Token 计费,而是按神经元(Neurons)——一种跨任务类型统一折算的算力单位。不同模型、不同输入规模消耗的 Neurons 不同:生成一段文本、转写一分钟音频、嵌入一段句子,最终都折算为 Neurons 计入账单。

要点如下:

  • 免费额度:每天有 10,000 Neurons 的免费分配(Workers Free 与 Paid 计划均有),够做开发调试和小流量应用。
  • 超出后计费:Workers Paid 计划超出部分按 Neurons 单价按量付费,每类模型有各自的"每 Token / 每单位输入折合 Neurons"的换算表,具体费率以官方定价页为准。
  • 对比思路:与直接调用 OpenAI 相比,Workers AI 的 Llama 8B 级模型在处理简单任务时单价通常低一个数量级;但 GPT-4 级闭源模型在复杂推理上能力更强。合理的成本策略是用 Workers AI 跑高频简单任务,用 AI Gateway 管理的闭源模型跑低频复杂任务,通过路由分流实现成本与效果的平衡。
  • Vectorize 计费:按存储的向量维度总量与查询次数计费,同样包含可观的免费额度,小规模知识库基本零成本。

6. 适用场景与局限

适合

  • 延迟敏感型应用:客服首屏响应、实时翻译、语音交互——就近推理带来的 TTFT 优势是实打实的。
  • 隐私与合规场景:数据不离开 Cloudflare 网络,可配合 Regional Services 控制处理地域。
  • RAG 全栈闭环:Embedding + Vectorize + 文本生成都在同一平台,免运维、免跨云数据搬运。
  • 多供应商管理:任何同时使用两家以上 LLM 的团队,都应该把 AI Gateway 放在中间层。

局限

  • 能力上限:开源 8B 级模型在长链条推理、复杂代码生成、多语言微妙语义上仍与 GPT-4 / Claude 级闭源模型存在明显差距。如果你的产品核心卖点就是"最强的回答质量",Workers AI 目前不适合作为唯一引擎。
  • 模型选择受限:只能使用目录内的模型,无法部署自定义微调权重(微调能力在逐步开放中,以官方公告为准)。
  • 冷启动与上下文长度:边缘推理在长上下文(128K+)场景下的吞吐与成本表现,需要按实际模型实测,不能想当然。

一句话总结:把 Workers AI 当作"边缘的轻量智能层",把 AI Gateway 当作"通往重型模型的总控台",两者并不互斥,而是互补。


常见问题(FAQ)

Workers AI 免费吗?

每天有 10,000 Neurons 的免费额度,开发调试与小流量应用基本够用。超出后需要 Workers Paid 计划(5 美元/月起),按实际 Neurons 用量付费。对绝大多数个人项目,免费额度即可覆盖日常调用。

Workers AI 支持哪些模型?

覆盖文本生成(Llama 系列)、语音识别(Whisper)、Embedding(BGE 系列)、图像分类与生成等数十款开源模型,目录持续扩充。模型 ID 均为 @cf/厂商/模型名 格式,最新列表请查阅 Cloudflare 官方模型目录。

和 OpenAI 比效果如何?

同参数规模下,Llama 3.1 8B 在摘要、翻译、简单问答上表现合格,但复杂推理、代码生成与指令遵循能力与 GPT-4 级模型仍有差距。实践中常见的架构是:简单高频请求走 Workers AI 省成本、降延迟,复杂低频请求通过 AI Gateway 走 OpenAI / Anthropic 保质量。

AI Gateway 支持 Anthropic 吗?

支持。AI Gateway 原生支持 OpenAI、Anthropic、Workers AI、Google Gemini、Mistral 等主流供应商,每家对应网关 URL 下的一个路径(如 /anthropic)。所有供应商的请求共用同一个网关的缓存、限流与分析能力,切换供应商只需改 SDK 的 baseURL。

向量数据库 Vectorize 怎么收费?

Vectorize 按"存储的向量维度总量 + 每月查询的维度总量"计费,并附带免费额度(数百万维度的存储与查询量)。一个几千篇文档的小型知识库(768 维向量)通常完全落在免费额度内,只有大规模商用场景才会产生实际费用。


相关阅读

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「saas」更多文章