Skip to content

Gemma on Cloudflare Workers AI:繁中應用的務實選擇

2026年4月28日 1 分鐘
TL;DR 在 Cloudflare Workers AI 上跑繁中 LLM,Gemma 系列的指令跟隨比同級 Llama 穩定。gemma-3-12b-it 已於 2026-05-30 標為 deprecated,現在的對應選項是 gemma-4-26b-a4b-it:256K context、Vision、Function calling,$0.10 / $0.30 per M tokens。
目錄
  1. Cloudflare Workers AI 是什麼
  2. 為什麼是 Gemma,不是 Llama
  3. 基本使用方式
  4. nobodyclimb 的使用場景
  5. Cloudflare Workers AI 的限制
  6. 跟其他選項比較
  7. 實際觀察
  8. 從 Gemma 3 遷移到 Gemma 4
  9. 更新紀錄
  10. 參考資料

選 LLM 不是選「最強的那個」,是選「在你的限制條件下夠用的那個」。nobodyclimb 跑在 Cloudflare Workers 上,AI 推論也繼續留在 Cloudflare 生態系——在這個限制下,Gemma 系列一直是繁體中文最順的選項。

模型狀態(2026-08):本文原本以 @cf/google/gemma-3-12b-it 為主角,它已在 2026-05-30 被 Workers AI 標為 deprecated(模型頁與定價仍在,但已在退場軌道上)。現在的對應選項是 @cf/google/gemma-4-26b-a4b-it,全文範例都已改成 Gemma 4。當初捨 Llama 選 Gemma 的三個理由在 Gemma 4 上一樣成立,所以那段判斷保留。

Cloudflare Workers AI 是什麼

Cloudflare Workers AI 是 Cloudflare 的推論服務,讓你在 Workers 環境直接呼叫 hosted 模型,不需要管 GPU 基礎設施。計費按 token 用量。

支援的模型涵蓋 text generation、embedding、image generation、speech-to-text 等類別。在 LLM 這塊,目前有 Gemma、Llama、Qwen、GLM、gpt-oss、Kimi 等主流開源模型。

// Workers 環境裡,binding 就是這樣用
const response = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
  messages: [
    { role: "system", content: "你是一個台灣攀岩社群的 AI 助手。" },
    { role: "user", content: "龍洞有哪些適合初學者的路線?" }
  ],
  max_tokens: 1024,
  stream: true,
});

相比自己架推論服務,好處是明顯的:不需要管 GPU、不需要 model serving 的 ops 工作、跟 Workers 的其他 binding(D1、KV、Vectorize)在同一個環境。

為什麼是 Gemma,不是 Llama

nobodyclimb 早期用的是 llama-3.1-8b-instruct,後來換成當時的 gemma-3-12b-it。換掉的三個理由,到 Gemma 4 依然是選它的理由:

繁體中文指令跟隨:Llama 3.1 8B 的繁體中文輸出品質不穩定,偶爾會夾雜簡體字,或是忽略系統提示裡的格式指令(例如「回答要包含來源連結」)。Gemma 在這方面明顯更可靠。

參數量:12B 對 8B 的差距在 RAG 問答這個場景能感受到——給它 5 份檢索文件,較大的模型能更準確地整合資訊,而不是只用到前幾份。Gemma 4 用 MoE 把這件事推得更遠:總參數 26B,每次推論只啟動約 4B。

Gemma 的多語言訓練:Google 在 Gemma 的訓練資料裡有更完整的多語言覆蓋,中文(包含繁體)的比例比 Llama 3.1 的公開訓練設定更高。

這不是說 Llama 不好,而是在繁體中文 RAG 這個具體 use case 上,Gemma 更適合。順帶一提,這兩個當初被拿來對比的模型 ID 都在 2026-05-30 那波被標為 deprecated——官方用字will be deprecated,模型頁與定價至今仍掛著,但它們已在退場軌道上,不該再拿來起新專案。

基本使用方式

非串流(適合 evaluation、background jobs):

const result = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
  messages: [
    { role: "system", content: systemPrompt },
    { role: "user", content: userQuery }
  ],
  max_tokens: 512,
});

const answer = result.response; // string

串流(適合使用者介面):

const stream = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
  messages: [...],
  stream: true,
});

// 搭配 Hono 的 streamSSE
return streamSSE(c, async (sseStream) => {
  for await (const chunk of stream) {
    if (chunk.response) {
      await sseStream.writeSSE({ data: chunk.response });
    }
  }
});

JSON 輸出(適合結構化任務如 judge、filter-build):

const result = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
  messages: [
    {
      role: "system",
      content: "以 JSON 格式回答,格式為 { score: number, reason: string }"
    },
    { role: "user", content: `評估這個回答的品質:${answer}` }
  ],
  response_format: { type: "json_object" },
  max_tokens: 256,
});

const evaluation = JSON.parse(result.response);

nobodyclimb 的使用場景

系統裡有多個 pipeline step 需要呼叫 LLM:

Step任務輸出類型
HyDE生成假設答案文件純文字
multi-query展開查詢成多個角度JSON array
filter-build萃取結構化搜尋條件JSON object
llm-generation最終回答生成純文字(串流)
judge評估答案品質JSON object
agenticDecision判斷資訊是否足夠JSON boolean + reasoning

同一個模型、不同的 prompt 工程,做截然不同的任務。這是選擇讓一個夠強的模型做所有事,而不是為每個任務選最小夠用的模型的策略——在 Cloudflare Workers AI 上,這樣管理更簡單。

Cloudflare Workers AI 的限制

不說清楚這些,之後踩坑會很痛:

