1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudflare Workers AI はカタログに載っていても無料で使えるとは限らない — 403 と空の response

1
Last updated at Posted at 2026-10-14

はじめに

📝 この記事は note ・ Zenn にも投稿しています。

2026-08-21、ローカル LLM の入れ替え候補として Qwen3.8-27B を試すことになった。4bit 量子化でも 15GB あるので、ダウンロードする前に Cloudflare Workers AI の無料枠で性能を見ておく。そういう順番にした。

Workers AI のモデル一覧(/ai/models/search)は 64モデルを返した。前回の調査から新しく入ったのはこの6つ。

  • @cf/qwen/qwen3.8-27b
  • @cf/deepseek-ai/deepseek-v4-flash-0731
  • @cf/deepseek-ai/deepseek-v4-pro-0813
  • @cf/zai-org/glm-5.2
  • @cf/nvidia/nemotron-3-120b-a12b
  • @cf/moonshotai/kimi-k2.7-code

一覧に並んでいても、叩くと403が返る

新しく入ったモデルを1本ずつ呼んだ。4本が 403 で返ってきた。

無料プランで8本を呼んだ結果。4本が403、4本が200。200でも qwen3.8-27b は result.response が空文字で、本文は result.choices[0].message.content にあった

Model ... is not available on the Workers Free plan
モデル 無料プラン 応答
deepseek-v4-flash-0731 ✕ 403 —
deepseek-v4-pro-0813 ✕ 403 —
glm-5.2 ✕ 403 —
kimi-k2.7-code ✕ 403 —
qwen3.8-27b ○ 2.3〜7.3秒
nemotron-3-120b-a12b ○ 0.5秒
gpt-oss-120b ○ 0.3秒
gemma-4-26b-a4b-it ○ 0.8秒

モデル一覧の API は、プランによる制限を区別せずに全部を返す。一覧に載っていることと、無料で呼べることは別だった。

どのモデルが弾かれるかは今後も変わりうる。組み込む前に1回だけ実際に叩いて、200 が返るかを見る手順を足した。

本文が空文字で返ってきた

無料で通った qwen3.8-27b に短い質問を投げた。HTTP 200、エラーなし。なのに本文が空だった。

旧来のテキスト生成モデルは、本文を result.response に入れて返す。

{ "result": { "response": "本文" } }

qwen3.8-27b は OpenAI 互換の形で返ってくる。response は空文字のまま残っていて、本文は choices の中にあった。

{
  "result": {
    "response": "",
    "choices": [
      { "message": { "content": "本文", "reasoning": "思考の過程" } }
    ]
  }
}

response キーを読むコードでは、「モデルが無言で返した」ように見える。実際に最初の1回はこれで空振りした。

読み出しは両方の形に対応させた。

r = res.json()["result"]
text = r.get("response") or ""
if not text and r.get("choices"):
    text = r["choices"][0]["message"].get("content") or ""

思考だけで枠を使い切る

qwen3.8-27b は思考型のモデルで、思考は message.reasoning に分けて返る。ここにもう一段の落とし穴があった。

max_tokens を小さく絞ると、上限まで全部を思考に使って、content が空のまま終わる。

客観的に正解が決まる5題を既定の設定のまま解かせたところ、1題は本文がゼロだった。その1題だけで 878 neurons を思考に消費している。正答は5題中3題。

エラーは出ないので、空の content を「答えられなかった」と読むか「思考で打ち切られた」と読むかは、reasoning の長さを見ないと区別できない。

無料枠でどれくらい回せるか

無料枠は 1日 10,000 neurons。モデルごとではなく、全モデルで共有される。

呼び方 所要 消費
短答(入力66トークン・出力80トークン) 7.3秒 26 neurons
Python の設問に1問答える 2.3秒 29 neurons
長め(出力400トークン) 86秒 121 neurons

短答なら 1日およそ380回。ダウンロード前にモデルの当たりを付けるには足りる量だった。このあと 27B は実際にダウンロードして、手元で比べている。


一覧に載っているものは使えるものだと思っていた。
200 が返ってきたら、答えも入っていると思っていた。どちらも1回叩くまで分からなかった。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?