3行でいうと
- 場面は5つです。①curlでWorkers AIを呼ぶ、②Workerに載せて
wrangler devとwrangler deploy、③AI Gatewayを通す、④AI Searchに資料を入れて検索する、⑤Agents SDKの雛形を動かす。 - ①と③はWranglerなしでも進められます(トークンとアカウントIDが要る)。②と⑤は、
npm create cloudflare@latestで雛形を作る手順です。 wrangler devで手元で試すときも、モデルはCloudflareのアカウント上で動き、Workers AIの利用料が発生する、と公式のページが明記しています。- 返ってくるデータの形は、公式のページに載っている例(
result.response、choices[0].message.contentなど)を写しています。モデルの答えの中身は、そのつど変わります。 - 手順の最後に、後始末(Workerの削除、トークンの削除、ログアウト)の、公式に書かれている範囲をまとめました。
この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。コマンドとコードは「公式の例の写し」と書いたものだけが写しで、それ以外は「この記事で組んだ例(動作は確かめていません)」です。画面の表記は変わることがあるので、手元の画面と照らして読んでください。モデル名や、コマンドに出てくる版は、公式ページがその日に載せていたものです。
先に結論
- いちばん短い呼び方は、curl1本です。 公式の手順では、ダッシュボードで Workers AI > Use REST API からトークンとアカウントIDを取り、
https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instructへ送ります。 - アプリに組み込むなら、Workerのバインディング(
env.AI.run)です。 設定ファイルにaiの欄を足し、コードから呼びます。公開はWranglerのdeployで、https://hello-ai.<あなたのサブドメイン>.workers.devの形のURLができます。 - AI Gatewayは、同じ呼び出しに「ゲートウェイを指す1行」を足す形です。 Workers AIのモデルなら
cf-aig-gateway-idのヘッダー、Workerからならenv.AI.runの3つ目の引数です。 - AI Searchは、ダッシュボードで「Create Instance」し、「Items」に資料を上げ、「Playground」で試す順です。 設定の細かい欄(モデルの選択、データソースの項目名)は、読んだページには載っていません。
- 料金と無料枠は01と04。 この記事は数字を書きません。公式がはっきり書く注意は、ローカル実行でもWorkers AIの利用料がかかることと、一部のモデルは無料のままでは使えないことです。
前提:用語をそろえる
- プロンプト:AIに送る指示の文。この記事に出てくる例は、公式の例か、「この記事の例」と書いたものです。
- モデルID:どのAIを使うかの名前。CloudflareのWorkers AIでは
@cf/で始まります(例:@cf/meta/llama-3.1-8b-instruct)。他社のモデルはopenai/gpt-4.1-miniのように提供元名から始まる形が、AI Gatewayの公式の例にあります。 - REST API:URLにデータを送ってAIを呼ぶ方式。
curlはそのためのコマンドです。 - バインディング:Workerの設定ファイルに書く、機能への接続。AIは
"ai": {"binding": "AI"}と書き、コードではenv.AIになります。 - Worker:Cloudflareの上で動かす小さなプログラム。
- ゲートウェイ:AI Gatewayの窓口の名前(05の段階7で作る)。
- Playground:画面で試す場所。AI SearchのインスタンスにPlaygroundのタブがあります。
- ストリーミング:答えを少しずつ返す方式。OpenAI互換の「Responses」の口は、ストリーミングなし(
stream: falseのみ)と公式は書いています(08)。 - 準備の用語(Wrangler、APIトークン、アカウントID、OAuth)は05を見てください。
最初の1時間の順番(この記事の案)
公式の資料に「1時間の順番」はありません。次の表は、この記事で、各手順の重さを見て並べた案です。
| めやす | やること | 使う節 | 先に必要なもの |
|---|---|---|---|
| 0〜15分 | アカウントを作り、Wranglerを入れ、wrangler login |
05の段階1〜3 | メール |
| 15〜25分 | curlで1回呼ぶ(トークンとアカウントIDを取る) | 場面1 | アカウント |
| 25〜40分 | hello-ai を作り、wrangler dev で見て、wrangler deploy |
場面2 | Node.js、Wrangler |
| 40〜50分 | ゲートウェイを作り、同じ呼び出しに足す | 場面3 | アカウント、トークン |
| 50〜60分 | 後始末(トークン削除、Worker削除、ログアウト) | 後始末 | ―― |
AI SearchとAgents SDKは、上の1時間には入れていません(場面4、場面5)。
場面1:curlでWorkers AIを呼ぶ(公式の「Get started: REST API」)
1-1 トークンとアカウントIDを取る
- Cloudflareのダッシュボードで、Workers AI のページへ進みます。
- Use REST API を選びます。
- Create a Workers AI API Token を選びます。
- 画面に入っている内容を確かめて、Create API Token を選びます。
- Copy API Token を選んで、値を保管します。公式は、このトークンはプロフィールの画面にも表示される、と書いています(秘密の値の扱いは05の段階4)。
- Get Account ID の欄の Account ID の値をコピーして保管します。
自分でトークンを作る場合(テンプレートを使わない場合)は、Workers AI - Read と Workers AI - Edit の両方が要る、と公式に書かれています(権限の考え方は05の段階6)。
1-2 モデルを呼ぶ(公式のコマンドの写し)
{ACCOUNT_ID} と {API_TOKEN} を、保管した値に置き換えます。
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct \
-H 'Authorization: Bearer {API_TOKEN}' \
-d '{ "prompt": "Where did the phrase Hello World come from" }'
期待される結果(公式の記述):JSONが返り、答えは result.response に入り、success、errors、messages も並びます。公式の例の答えの内容は、「Hello World」という言い回しがBell Labsの1974年ごろの、Brian KernighanのCの例に結びつく、という説明です。答えの文章は毎回同じとは限りません。
別のモデルを使うときは、公式のモデル一覧(Workers AI models)から選び、URLの末尾の @cf/meta/llama-3.1-8b-instruct の部分を、そのモデルのIDに置き換えます。公式のページは「{model} を置き換える」と書いていますが、コマンドではモデル名がURLにそのまま書かれています(ページ内の書き方が少し違います)。
1-3 プロンプトを変えてみる(この記事の例)
次の指示文は、この記事で組んだ例です(動作は確かめていません)。形は公式の例と同じで、prompt の文だけを変えます。
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct \
-H 'Authorization: Bearer {API_TOKEN}' \
-d '{ "prompt": "Explain what an API token is in two sentences." }'
モデルによって、日本語の答えの質や、使える入力の形が違うことがあります。モデルごとの入力の形は、公式のモデルのページで確認します。この記事では読めていません。
場面2:Workerに載せて、手元で見て、公開する(公式の「Get started: Workers and Wrangler」)
2-1 雛形を作る
- ターミナルで、次のコマンドを実行します(公式の写し)。
npm create cloudflare@latest -- hello-ai
create-cloudflare(C3)の質問が出ます。公式のページが選ぶ答えは次のとおりです。
| 質問(公式の表記) | 公式が選ぶ答え |
|---|---|
| What would you like to start with? | Hello World example |
| Which template would you like to use? | Worker only |
| Which language do you want to use? | TypeScript |
| Do you want to use git for version control? | Yes |
| Do you want to add an AGENTS.md file...? | Yes |
| Do you want to deploy your application? | No(先に手を入れるため) |
hello-aiというフォルダができ、中にsrc/index.ts(Hello Worldのプログラム)とwrangler.jsonc(設定ファイル)があります。フォルダに入ります。
cd hello-ai
2-2 AIのバインディングを足す
wrangler.jsonc に、次の欄を足します(公式の例の写し。公式は「Wranglerファイルの末尾に」と書いています)。
{
"ai": {
"binding": "AI"
}
}
これは断片です。wrangler.jsonc では、最上位の { ... } の中に入れ、前の項目の後ろにカンマが要ります(公式のページの補足)。TOML形式(wrangler.toml)では、[ai] の下に binding = "AI" と書く、と併記されています。足すと、コードから env.AI で呼べます。
2-3 コードを書き換える
src/index.ts の中身を、公式のページのコードに置き換えます。公式のコードは、env.AI.run("@cf/google/gemma-4-26b-a4b-it", { messages: [...], chat_template_kwargs: { enable_thinking: false } }) を呼び、結果を Response.json(response) で返します。messages には、system の役割で「You are a helpful assistant.」、user の役割で「What is the origin of the phrase Hello, World」が入っています。コードの全文は、公式ページで確認してください。この記事は、写し間違いを避けるため、長いコードは載せていません。
2-4 手元で動かす
- 次のコマンドを実行します。
npx wrangler dev
- ログインを求められます(05の手順Aと同じです)。
- Wranglerが、多くの場合
localhost:8787のURLを表示します。ブラウザで開くと、WorkerがAIを呼んだ結果が出ます。
期待される結果(公式の記述):JSONが返り、choices[0].message.content に答えが入る形です("object": "chat.completion" など、OpenAIのChat Completionsに似た形)。
重要(公式の注記):Workers AIは常にCloudflareのアカウントを呼んでモデルを動かすため、ローカル開発でもWorkers AIの利用料が発生します。
2-5 公開する
- ログインします。
npx wrangler login
- ブラウザが開くので、ダッシュボードにログインし、Wranglerがアカウントに変更を加えることを許可するため Allow を選びます。
- 公開します。
npx wrangler deploy
- 公開先のURLは
https://hello-ai.<あなたのサブドメイン>.workers.devの形です。ブラウザで開くと、AIが答えます。
2-6 公開したあとに使う関連コマンド(公式のWorkersコマンドのページ)
| コマンド | 公式の説明(要約) |
|---|---|
npx wrangler deploy --dry-run |
コンパイルだけして、実際の公開はしない |
npx wrangler tail |
各リクエストのconsoleログと例外を、リアルタイムで流す。--format、--status、--search などで絞れる。トラフィックが多いとサンプリングになり、メッセージが落ちることがある |
npx wrangler dev --local |
手元だけで動かし、リモートのバインディングを使わない(ただしAIのバインディングについては、上の公式の注記のとおり、常にアカウントを呼ぶと書かれている) |
npx wrangler dev --remote |
Cloudflareのプレビュー環境で動かし、バインディングをリモートの資源につなぐ |
--local とAIバインディングの関係は、読んだページでは詳しく書かれていません。AIを呼ぶコードの手元での挙動は、場面2の公式の注記(利用料が発生)を前提にしてください。
場面3:AI Gatewayを通して呼ぶ(公式の「Get started」ほか)
先に、05の段階7で、ゲートウェイを作っておきます。
3-1 Workers AIのモデルを、ゲートウェイ経由でcurlする(公式の例の写し)
公式のコメントは、$CLOUDFLARE_API_TOKEN の値は wrangler auth token で、アカウントIDは wrangler whoami で取れると書いています。
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/v1/chat/completions" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "cf-aig-gateway-id: default" \
--header "Content-Type: application/json" \
--data '{
"model": "@cf/moonshotai/kimi-k2.6",
"messages": [
{
"role": "user",
"content": "What is Cloudflare?"
}
]
}'
ポイント(公式の記述):Workers AIのモデルは、cf-aig-gateway-id のヘッダーが常に必要です。default は、既定のゲートウェイを指す値、と書かれています。公式の「Get started」は、default のゲートウェイが無ければ最初の認証つきリクエストで自動的に作られ、請求は Standard billing になる、とも書いています(05の段階7)。自分で作ったゲートウェイを使うなら、その名前を入れます。このモデル(kimi-k2.6)は、01によると、無料のままでは使えないモデルに入っています。
3-2 他社のモデルを呼ぶ(公式の例の写し)
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/v1/chat/completions" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"model": "openai/gpt-4.1-mini",
"messages": [{"role": "user", "content": "What is Cloudflare?"}]
}'
公式の記述:他社のモデルのときは、ゲートウェイのヘッダーは不要で、default が自動で使われます。この例は提供元のキーをヘッダーに付けていません。提供元への認証は、Unified Billing(前払いクレジット)、BYOK(自分のキーをCloudflareに保存)、リクエストのヘッダー(自分でキーを送る)の3つが書かれています。どれを使うかの設定は、08で書きます。
3-3 Workerのバインディングから、ゲートウェイを指定する
公式の「Workers AIをAI Gatewayから使う」のページは、env.AI.run の3つ目の引数に gateway を足す形を示しています。
id:ゲートウェイの名前(Workerと同じアカウントのもの)skipCache:キャッシュを使わないか(初期値はfalse)cacheTtl:キャッシュの有効期間(数値)
例(公式の例のうち、env.AI.run の呼び出し部分の写し。公式は fetch ハンドラーの中に書いています。TypeScript版もあります):
const response = await env.AI.run(
"@cf/meta/llama-3.1-8b-instruct",
{
prompt: "Why should you use Cloudflare for your AI inference?",
},
{
gateway: {
id: "{gateway_id}",
skipCache: false,
cacheTtl: 3360,
},
},
);
3-4 ログを見る・止める(公式の「Logging」)
- 見る場所:ダッシュボードの AI Gateway のページです。専用のログ画面の名前は、読んだページには書かれていません。
- 何が残るか:1件のログに、プロンプト、応答、提供元、時刻、状態、トークン数、費用、所要時間、ユーザーエージェントが入りうる、と公式は書いています。
- 初期値:ゲートウェイごとに、ログは既定でオンです。
- 止める(ゲートウェイ全体):Settings の Logs をオフにします。
- 止める(1回のリクエストだけ):ヘッダー
cf-aig-collect-log: falseを付けます。 - 本文だけ残さない:ヘッダー
cf-aig-collect-log-payload: falseで、トークン数やモデルなどのメタデータだけの記録になります。cf-aig-collect-logがfalseなら、記録そのものが作られません。 - 保存できる量・保持期間・ログの削除は、このページには記載が見つかりませんでした。なお、2026年9月24日以降に作られたゲートウェイはWorkers Logsの料金と保持期間の扱い、それ以前のものは旧方式のログ、と書かれています。くわしくは公式のリンク先を確認してください。
場面4:AI Searchに資料を入れて検索する(公式の「Get started」のダッシュボード手順)
4-1 インスタンスを作る
- ダッシュボードで AI Search を開きます。
- Create Instance を選びます。
- インスタンスに名前を付けます。
- (任意)データソースをつなぎます。公式の例は、自分のウェブサイトか、R2のバケット(Cloudflareの保管場所)です。
- 設定を確かめます。
- Create を選びます。
4-2 資料を上げる
- AI Search で、作ったインスタンスを選びます。
- Items のタブを選びます。
- ファイルを上げます。公式は、AI Searchが自動で索引(検索用の目次)を作る、と書いています。
4-3 Playgroundで試す
- インスタンスの Playground のタブを開きます。
- Chat か Search を選びます。
- 問いを入れて、答えを見ます。公式は、内容の索引が済んでから行うよう書いています。
「Chat」と「Search」の違い(答えの文章まで作るか、該当箇所を返すか)は、読んだページでは説明されていません。
4-4 アプリから使う
公式は、Workers Binding(Workerのコードから)とREST API(HTTPで)の2つを挙げています。どちらも手順の中身は、この記事では読めていません。AI Searchの外部の道具からのつなぎ口(MCPの公開口)は、07の連携Dで書きます。
読めなかった点:モデルの選択肢、データソースの設定項目の名前、索引にかかる時間や区切り方、料金と制限(制限と料金のページは01と04で触れています)。
場面5:Agents SDKの雛形を動かす(公式の「Quick Start」)
AIの鍵やシークレットは要らない手順です(公式の記述)。
- 雛形を作ります(公式の写し)。
npm create cloudflare@latest -- --template cloudflare/agents-starter
- 雛形のフォルダに入り、依存を入れ、開発サーバーを起動します(フォルダ名は公式の例)。
cd agents-starter
npm install
npm run dev
- ブラウザで
http://localhost:5173を開きます。 - 雛形に入っているファイル(公式の記述):
src/server.ts(エージェントのコード)、src/client.tsx(Reactの画面)、wrangler.jsonc(設定)、tsconfig.json、vite.config.ts。 - 公式のクイックスタートは、カウンターのエージェントを作ります。
src/server.tsに、Agentを継承したクラスを置き、状態(count)と、画面から呼べるメソッド(increment、decrement、reset)を持たせます。wrangler.jsoncには、Durable Objectsのバインディング(nameとclass_name)、migrationsのnew_sqlite_classes(状態の保存に使う)、compatibility_flagsのnodejs_compat(agentsのパッケージに必要)を書きます。compatibility_dateは今日の日付にする、と公式は注記しています。コードと設定の全文は、公式ページで確認してください。(取得の際、最初のコード例の一部が崩れて読めたため、この記事は写していません。) - 画面のボタン(
-、Reset、+)を押すと、数字がWebSocketで更新されます(公式の記述)。 - 公開は、次のコマンドです。公式のページは、Cloudflareへのログインやアカウントの設定が先に要るかどうかを書いていません。05の手順に従っておくことになります。
npm run deploy
後始末(公式に書かれている範囲)
| 対象 | 方法 | 出どころ・注意 |
|---|---|---|
| 作ったWorker | npx wrangler delete。--name で指定、--env で環境、--dry-run で実際には消さずに出力だけ見られる |
公式は、Workerと、関連するCloudflare開発者プラットフォームの資源すべてを削除すると書く。先に --dry-run で確かめるのが、この記事の案 |
| APIトークン | ダッシュボードのAPI Tokensのページで削除 | 05の段階4 |
| Wranglerのログイン | npx wrangler logout |
OAuthトークンを取り消し、保存した認証情報を削除(公式) |
| ゲートウェイ(AI Gateway) | ―― | 削除の手順は、読んだページに記載が見つからない |
| AI Searchのインスタンス | ―― | 削除の手順は、読んだページに記載が見つからない |
| アカウント | ―― | 閉鎖の手順は、読んだページに記載が見つからない(04を参照) |
つまずきと直し方
| 症状 | 公式に書かれている原因・直し方 | 書かれていないこと |
|---|---|---|
| curlで認証エラー | トークンの権限不足の可能性。自分で作ったトークンは Workers AI - Read と Workers AI - Edit の両方が要る |
エラーメッセージごとの対処 |
wrangler dev でログインを求められる |
手順どおり(05の手順A)。続けてよい | ―― |
| 手元で試したのに利用料がかかった | 公式が明記:ローカル開発でもWorkers AIは常にアカウントを呼ぶ | 無料枠で足りるかの目安(01・04) |
| ゲートウェイ経由のWorkers AIが失敗する | Workers AIのモデルには cf-aig-gateway-id が常に必要 |
ゲートウェイ名の綴りの確認方法 |
| 認証つきゲートウェイでエラー | ヘッダーなしだと「missing authorization」で失敗する。同じアカウントのWorkerのバインディング経由は、あらかじめ認証済み | トークンの作り方の細部は08の連携E |
| 有料プランが要るモデルで失敗する | 01で書いたとおり、一部のモデルは無料のままでは使えない | 具体的なエラーの形 |
| Playgroundで答えが出ない | 公式は、内容の索引が済んでから試すよう書いている | 索引にかかる時間 |
deploy のURLが開けない |
形は https://hello-ai.<あなたのサブドメイン>.workers.dev |
サブドメインの決まり方や、変え方 |
たとえ話:カウンターで頼んで、番号札で受け取る
curlは「カウンターに紙のメモを出して、答えをその場で受け取る」こと、Workerは「自分の店を出して、お客さんの注文をAIに取り次ぐ」こと、AI Gatewayは「その取り次ぎ口に、受付の帳簿を置く」ことです。帳簿には注文の中身が残りうるので、残す・残さないは自分で決めます。これは僕らのたとえで、公式の表現ではありません。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。公式の手順を順に並べたものです。コマンドとコードのうち、「公式の例の写し」としたものは公式ページの例で、動作は確かめていません。
- ローカル実行でも利用料がかかります。
wrangler devを繰り返す前に、01と04で、無料枠と上限、上限を超えたときの動き(エラーで失敗する、と公式が書く)を確かめてください。 - 秘密の値は例でも書いていません。
{API_TOKEN}、$CLOUDFLARE_API_TOKENは、置き換え用の文字です。コマンドを履歴に残したくないときの扱いは、公式のページには書かれていません。 wrangler devは、手元のworkerdというプロセスでWorkerを動かします。公式は、堅牢に隔離された環境ではないので、信頼できるコードだけを動かすよう書いています。- AI Gatewayのログには、プロンプトと応答が残りえます。 既定でオンです。残したくない内容を送る前に、
cf-aig-collect-logなどの設定を確かめてください。 - 公式のページ同士で違う点:REST APIの手順は「
{model}を置き換える」と書き、コマンドではモデル名が直接URLに入っています。AI Searchの記述は、メニュー名が場所によって「Public Endpoint」「Public Endpoints」と違います(07)。 - 読めなかった・確認できていないこと:モデルごとの入力の形、AI SearchのWorkers BindingとREST APIの手順の中身、AI Searchのモデル選択と設定項目名、
wrangler dev --localとAIバインディングの詳しい関係。 - 金額・無料枠・上限は、この記事の対象外です。規約や契約、個人情報の解釈は、専門家や公式に確認してください。この記事は法律の助言ではありません。
出典
- Workers AI: Get started with REST API(Cloudflare Docs、確認日 2026-10-25)
- Workers AI: Get started with Workers and Wrangler(Cloudflare Docs、確認日 2026-10-25)
- Wrangler commands: Workers(Cloudflare Workers docs、確認日 2026-10-25)
- Wrangler commands: General(Cloudflare Workers docs、確認日 2026-10-25)
- AI Gateway: Get started(Cloudflare Docs、確認日 2026-10-25)
- AI Gateway: Workers AI provider(Cloudflare Docs、確認日 2026-10-25)
- AI Gateway: Logging(Cloudflare Docs、確認日 2026-10-25)
- AI Gateway: Authentication(Cloudflare Docs、確認日 2026-10-25)
- AI Search: Get started(Cloudflare Docs、確認日 2026-10-25)
- AI Search: Get started with the dashboard(Cloudflare Docs、確認日 2026-10-25)
- Agents: Quick start(Cloudflare Docs、確認日 2026-10-25)