Skip to content

0 元接入 Cloudflare Workers AI

给网站接上数据库之后,它终于有了「记忆」——留言不会丢,数据重启也还在。

但说真的,这个网站还是有点「笨」:能存数据、能返回数据,所有行为都是提前写死的。有人留言就存起来,有人访问就返回页面。它不会判断留言是不是垃圾广告,不会给文章自动生成摘要,更不会理解用户到底在问什么。

后端让它学会了做事,数据库让它学会了记忆,但它还不会「思考」。

所以这一次,我给网站接上了 AI。

不接 OpenAI,接 Workers AI

说到给网站加 AI,多数人第一反应是:申请个 OpenAI API Key,然后调接口。这条路我也走过,问题不在能不能用,而在两件事:

  • 。OpenAI 按 token 计费,个人网站一旦被人恶意刷接口,一觉醒来账单可能不太好看。虽然能设额度上限,但心理压力一直在。
  • 延迟。OpenAI 服务器在国外,国内访问本就不快,再经一层转发,响应时间经常让人焦虑。

所以我选了另一条路:Cloudflare Workers AI

简单说,Cloudflare 在自己的全球网络上部署了几十个开源 AI 模型,你可以像调用一个函数一样调用它们——不用自己买 GPU,不用管模型部署,不用操心扩容。前面把 Workers 比作网站的「办事员」,Workers AI 就相当于给这个办事员配了个「智能助手」:它就在办事员隔壁办公,随叫随到,不用打长途电话去问远方的 AI 公司。

怎么接?比你想的简单

如果你已经把 Workers 和 D1 都接好了,接入 Workers AI 只需要两步。

第一步:在 wrangler.jsonc 里加一段配置

jsonc
{
  "ai": {
    "binding": "AI", // 在 Worker 代码中通过 env.AI 访问
    "remote": true  // 避免控制台警告,因为访问的是远端额度
  }
}

然后跑一下类型生成脚本,让 TypeScript 识别新的绑定:

bash
npm run cf-typegen

就这么一行。和 D1 一样,Workers AI 也是通过 Binding 连接——不用记 API 地址,不用管密钥,Cloudflare 在部署时自动帮你接好一切。

第二步:在代码里调用

js
// 比如让 AI 判断一条留言是不是垃圾内容
const answer = await env.AI.run(
  "@cf/meta/llama-3.2-3b-instruct",
  {
    messages: [
      {
        role: "system",
        content: "你是一个内容审核助手。判断以下留言是否为垃圾广告,只回复 '是' 或 '否'",
      },
      {
        role: "user",
        content: "加我微信 xxx,日赚千元,轻松在家办公",
      },
    ],
  }
);

console.log(answer.response); // "是"

看到了吗?就是 env.AI.run(模型名, 参数),和调用一个普通函数没区别。你不用知道模型跑在哪台 GPU 上,不用关心显存够不够,不用处理模型加载卸载。只管传参数、拿结果,剩下的 Cloudflare 全包了。

不止聊天,它能做的事比你想的多

Workers AI 上有 80 多个模型,覆盖文本生成、图片生成、语音识别、翻译、图片分类等。对个人网站,我挑了三个最实用的场景:

1. 自动生成文章摘要

每篇文章写完后让 AI 读一遍,自动生成 100 字摘要放在首页,读者不用点进去就知道讲什么。

js
const summary = await env.AI.run("@cf/meta/llama-3.2-3b-instruct", {
  messages: [
    {
      role: "user",
      content: `请为以下文章生成一段 100 字以内的摘要:\n\n${articleContent}`,
    },
  ],
});

2. 智能垃圾评论过滤

用户提交留言时,先让 AI 看一眼,判断是不是广告、辱骂或无意义内容,是的话直接拒绝,不用人工审核。用 Llama 3.2 3B,判断一条留言不到 1 秒,而且这个模型在免费额度内几乎用不完。

3. 多语言翻译

想服务不同语言的读者,Workers AI 上有专门的翻译模型,比如 Meta 的 m2m100,支持 100 种语言互译。

