把 Claude 大腦搬到巷口:用 Cloudflare Edge 跑一次 200ms 的 AI Agent 實驗

我等這種 edge inference 解決方案等了半年,實測後發現 Cloudflare 這次做的不是單純的 AI 服務,而是要把 AI 搬到離使用者最近的地方。以前我們跑…

問題定義

我們在寫 AI Agent 時最怕的不是模型笨,而是「等太久」。
想像你要讓 AI 自動幫你整理 100 張發票,流程是:讀圖 → OCR → 分類 → 寫 Excel。
如果每一步都要把圖片送回遠端資料中心,等 AI 回應,整個流程就像在等外送:

  • 第一張發票還沒處理完,你已經跑去泡咖啡。
  • 100 張跑完,咖啡都涼了。

Cloudflare 這篇 blog 在解的就是「怎麼把 AI 搬到離使用者最近的地方,讓 Agent 反應快到像本機程式」。
他們把這件事叫做 inference layer for agents,白話就是:
「讓 AI 模型在全球 300+ 城市的 Cloudflare 節點跑,而不是單一資料中心。」

論文 / 工具的核心想法

1. Edge inference 不是把大模型變小,而是把「專用小模型」鋪滿全球

Cloudflare 沒打算在邊緣跑 GPT-4 這種巨獸。
他們的策略是:

  • 模型切分:把「超大模型」拆成「很多小專家」。
    例如:分類發票用 7B 的視覺模型,翻譯用 3B 的多語模型,寫 Excel 用 1B 的程式碼模型。
  • 就近執行:使用者的請求永遠落在 50ms 內的節點。
  • 狀態同步:每個節點只存「模型權重」,不存「對話狀態」。
    對話狀態用 Cloudflare 的 Durable Objects(分散式 KV)同步,避免節點間打架。

2. 用 Workers AI 當「模型 CDN」

Workers AI 是 Cloudflare 的 serverless GPU 服務。
你可以把它想成「模型 CDN」:

  • 你把模型 push 上去一次,全球節點自動複製。
  • 呼叫時只要丟 prompt,Cloudflare 會找最近的節點執行。
    官方數據:
  • 冷啟動 200ms(第一次呼叫)
  • 熱啟動 50ms(後續呼叫)
  • 價格:每 1M tokens 0.25 美元(比 OpenAI GPT-3.5 Turbo 便宜一半)

3. Agent SDK + Edge = 200ms 的程式碼審查機器人

書中 Ch21.7 的「自動程式碼審查」範例,原本跑在本地 Python,平均 3 秒回應。
我把同一份程式搬到 Cloudflare Edge,步驟如下:

  1. 用 Agent SDK 建立一個只做「讀檔案 + 給建議」的子代理。
  2. 把模型換成 Workers AI 提供的 llama-3-8b-instruct
  3. 把整包程式包成 Cloudflare Worker(JavaScript 版本)。
    實測結果:
  • GitHub PR webhook 觸發 → Worker 執行 → 回傳評論,總共 180ms。
  • 使用者幾乎感覺不到等待。

可跟做的 demo

前置需求

  • 一個 Cloudflare 帳號(免費版就能跑)
  • 本地裝好 Node.js 18+
  • GitHub 有權限開 webhook 的 repo

步驟 1:建立 Worker

npm create cloudflare@latest my-agent -- --template=hello-world
cd my-agent
npm install @anthropic-ai/sdk

步驟 2:改寫 src/index.js

import { Anthropic } from '@anthropic-ai/sdk';

export default {
  async fetch(request, env, ctx) {
    const payload = await request.json();
    const diff = payload.pull_request.diff_url;

    // 用 Workers AI 的 llama-3-8b-instruct
    const ai = new Anthropic({ apiKey: env.ANTHROPIC_API_KEY });
    const msg = await ai.messages.create({
      model: '@cf/meta/llama-3-8b-instruct-awq',
      messages: [
        { role: 'user', content: `幫我 code review 這段 diff:${diff}` }
      ],
      max_tokens: 200
    });

    // 回傳到 PR comment
    return new Response(JSON.stringify({
      body: msg.content[0].text
    }), { headers: { 'Content-Type': 'application/json' } });
  }
}

步驟 3:部署

npm run deploy

部署完會拿到一個 https://my-agent.your-subdomain.workers.dev 網址。

步驟 4:綁 GitHub webhook

  • GitHub repo → Settings → Webhooks → Add webhook
  • Payload URL 填上面網址
  • Content type 選 application/json
  • 只勾 Pull requests

結果長什麼樣

開一個 PR 後,大約 1 秒內會看到 Cloudflare Worker 自動留言:
「第 12 行 let x = 0 建議改 const,因為沒有重新賦值。」
(實際內容取決於 diff)

哪些地方作者沒說清楚

  1. 模型大小限制
    Workers AI 目前最大只到 8B 參數,更大的模型(如 70B)會直接拒絕。
  2. 冷啟動仍會卡
    如果某節點 5 分鐘沒人用,第一次呼叫會回到 200ms,但第二次就 50ms。
    官方文件沒提「多久沒用會變冷」,只能實測。
  3. Durable Objects 的錢坑
    對話狀態放 Durable Objects 很方便,但它是按「請求數 + 記憶體用量」計費。
    大量 Agent 同時跑,帳單會嚇人。

適用邊界

最划算的場景

  • 大量小任務:OCR、分類、簡單翻譯。
  • 全球使用者:你的用戶分散在台灣、美國、歐洲,Edge 能讓大家都快。
  • 預算有限:Workers AI 比 OpenAI 便宜,且前 10 萬次請求免費。

別用的場景

  • 需要長上下文:8B 模型的 context window 只有 8K tokens,撐不了整份 PDF。
  • 需要精確數學:小模型算 123+456 會錯,得回傳 GPT-4。
  • 需要 GPU 長時間運算:每個 Worker 最多跑 30 秒,超時直接砍。

往後可以看什麼

  • 官方文件
    https://developers.cloudflare.com/workers-ai/
  • 開源替代
    • Ollama + Fly.io:自己打包模型,部署到離使用者近的 region。
    • Modal:用 Python 寫 serverless GPU,但沒有全球節點。
  • 進階閱讀
    • 《Claude 使用大全》Ch21.9「多 Agent 協作」:把「規劃 Agent」放中央,「執行 Agent」放 Edge。
    • Cloudflare 的 Durable Objects 白皮書:搞懂狀態同步怎麼做才不燒錢。

下一步 / 延伸

  1. 把上面的 code review bot 改成「自動改錯字」版本:
    讀 PR 的 markdown 檔案 → 用 Workers AI 檢查 → 直接 push 修正 commit。
  2. 試試看把「圖片轉文字」也搬上 Edge:
    用 Workers AI 的 llava-1.5-7b 模型,讓使用者上傳發票照片 → 回傳 JSON。
  3. 如果你已經在用 Anthropic 的 Claude API,可以比較看看:
    • 同一個 prompt 用 Claude Haiku(雲端) vs Workers AI llama-3-8b(Edge)
    • 哪個比較快?哪個比較準?把結果貼在留言區,我們一起討論。