CPU 時間限制:Workers 有 CPU 時間上限(Paid plan 是 30 秒,但 AI 呼叫不計入 CPU 時間,計入 wall time)。pipeline 裡有多個 LLM 呼叫(HyDE + generation + judge),加起來可能超過 Workers 的執行時間限制。nobodyclimb 的解法是讓 judge 非同步寫入(不阻塞主流程),HyDE 只在複雜查詢啟用。

模型會被標為退場,版本也不透明:Cloudflare 管理模型版本,你不能鎖定特定 checkpoint,模型行為可能在沒有通知的情況下改變;更麻煩的是整個 model ID 會進入退場軌道。2026-05-30 那波一次把 18 個 ID 標為 deprecated,Llama 2/3/3.1 全系列、Mistral 7B、Gemma 3 12B 都在裡面。這代表 model ID 不該散在程式各處硬寫,要收斂成一個常數或設定值,換的時候只動一個地方;另外要有監控機制偵測輸出品質是否有異常。

沒有 fine-tuning:目前 Workers AI 上的 hosted 模型無法 fine-tune。領域適應只能靠 prompt engineering 和 RAG。

冷啟動延遲:在流量低的時段,第一次呼叫可能有較高延遲。semantic cache 可以緩解這個問題(有快取命中就不需要呼叫 LLM)。

Context window 要看模型頁:各模型差很多,而且以 Workers AI 模型頁標示的數字為準,不是原始模型的規格——gemma-4-26b-a4b-it 是 256,000 tokens,glm-4.7-flash 是 131,072,已標退場的 gemma-3-12b-it 是 80,000。長對話或大量檢索文件照實際上限抓。

跟其他選項比較

gemma-4-26b-a4b-it (Workers AI)glm-4.7-flash (Workers AI)OpenAI GPT-4o-mini自架 Ollama
繁中品質很好依模型
Context window256K tokens131K tokens128K tokens依模型
Vision依模型
Function calling依模型
維運成本
延遲快(MoE active 4B)依硬體
彈性
費用(per M tokens)$0.10 / $0.30$0.06 / $0.40Token-based固定硬體成本

如果繁體中文品質是最高優先,GPT-4o 系列還是更強。但如果你已經在 Cloudflare 生態系,不想多維護一個 AI 服務的帳戶和 API key,Workers AI 是最順的選擇。

同一個生態系裡,Gemma 4 跟 GLM-4.7-Flash 的分工大致是:要 vision 或 context 塞很滿選 Gemma 4,純文字對話而且輸入量遠大於輸出量選 GLM(input 只要 $0.06,但 output 貴一點)。

實際觀察

用了幾個月下來:

  • 繁體中文的指令跟隨比 Llama 穩定,系統提示裡要求的格式(引用來源、JSON 輸出)基本上都能遵守
  • 偶爾的幻覺問題靠 judge + self-reflection 機制攔截,groundedness 低於 0.5 就重試
  • 12B 的推論速度不算快,串流的第一個 token 通常在 1-2 秒,完整回答(300-500 字)大約 5-8 秒;Gemma 4 因為只啟動 4B,這一段有改善
  • JSON 輸出模式穩定,response_format: { type: "json_object" } 很少回傳格式錯誤的東西

整體判斷:在「不離開 Cloudflare 生態系」的限制下,這是目前最好的繁體中文 LLM 選項。

從 Gemma 3 遷移到 Gemma 4

@cf/google/gemma-3-12b-it 在 2026-05-30 被標為 deprecated。Cloudflare 給的建議替代品有三個:@cf/zai-org/glm-4.7-flash(快速 tool calling)、@cf/google/gemma-4-26b-a4b-it(高效開源模型)、@cf/moonshotai/kimi-k2.6(agentic + vision,但需要付費方案)。從 Gemma 3 過來,最直接的就是 Gemma 4。

架構變化:MoE Gemma 4 採用 Mixture-of-Experts 架構。總參數 26B,但每次推論只啟動約 4B(a4b = active 4 billion)。實際推論速度比 Gemma 3 12B 更快,同時在多數任務上表現更好。

256K context window Gemma 3 在 Workers AI 上是 80K,Gemma 4 是 256K。對需要塞入大量檢索文件的 RAG 場景,這是實打實的空間。

Vision 支援 可以傳入圖片做視覺理解,適合需要分析截圖、圖表的應用。

Function calling 原生支援工具呼叫,比起用 prompt 硬塞 JSON 更可靠,適合 agentic workflow。

價格反而更便宜 Gemma 3 是 $0.35 / $0.56 per M input/output tokens,Gemma 4 是 $0.10 / $0.30。升級不需要拿成本去換。

// 遷移就是換 model ID,呼叫介面相同
const response = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
  messages: [
    { role: "system", content: "你是一個台灣攀岩社群的 AI 助手。" },
    { role: "user", content: "龍洞有哪些適合初學者的路線?" }
  ],
  max_tokens: 1024,
  stream: true,
});

介面相同不代表輸出相同。換模型之後 prompt 要重跑一次評估——尤其是靠 few-shot 或特定措辭撐住的 JSON 格式指令,換模型是最容易破的地方。

更新紀錄

  • 2026-08-18:gemma-3-12b-it 已於 2026-05-30 標為 deprecated,全文範例改為 gemma-4-26b-a4b-it,新增遷移章節與 GLM-4.7-Flash 對比。同時修正兩處事實:Gemma 3 在 Workers AI 的 context window 是 80,000 tokens(原寫 8192),以及 Gemma 3 有公開定價 $0.35 / $0.56 per M tokens(原寫沒有公開定價)。

參考資料