LLM の費用を管理したいなら、Cloudflare の AI Gateway をモデルの手前に置くのが近道です。AI Gateway はキャッシュ・レート制限・支出上限(spend limits)・ログをゲートウェイ単位でまとめて設定でき、Workers AI だけでなく Anthropic や OpenAI への呼び出しにも同じ設定が効きます。Workers からは env.AI.run() に gateway オプションを足すか、API の URL を gateway.ai.cloudflare.com に差し替えるだけで使えます。
この記事では、Workers AI の料金(ニューロン単価・無料枠)と AI Gateway の機能を 2026 年 10 月時点の公式ドキュメントで確かめ、型チェックとビルドを通した Worker のコード、Claude Code の通信を AI Gateway に通す設定までを順に説明します。
AI Gateway は、アプリと AI モデルのプロバイダーの間に入るプロキシです。リクエストを中継しながら、キャッシュ・レート制限・ログ・費用の集計を行います。Workers AI は、Cloudflare の GPU で Llama や gpt-oss などのオープンモデルを動かすサーバーレスの推論サービスです。
2 つは別の製品ですが、Workers の AI バインディング(env.AI)からはどちらも同じ形で呼べます。Workers AI のモデルを呼ぶときに gateway: { id } を付ければ、そのリクエストは AI Gateway を通ります1 。
Worker からのリクエストが AI Gateway の認証・レート制限・支出上限・キャッシュ・ログを通って Workers AI や Anthropic・OpenAI に届く構成図 図: 筆者作成(Cloudflare 公式ドキュメントをもとに構成)
AI Gateway を挟むと、次のことが 1 か所で済みます。
やりたいこと AI Gateway の機能 主な設定 同じ質問に何度も課金されたくない キャッシュ cf-aig-cache-ttl、cacheTtl呼び出しの回数を抑えたい レート制限 件数 / 期間、fixed か sliding 金額で上限をかけたい 支出上限(spend limits) ドル / 期間、モデル・プロバイダー・メタデータ別 誰がいくら使ったか知りたい ログ・費用の集計・カスタムメタデータ cf-aig-metadata、metadata機密を含むプロンプトを残したくない ログの payload を保存しない cf-aig-collect-log-payload: false
理由は 2 つあります。1 つは、2026 年 9 月に AI Gateway の費用まわりの機能がそろったことです。支出上限(spend limits)のドキュメントは 2026-09-30 に更新され、モデル・プロバイダー・カスタムメタデータの組み合わせでドル建ての予算をかけられるようになっています2 。上限を超えると 429 を返して止めるか、安いモデルへフォールバックさせられます2 。
もう 1 つは、Cloudflare Workers への関心が伸びていることです。Google トレンド(日本・過去 90 日、2026-10-05 取得)で「Cloudflare Workers」の相対値は、前 8 週の平均 0.8 から直近 4 週の平均 2.0 に上がりました。同じ回で取った「AWS Lambda」は 1.9 から 2.3、Workers 向けの Web フレームワーク「Hono」は 0.8 から 2.7 です。どれも値は小さいものの上向きです(Google トレンド: Cloudflare Workers・AWS Lambda の回 、Hono の回 )。Qiita でも、直近 14 日の cloudflare タグの記事数が 0 件から 3 件に増えていました(Qiita API を筆者集計、2026-10-05 取得)。
Google トレンドの相対値(日本・過去 90 日):直近 4 週と前 8 週の平均 データを表で見る Google トレンドの相対値(日本・過去 90 日):直近 4 週と前 8 週の平均 語 前8週 直近4週 Cloudflare Workers 0.8 2 AWS Lambda 1.9 2.3 Hono 0.8 2.7
出典: Google トレンド(日本・過去 90 日、2026-10-05 取得)の相対値。複数回の取得(Hono は別の回)。どの回も基準語 GitHub Copilot の直近 4 週平均は 26.7 で同じ尺度
Workers で AI 機能を作り始めると、最初に困るのが「どのモデルにいくら使ったか分からない」ことです。AI Gateway を先に入れておけば、あとからモデルを増やしても集計と上限の仕組みはそのまま使えます。
Workers AI は 1,000 ニューロンあたり $0.011 で課金されます3 。ニューロン(Neuron)は、リクエストの処理に使った GPU の計算量を表す Cloudflare 独自の単位です。料金ページにはモデルごとに「100 万トークンあたりのドル」と「100 万トークンあたりのニューロン」が並んでおり、どちらも同じ価格を別の単位で示したものです3 。
プラン 無料枠 超過分 Workers Free 1 日 10,000 ニューロン 使えない(Workers Paid が必要) Workers Paid 1 日 10,000 ニューロン $0.011 / 1,000 ニューロン
無料枠は毎日 00:00 UTC にリセットされます3 。一部の大きなモデル(@cf/ moonshotai/ kimi-k2.6 など)は、Workers Paid か AI Gateway のクレジットが必要です3 。
モデルによって単価は大きく違います。下のグラフは、料金ページに載っている LLM のうち代表的なものの出力トークン単価です。
Workers AI の LLM 単価(100 万トークンあたり、ドル) データを表で見る Workers AI の LLM 単価(100 万トークンあたり、ドル) モデル 入力(ドル) 出力(ドル) llama-3.2-1b-instruct 0.027 0.201 llama-3.1-8b-instruct-fp8-fast 0.045 0.384 gpt-oss-20b 0.2 0.3 gpt-oss-120b 0.35 0.75 llama-3.3-70b-instruct-fp8-fast 0.293 2.253 kimi-k2.6 0.95 4
出典: Cloudflare Workers AI Pricing(2026-10-01 更新、2026-10-05 参照)
公式の単価から、1 回あたりのニューロン数を計算できます。@cf/ meta/ llama-3.1-8b-instruct-fp8-fast は、入力 100 万トークンで 4,119 ニューロン、出力 100 万トークンで 34,868 ニューロンです3 。
入力 1,000 トークン: 4,119 × 0.001 ≒ 4.1 ニューロン
出力 300 トークン: 34,868 × 0.0003 ≒ 10.5 ニューロン
合計 ≒ 14.6 ニューロン / 回 → 無料枠の 10,000 ニューロンで 1 日約 680 回
同じ条件で llama-3.3-70b-instruct-fp8-fast(入力 26,668・出力 204,805 ニューロン / 100 万トークン)を使うと、1 回約 88 ニューロンで、無料枠では 1 日約 110 回です3 。出力トークンの単価差が効くので、要約や分類のように出力が短い用途から小さいモデルを試すのが安上がりです。
AI Gateway は全プランで使えます。ダッシュボードの分析・キャッシュ・レート制限といった基本機能は無料です4 。費用がかかるのは主にログの保存です。
2026 年 9 月 24 日以降に最初のゲートウェイを作った場合 : ログは Workers Logs の料金と保存期間に従います4
それより前から使っている場合 : Legacy Logs の上限が適用されます。Workers Free は全ゲートウェイ合計で 100,000 件、Workers Paid はゲートウェイごとに 10,000,000 件です4
Unified Billing (Cloudflare 経由で Anthropic などの利用料を払う仕組み): クレジット購入額に 5% の手数料がかかり、推論の単価自体はプロバイダーと同じです4
DLP (機密データの検出): 全プランで無料。Zero Trust の契約が無いアカウントでは、定義済みのプロファイル 2 種類を使えます4
自分のアカウントがどちらのログ料金に当たるかは、最初のゲートウェイを作った日で決まります。新しく始める場合は Workers Logs 側の料金表も確認してください。
ここからは、Workers AI と Anthropic を AI Gateway 経由で呼ぶ Worker を作ります。前提は Node.js 24、wrangler 4.147.0 です(2026 年 10 月時点)。手元では wrangler types・tsc --noEmit・wrangler deploy --dry-run まで通しています。実際のデプロイと推論の実行は、課金が発生するためしていません。
wrangler.jsonc に ai バインディングを足します1 。ゲートウェイ ID は default にしておくと、最初の認証済みリクエストで AI Gateway が自動でゲートウェイを作ります1 。
{
"name" : "aig-worker" ,
"main" : "src/index.ts" ,
"compatibility_date" : "2026-10-01" ,
"ai" : { "binding" : "AI" } ,
"vars" : {
"GATEWAY_ID" : "default" ,
"ANTHROPIC_MODEL" : "claude-sonnet-5-5"
}
}
ANTHROPIC_MODEL は、Anthropic のモデル一覧で確認した 2026 年 10 月時点の Sonnet 5.5 の ID(claude-sonnet-5-5)にしています(Cloudflare のドキュメントの例は claude-sonnet-4-5 のままです)。モデルは更新されるので、使う前にモデル一覧 で最新の ID を確かめて差し替えてください。Anthropic の API キーと AI Gateway のトークンは secret にします。
npx wrangler secret put ANTHROPIC_API_KEY
npx wrangler secret put CF_AIG_TOKEN
npx wrangler types
wrangler types は、バインディングと secret から Env の型を worker-configuration.d.ts に書き出します1 。ローカルでは .dev.vars に置いた secret も型に入ります。
Workers AI のモデルを呼ぶときは、第 3 引数に gateway を渡します。cacheTtl(秒)・cacheKey・skipCache・collectLog・metadata を指定できます1 。
const result = await env.AI .run (
"@cf/meta/llama-3.1-8b-instruct-fp8-fast" ,
{
messages : [
{ role : "system" , content : "日本語で 3 行に要約してください。" },
{ role : "user" , content : text },
],
max_tokens : 256 ,
},
{
gateway : {
id : env.GATEWAY_ID ,
cacheTtl : 3600 ,
metadata : { user_id : userId, feature : "summary" },
},
},
);
const logId = env.AI .aiGatewayLogId ;
metadata に入れた値はログに残り、支出上限の「メタデータ別」の予算にも使えます2 。ユーザー ID や機能名を入れておくと、あとで「どの機能が費用を使っているか」を切り分けられます。
Anthropic の Messages API は、ベース URL を次の形に変えるだけで AI Gateway を通ります5 。
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/anthropic/v1/messages
Worker の中では、env.AI.gateway(id).getUrl("anthropic") でこの URL を組み立てられます1 。ヘッダーは Anthropic 本来の x-api-key と anthropic-version に、AI Gateway の認証用の cf-aig-authorization を足します5 。
const base = await env.AI .gateway (env.GATEWAY_ID ).getUrl ("anthropic" );
const res = await fetch (`${base} /v1/messages` , {
method : "POST" ,
headers : {
"content-type" : "application/json" ,
"x-api-key" : env.ANTHROPIC_API_KEY ,
"anthropic-version" : "2023-06-01" ,
"cf-aig-authorization" : `Bearer ${env.CF_AIG_TOKEN} ` ,
"cf-aig-metadata" : JSON .stringify ({ user_id : userId, feature : "claude" }),
},
body : JSON .stringify ({
model : env.ANTHROPIC_MODEL ,
max_tokens : 512 ,
messages : [{ role : "user" , content : text }],
}),
});
if (res.status === 429 ) {
return Response .json ({ error : "budget or rate limit exceeded" }, { status : 429 });
}
OpenAI も同じ考え方で、ベース URL の https:/ / api.openai.com/ v1 を次の URL に置き換えます。
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai
Chat Completions なら末尾は / chat/ completions、Responses API なら / responses です6 。
プロバイダー AI Gateway 経由の URL 認証ヘッダー Anthropic …/ {gateway_id}/ anthropic/ v1/ messagesx-api-key + cf-aig-authorizationOpenAI …/ {gateway_id}/ openai/ chat/ completionsAuthorization + cf-aig-authorizationWorkers AI env.AI.run(model, input, { gateway })不要(バインディングは認証済み)
バインディング経由のリクエストは、同じアカウント内で認証済みとして扱われます。そのため cf-aig-authorization を付ける必要はありません1 。
コードを書いたら、型チェックと --dry-run のビルドで確かめます。--dry-run はアップロードせずにバンドルだけ作るので、課金もデプロイも発生しません。
wrangler types で Env 型を生成し、tsc --noEmit と wrangler deploy --dry-run が通るまでのターミナル 筆者の環境で実行した出力(wrangler 4.147.0、2026-10-05)
dry-run の出力に env.AI のバインディングが出ていれば、設定は読み込めています。全体のコードは 70 行ほどで、/ summary(Workers AI)と / claude(Anthropic)の 2 つのエンドポイントを持つ Worker です。
キャッシュは既定では無効です。ダッシュボードの AI > AI Gateway > Settings で Cache Responses を有効にするか、リクエストごとにヘッダーで指定します7 。
cf-aig-cache-ttl: キャッシュの有効期間(秒)。最短 60 秒、最長 1 か月7
cf-aig-cache-key: キャッシュキーを自分で決める。このヘッダーを付けたリクエストはキャッシュの対象になる7
cf-aig-skip-cache: キャッシュを使わずにプロバイダーへ送る7
既定のキャッシュキーは、プロバイダー・エンドポイント・モデル・認証ヘッダー・リクエスト本文全体を連結した SHA-256 です7 。本文が 1 文字でも違えば別のエントリになるので、効くのは「選択肢の決まった FAQ ボット」のような同一リクエストが多い用途です。レスポンスの cf-aig-cache-status ヘッダーで HIT / MISS を確かめられます7 。
レート制限は「60 秒に 100 件」のように件数と期間で決めます。方式は fixed (時間で区切った窓)と sliding (直近の期間)から選べます8 。超えたリクエストには 429 Too Many Requests が返り、プロバイダーには届きません8 。設定はゲートウェイ全体にかかります8 。
支出上限は、ドル建ての予算を期間ごとに設定する機能です。ゲートウェイの Settings > Spend limits で、1 ゲートウェイあたり最大 20 ルールまで作れます2 。
スコープの例 設定 予算の単位 全体で 1 つの予算 次元なし 全リクエストで共有 ユーザーごと メタデータ user_id を Split by value ユーザーごとに別の予算 特定モデルだけ model を Filter by valueそのモデルのリクエストだけ
上限に達すると 429 を返すのが既定です。動的ルーティング(Dynamic Routes)と組み合わせると、高いモデルの予算を使い切ったときに安いモデルへ自動で切り替えることもできます2 。
注意点として、支出上限は結果整合 です。リクエストの費用は完了後に記録されるため、同時に大量のリクエストが来ると一時的に上限を超えることがあります2 。費用の数字もトークン数と単価からの見積もりなので、請求額はプロバイダーの管理画面で確かめてください2 。
ログは既定で有効で、プロンプト・レスポンス・トークン数・費用・所要時間などが残ります9 。個人情報を含むリクエストでは、cf-aig-collect-log-payload: false を付けると本文だけ保存せず、トークン数や費用などのメタデータは残せます9 。cf-aig-collect-log: false はログそのものを残しません9 。
AI Gateway は Worker からの呼び出しだけでなく、Claude Code のようなコーディングエージェントの通信にも使えます。Cloudflare の公式ドキュメントには、Claude Code の環境変数を AI Gateway の Anthropic エンドポイントに向ける手順が載っています10 。
export ANTHROPIC_BASE_URL="https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/anthropic"
export ANTHROPIC_API_KEY="<CF_AIG_TOKEN>"
export ANTHROPIC_CUSTOM_HEADERS="cf-aig-authorization: Bearer <CF_AIG_TOKEN>"
claude
この例は、Anthropic のキーを AI Gateway に保存(BYOK)しているか Unified Billing を使う前提です。その場合 ANTHROPIC_API_KEY の値は無視されるので、ゲートウェイのトークンを入れています10 。自分の Anthropic キーを直接渡す場合は、ANTHROPIC_API_KEY に本物のキーを入れます10 。
チームで使うなら、次の分け方が実用的です。
開発用とアプリ用でゲートウェイを分ける : Claude Code の通信と本番アプリの通信が同じログに混ざらない
開発用ゲートウェイに支出上限を付ける : メタデータで人ごとに分けると、1 人が使いすぎても全体は止まらない
ログのダッシュボードで確かめる : 設定後に 1 回プロンプトを送り、Logs にモデル・トークン数・レイテンシが出れば経由できている10
Claude Code で Workers のアプリそのものを作る流れは Claude Code で Cloudflare Workers アプリを作る全手順 に、モデルの選び方は Claude Opus 5.5 と Sonnet 5.5 の使い分けと料金 にまとめています。
wrangler dev でも課金される : Workers AI はローカル開発でも Cloudflare のアカウントに接続して推論するため、使った分が課金されます1 。試すときは小さいモデルと短い max_tokens にする
ゲートウェイの認証で弾かれる : 認証を有効にしたゲートウェイ(Authenticated Gateway)に gateway.ai.cloudflare.com から送るときは、cf-aig-authorization にゲートウェイのトークンを付ける10 。バインディング経由なら不要1
キャッシュが効かない : 本文が完全一致しないと別のキーになります。会話履歴を毎回含めるチャットでは効きにくいので、cf-aig-cache-key で同じ意味のリクエストをまとめる7
429 の原因が分からない : レート制限と支出上限はどちらも 429 を返します8 2 。ダッシュボードのログで、どのルールに当たったかを確かめる
費用の数字が請求と合わない : AI Gateway の費用は見積もりです2 。月末の確定値はプロバイダーと Cloudflare の請求画面で見る
Workers AI のモデルでプロンプトの安全性を判定したい場合は、Cloudflare Clef(判定モデル)を Workers AI で使う も参考になります。
Workers AI は 1,000 ニューロンあたり $0.011、1 日 10,000 ニューロンまで無料(2026 年 10 月時点)
AI Gateway の基本機能(分析・キャッシュ・レート制限)は無料。ログは開始日によって Workers Logs か Legacy Logs の料金になる
Workers からは env.AI.run() の gateway オプション、外部プロバイダーは AI Gateway の URL(末尾がプロバイダー名)で経由させる
金額で止めたいときは支出上限、回数で止めたいときはレート制限。どちらも超えると 429
metadata にユーザー ID や機能名を入れておくと、費用の切り分けとユーザー別の予算に使える
次にやることは、default ゲートウェイで 1 回呼び出してログに出ることを確かめ、それから支出上限を 1 ルール足すことです。
はい。AI Gateway は全プランで使え、ダッシュボードの分析・キャッシュ・レート制限は無料です4 。ログの保存は、2026 年 9 月 24 日以降に始めた場合は Workers Logs の料金に従います4 。Anthropic や OpenAI の利用料は、それぞれのプロバイダーに払うか、Unified Billing で Cloudflare に払います。
ニューロンは、リクエストの処理に使った GPU の計算量を表す Workers AI の課金単位です3 。料金は 1,000 ニューロンあたり $0.011 で、料金ページにはモデルごとに 100 万トークンあたりのニューロン数とドル換算が並んでいます3 。
効きます。キャッシュはプロバイダーをまたいで同じ仕組みで、プロバイダー・モデル・認証ヘッダー・本文が完全一致したリクエストを Cloudflare のキャッシュから返します7 。キャッシュから返したリクエストはプロバイダーに届きません。
既定では 429 Too Many Requests を返し、期間がリセットされるまでリクエストを止めます2 。Dynamic Routes と組み合わせれば、上限に達したモデルから安いモデルへ自動で切り替えることもできます2 。上限は結果整合なので、同時リクエストが多いと少し超えることがあります。
呼べます。openai/ gpt-4.1-mini のように {author}/ {model} 形式で指定すると、AI Gateway 経由で外部モデルを呼べます1 。この場合は Unified Billing(Cloudflare のクレジット)で支払う形になり、自分の API キーは要りません1 。自分のキーで払いたい場合は、この記事の手順 3 のように URL を差し替えて呼びます。
Workers Bindings · AI Gateway — Cloudflare Docs, 2026-10-02 更新(2026-10-05 参照)。ローカル開発の課金は Set up Workers AI with AI Gateway 、バインディングが認証済みになる点は Authenticated Gateway による ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11
Spend limits · AI Gateway — Cloudflare Docs, 2026-09-30 更新(2026-10-05 参照) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11
Pricing · Workers AI — Cloudflare Docs, 2026-10-01 更新(2026-10-05 参照) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
Pricing · AI Gateway — Cloudflare Docs, 2026-09-24 更新(2026-10-05 参照) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
Anthropic · AI Gateway — Cloudflare Docs, 2026-07-28 更新(2026-10-05 参照) ↩ ↩2
OpenAI · AI Gateway — Cloudflare Docs, 2026-04-20 更新(2026-10-05 参照) ↩
Caching · AI Gateway — Cloudflare Docs, 2026-09-30 更新(2026-10-05 参照) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
Rate limiting · AI Gateway — Cloudflare Docs, 2026-09-30 更新(2026-10-05 参照) ↩ ↩2 ↩3 ↩4
Logging · AI Gateway — Cloudflare Docs, 2026-09-24 更新(2026-10-05 参照) ↩ ↩2 ↩3
Claude Code · AI Gateway — Cloudflare Docs, 2026-08-17 更新(2026-10-05 参照)。確認手順は Coding agents による ↩ ↩2 ↩3 ↩4 ↩5