js
const translated = await env.AI.run("@cf/meta/m2m100-1.2b", {
  text: "你的个人网站现在有了 AI 能力",
  source_lang: "chinese",
  target_lang: "english",
});
// "Your personal website now has AI capabilities"

多少钱?继续 0 元

这是我最关心的部分。Workers AI 的计费方式和 D1 类似:每天有免费额度,超出才付费。

免费额度是每天 10,000 Neurons。Neuron 是 Cloudflare 自定义的计算单位,可以理解为「GPU 算力消耗量」。不同模型消耗的 Neurons 不同,常用模型大致如下:

模型用途免费额度能干什么
Llama 3.2 3B文本生成每天约 200 万输入 token + 30 万输出 token
Llama 3.2 1B轻量文本每天约 400 万输入 token + 50 万输出 token
Whisper语音转文字每天约 240 分钟音频
BGE Small文本嵌入每天约 500 万 token

对个人网站绰绰有余。假设每天 100 条留言要审核,每条 50 字,用 Llama 3.2 3B 判断,一天消耗 Neurons 大概 100 左右,是免费额度的 1%。就算每天让 AI 生成 10 篇文章摘要,每篇 2000 字,一天也才几百 Neurons。换句话说,在网站真正火起来之前,AI 能力基本是免费的。

而且和 D1 一样,免费额度用完后就报错,不会自动扣费——你不会某天醒来发现账单多了几个零。

一个实际例子:智能留言板

把留言功能改一下:用户提交留言后,Workers 先让 AI 审核内容,通过后再存入 D1;如果留言提到了某篇文章的关键词,AI 还会自动推荐相关文章。

js
export default {
  async fetch(request, env) {
    if (request.method === "POST" && new URL(request.url).pathname === "/message") {
      const { content, articleId } = await request.json();

      // 1. AI 审核内容
      const moderation = await env.AI.run(
        "@cf/meta/llama-3.2-1b-instruct",
        {
          messages: [
            { role: "system", content: "判断以下内容是否为垃圾信息,只回复 'spam' 或 'ok'" },
            { role: "user", content },
          ],
        }
      );

      if (moderation.response?.trim().toLowerCase() === "spam") {
        return Response.json({ error: "内容不符合社区规范" }, { status: 400 });
      }

      // 2. 存入数据库
      await env.DB.prepare(
        "INSERT INTO messages (content, article_id, created_at) VALUES (?, ?, ?)"
      ).bind(content, articleId, Date.now()).run();

      // 3. AI 推荐相关文章
      const recommendation = await env.AI.run(
        "@cf/meta/llama-3.2-3b-instruct",
        {
          messages: [
            { role: "system", content: "根据用户留言内容,从以下文章列表中推荐最相关的1篇" },
            { role: "user", content: `留言:${content}\n\n文章列表:${articleList}` },
          ],
        }
      );

      return Response.json({
        success: true,
        recommendation: recommendation.response,
      });
    }
  },
};

一个留言接口,串联了 AI 审核 → 数据存储 → AI 推荐 三个步骤,全在同一个 Worker 里完成,不调用任何外部服务。这就是 Workers + D1 + Workers AI 组合的力量:网站不再是一个静态展示页,而是一个能理解内容、做出判断、给出建议的智能系统。

网站现在有了完整的「大脑」

回顾一下,个人网站经历了四次进化:

  • 纯静态页面——能展示内容,仅此而已
  • 加上后端能力——能处理请求、返回动态内容
  • 接上数据库——有了记忆,数据不会丢
  • 接入 AI——能理解内容、做出判断

现在网站有了完整的「大脑」:能接收信息(后端)、记住信息(数据库)、理解信息(AI)。而且这一切,月费依然是 0 元。

当然,0 元有 0 元的边界。Workers AI 的免费额度对个人网站足够,但如果你要做 AI 原生产品——比如一个需要大量调用大模型的聊天应用——免费额度可能就不够了。但对于「给个人网站加点智能」这个需求,它刚刚好。

基于 VitePress 构建 · 专注前端与 AI 实战