コンテンツへスキップ

移行ガイドCloudflare AI Gatewayから

移行を迫られていないときにCloudflare AI Gatewayから離れる

買収もなく、メンテナンスモードでもなく、提供終了の通知もありません。AI Gatewayは一般提供されており、2026年を通じて活発に開発され、その中核機能はすでにお持ちのアカウントで無料です。そのため、このページが答えるのは移行の方法ではなく、移行すべきかどうかです。最初に、ご自身のゲートウェイで測れる3つの数字を示します。うち2つは留まるべきと示します。

INFROのアカウントはセルフサービスで作成できます。 カタログ、ドキュメント、API仕様は公開済みで、ゲートウェイもデプロイ済みです。v1以降の機能には「今後提供」と表示しています。 プランとトライアル

現状

これを強制するものはありません

AI Gatewayは一般提供されており、2026年を通じて活発に開発されました。6月に支出上限、8月にUser Insightsが追加されています。コアは、どのCloudflareアカウントでも無料です。どこかのページが異なることを述べていたら、信じる前に変更履歴で確認してください。

重なる部分は以前より大きくなった

どちらの製品も、リクエストの経路にいて、すべてのリクエストに価格を付け、支出をユーザーやチームに配分し、ドル建ての上限でリクエストを拒否し、OpenTelemetryをエクスポートします。1年前、この比較はゲートウェイ対コントロールプレーンでした。今はそうではありません。

1つの問いで決まる

コストの数字を、それを作っていない人に対して説明する必要があるかどうか。ないなら、無料のゲートウェイが正しい道具であり、このガイドはここで終わりです。あるなら、このページの残りはそのためのものです。

どれもお客様自身のゲートウェイやカレンダーで確認でき、検討材料ではなく答えが出ます。3つのうち2つはCloudflareに有利な結論になり、それが正直な分布です。これを読んでいるチームの多くは、今あるものを使い続けるべきです。

  1. キャッシュヒット率

    通常に見えた1か月のゲートウェイの分析。Cloudflareはゲートウェイごとに報告します。

    これだけで判断が決まることがあります。INFROにも、チャット補完向けの完全一致レスポンスキャッシュがありますが、空の状態から始まり、有効にするまでオフで、プロジェクトとキーの環境ごとにキー付けされ、既定では決定論的なリクエスト(temperatureが0、またはseed指定)だけを保存します。ヒットのうち、どれだけがその条件に合うリクエストからのものかを調べてください。残りは、移行後にプロバイダーへの呼び出しになり、プロバイダーが課金します。その割合が大きいなら、留まるのが良い答えであり、このページの他のどの機能もそれを上回りません。

  2. Unified Billingが有効かどうか

    ゲートウェイの設定。Cloudflareが推論を購入している場合、ここにそう書かれています。

    有効になっている場合、設定の問題ではなく、調達の問題です。INFROは推論を購入しないため、移行には、利用しているすべてのプロバイダーとご自身で契約してアカウントを開設する必要があり、それにはベンダーのオンボーディングと同じだけの時間がかかります。3週目になってからではなく、今のうちに確認してください。

  3. エンジニアリング以外の人が、その数字について尋ねてくる頻度

    ダッシュボードではありません。直近の四半期にあった、経理、調達、価格設定に関する会話です。

    答えが「決してない」なら、無料のゲートウェイが正しい道具であり、このガイドはここで終わりです。これは丁寧な撤退ではなく、正しい推奨です。コントロールプレーンがサブスクリプションに値するのは、コストの数字を、それを作っていない誰かに対して説明しなければならない時点からで、それより前ではありません。

このセクションは意図的に違いの説明より前に置いています。このシリーズのほかのガイドと違い、第三の製品を勧めるものではありません。すでに運用している製品を勧めるものです。

このセクションは、意図的にマッピングの前に置いています。Cloudflare AI Gatewayは、運用に費用がかからない優れた製品であり、このページを読んだ結果として最も多い正しい結論は、ページを閉じて今のものを使い続けることです。ここには、買収も、メンテナンスモードも、急がせる非推奨の通知もありません。以下の理由は、反論の前の和らげではなく、当てはまるときはそれが答えです。

コストの数字に読み手がいるなら、移行を検討する価値があります。モデルの請求額が変動した理由を経理が尋ねる、顧客向けのマージンを維持しなければならない、複数のチームがプロバイダーを共有して誰がいくら使ったかで意見が分かれる、といった場合です。それが、請求書と照合されていない数字では足りなくなる時点であり、このページで、Cloudflare自身のドキュメントがまだ答えていない唯一の主張です。

今のままでいるべき場合

  • ゲートウェイは役目を果たしており、誰もその数字に疑問を持っていません。コントロールプレーンの価格に見合うのは、エンジニアリング以外の誰かがコストの数字に基づいて行動しなければならないときです。そうなっていなければ、まだ見合っていません。
  • リクエストの経路でガードレールやDLPが必要な場合。Cloudflareは、プロンプトとレスポンスの有害なコンテンツをスキャンし、機密データがプロバイダーに届く前にブロックまたはフラグ付けできます。INFROのガードレールはパターンベース(PII、シークレット、お客様独自の用語、チャット補完のみ)で、Cloudflareの安全性カテゴリーのガードレールに相当するものはありません。
  • Workers AIを使っている、またはCloudflareがUnified Billing経由で推論を購入している場合。INFROは推論を運用せず、購入もしません。移行の前に、各プロバイダーとのご自身のアカウントが必要で、それは設定ではなく商務上のステップです。
  • ルーティングが、条件分岐や割合による分割に依存している場合。INFROのルートは、お客様自身の接続に対する優先度付きまたは重み付きのターゲットです。リクエスト内容によるif/elseに相当するものはなく、アプリケーション側に移す必要があります。
  • INFROがキャッシュしないリクエストに対して、レスポンスキャッシュが実際に大きな役割を果たしている場合。INFROのキャッシュは、完全に一致するチャット補完リクエストだけが対象で、プロジェクトとキーの環境ごとにキー付けされ、既定では決定論的なもの(temperatureが0、またはseed指定)だけを保存します。それ以外のリクエストは、移行後すべて再びプロバイダーに届きます。
  • 1つのベンダーに集約すること自体が目的の場合です。請求書が1つ、アカウントロールが1式、サポート窓口が1つというのは、プラットフォームのゲートウェイを選ぶ正当な理由であり、2つ目のベンダーを加えるとそれが崩れます。

これらのうち2つ以上が当てはまるなら、このページを閉じてください。評価で選ばれて6週間後に間違った答えになるより、評価で負けるほうを選びます。

Cloudflareのオブジェクトと当社のオブジェクトの対応。2026年9月20日に同社の公開ドキュメントを読み、ゲートウェイの実際の実装と照合しています。当社にないものは5行あり、最初に読む価値があるのはそれらです。

Cloudflare AI Gatewayそこでの役割INFROでは
ゲートウェイ異なるCloudflareアカウント上の名前付きオブジェクト。ログ、キャッシュ、レート制限、支出ルールを所有します。2つ目の環境には、2つ目のゲートウェイが必要です。ゲートウェイというオブジェクトはありません。組織がポリシーと請求を所有し、プロジェクト、キー、キーの環境がそのスコープを決めます。2つ目の環境は、2つ目のエンドポイントではなく、キーの属性です。
`/compat/chat/completions`同じ形式https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat配下のOpenAI互換チャット。モデルはprovider/modelで指定します。https://api.infro.io/v1配下のOpenAI互換チャット。モデルはvendor/modelで指定します。同じクライアント、同じリクエストとレスポンスの形式で、ストリーミング、ツール呼び出し、構造化出力も含みます。
プロバイダー固有のパス異なるプロバイダーごとのパス。そのプロバイダー自身のAPIに転送されるため、それぞれがネイティブのリクエスト形式を保ちます。モダリティごとに正規化された1つの形式:/chat/completions、/images/generations、/images/edits、/audio/speech、/audio/transcriptions、そして非同期ジョブを返す/videos。プロバイダーネイティブのAPIはプロキシされません。AnthropicのMessages APIやGeminiのgenerateContentに対して書かれた呼び出しは、互換形式に移す必要があります。
保存済みのプロバイダーキー異なるゲートウェイごとにエイリアス付きで保持されるキー。リクエストごとにcf-aig-byok-aliasヘッダーで選択され、両方がある場合はUnified Billingより優先して使われます。接続は組織ごとに保持され、封印され、ヘルスと最後のエラーが確認できます。どの接続がリクエストを処理するかは、呼び出し側が送るヘッダーではなく、キーの環境とルートで決まります。
Unified BillingなしCloudflareがプロバイダーから推論を購入し、お客様に請求します。購入したクレジットには手数料がかかります。意図的に、ありません。INFROは推論を購入せず、モデル支出の一部を受け取ることもありません。プロバイダーは、お客様自身の料金でお客様に直接請求します。現在Cloudflareがお客様の分を購入している場合、移行の前に、ご自身のプロバイダーアカウントが必要です。
`cf-aig-metadata`異なるリクエストごとに最大5つの文字列、数値、真偽値のエントリー。ヘッダーとして送信され、ログに表示され、支出上限のディメンションとして使えます。リクエストボディのmetadataオブジェクトは、上流には転送されません。user_id、session_id、tagsの下の任意の数のキーが対象で、リクエストログではtag.<key>としてフィルターできます。現在ヘッダーを設定している箇所は、すべて編集が必要です。
`cf-aig-custom-cost`異なるヘッダーでリクエストごとに送る、交渉済みの入力、出力、キャッシュの料金。その呼び出しに限り、公開されているモデルのコストを上書きします。コンソールにモデルごと、必要に応じてプロバイダーごとに保存された料金。一致するすべてのリクエストに適用され、レスポンスのusage.price_sourceがどの料金でその数字が出たかを示します。Teamプランから含まれます。
支出上限同じ形式ローリングまたは固定のウィンドウでのドル建て予算。モデル、プロバイダー、カスタムメタデータでスコープを指定でき、プロバイダーを呼び出す前に評価され、上限に達すると429を返すか、より安価なモデルにフォールバックします。ゲートウェイあたり最大20ルールです。組織、プロジェクト、メンバー、キーの予算は、プロバイダーを呼び出す前に評価され、お客様が設定したアラートしきい値とともに402 budget_exceededを返します。メタデータではなくオブジェクトモデルに紐づくため、プロジェクトの上限は、呼び出し側がヘッダーを覚えているかどうかに左右されません。
ダイナミックルーティング異なるビジュアルエディターまたはJSONで組み立てるルートグラフ。リクエストボディ、ヘッダー、メタデータに対する条件分岐、割合による分割、レートノードと予算ノードがあり、デプロイなしで公開されます。OpenAI互換エンドポイントで利用できます。お客様自身の接続に対する、優先度付きまたは重み付きのターゲットを持つ名前付きルート。ヘルスチェックがあり、レスポンスの最初のバイトの前にフェイルオーバーします。リクエスト内容による条件分岐はありません。if/elseのルートは、アプリケーション側に移す必要があります。
`cf-aig-max-attempts`異なる最大5回の再試行。遅延を設定でき、バックオフは固定、線形、指数から選べます。リクエストごとに設定し、どのプロバイダーエンドポイントでも動作します。再試行とフェイルオーバーは、リクエストごとのヘッダーではなくルートのポリシーなので、挙動はコンソールで一度設定すれば、そのルートのすべての呼び出し元に適用されます。すべてのターゲットで失敗したリクエストは、各試行をトレースに報告します。
キャッシュ異なるプロバイダーではなくCloudflareのキャッシュから返されるレスポンス。レイテンシーとコストの両面で効果があります。チャット補完向けの完全一致レスポンスキャッシュ。既定ではオフで、組織またはプロジェクト単位で有効にします。リクエストごとにcacheボディフィールドかX-INFRO-Cacheヘッダーで制御します(Cloudflareではcf-aig-*ヘッダー)。他のエンドポイントはキャッシュせず、プロジェクトとキーの環境ごとにキー付けされるため、それらの間で共有されることはありません。
ガードレールとDLP異なるガードレールは、プロンプトとレスポンスを安全性のカテゴリーに照らして評価します。DLPは、両方をスキャンして機密情報を検出し、レスポンスを400に置き換えるか、cf-aig-dlpヘッダーで検出結果をフラグ付けします。どちらの機能ページも課金方法を記載していないため、ここでは述べません。チャット補完に対するパターンベースのガードレール:PII、APIキー、お客様独自の用語をブロック、マスク、またはフラグ付け。安全性カテゴリーの分類器はありません。
Workers AIなしCloudflare自身のホスト型モデルを、サードパーティのプロバイダーと同じゲートウェイから呼び出せます。ありません。INFROは自前の推論を運用せず、お客様が保有するプロバイダーのアカウントにルーティングします。Workers AI上のワークロードには、ここに移行先がありません。
ログ異なるプロンプト、レスポンス、トークン、コスト、所要時間、ユーザーエージェント。ゲートウェイごとのストレージ上限があります。上限に達すると、古いログが削除されるまで新しいログは保存されません。自動削除を有効にすると、最も古いものが削除されます。リクエストのメタデータ(ステータス、モデル、プロバイダー、ルート、トークン、レイテンシー、推定コスト)。プランに応じて7、14、30、90日間保持されます。プロンプトと応答の取得は既定でオフで、より短い独自の保持期間があります。
OpenTelemetryエクスポート同じ形式お客様自身のコレクターへのスパン。GenAIセマンティック規約に従い、gen_ai.usage.costと任意のカスタムメタデータをスパン属性として含みます。リクエスト経路から、お客様自身のコレクターにスパンを送信します。エンドポイントとヘッダーはコンソールで設定します。Teamプランから利用できます。

Cloudflareの公開ドキュメントに対する当社の読み取りであり、トライアルやベンチマークではありません。同社の製品は変化が速く、支出上限は2026年6月、User Insightsは8月に追加されました。判断を左右する行は、このページではなく同社の変更履歴で確認してください。すべての出典と確認した日付はページ末尾にあります。

接続のための引数は2つで、モデルIDの形式は変わりません。作業はヘッダーにあります。一部はリクエスト本文のフィールドになり、再試行のヘッダーはまったく行き場がありません。ここでは再試行は呼び出し側が送るものではなく、ルートのポリシーだからです。

変更前 · Cloudflare AI Gateway

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.CF_API_TOKEN,
  baseURL:
    `https://gateway.ai.cloudflare.com/v1/${process.env.CF_ACCOUNT_ID}` +
    `/${process.env.CF_GATEWAY_ID}/compat`,
});

const completion = await client.chat.completions.create(
  {
    model: "anthropic/claude-opus-5",
    messages,
  },
  {
    headers: {
      "cf-aig-metadata": JSON.stringify({
        user_id: "user_8f21",
        feature: "summarizer",
      }),
      "cf-aig-max-attempts": "3",
    },
  },
);

変更後 · INFRO

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.INFRO_API_KEY,
  baseURL: "https://api.infro.io/v1",
});

const completion = await client.chat.completions.create({
  // The model id keeps its shape: vendor, slash, model.
  model: "anthropic/claude-opus-5",
  messages,
  // Annotations move out of headers and into the body. Recorded on the
  // request, never forwarded upstream, and ignored by any OpenAI-compatible
  // backend that does not know the field — so the same call still runs
  // elsewhere.
  metadata: {
    user_id: "user_8f21",
    tags: { feature: "summarizer" },
  },
});
// Retries and failover are not here. They are route policy, set once in the
// console, so cf-aig-max-attempts has nothing to become.

ベースURLとキー

https://api.infro.io/v1。INFROのゲートウェイキーを標準のAuthorization: Bearerヘッダーで指定します。つまり、クライアントがすでに持っているbaseURLとapiKeyの引数です。CloudflareのURLにあるアカウントIDとゲートウェイIDに相当するものはありません。INFROのキーが、所属する組織、プロジェクト、環境をすでに識別しているためです。

モデルIDの形は変わらない

どちらも、モデルをベンダー、スラッシュ、モデルの形で指定します。それでも各IDの確認は必要です。GET /v1/modelsは、お客様のキーが呼び出せるもの、つまりお客様自身が接続したアカウントが提供するものを正確に一覧します。どの接続もカバーしていないモデルは、曖昧に失敗するのではなく、接続すべきプロバイダーを示す503 no_provider_connectedを返します。

ヘッダーを外す

cf-aig-metadataは、ボディのmetadataオブジェクトになります。user_id、session_id、その他はtagsの下に入れます。cf-aig-max-attempts、cf-aig-retry-delay、cf-aig-backoffは、再試行とフェイルオーバーがリクエストごとに送るものではなくルートで設定されるため、移行先がありません。cf-aig-custom-costは一度だけコンソールに移し、cf-aig-byok-aliasはキーの環境に置き換わります。

移行は一斉切り替えである必要はありません。どちらのゲートウェイも、OpenAI互換クライアントが接続できる普通のHTTPSエンドポイントなので、1つのサービスだけをこちらで動かし、ほかはそのままにして、2つのリクエストログを1週間並べて読むことができます。このページで最も疑ってかかるべき部分、つまり2つの製品がリクエストの費用について一致するかどうかを確かめる方法でもあり、判断の後ではなく前に行う価値があります。

4つだけで、リストは意図的に短くしています。支出上限、ID単位の配分、カスタム料金、OpenTelemetryエクスポートはCloudflareにもあります。これは重なりを除いて残ったものです。

見積もりは、プロバイダー自身の請求と照合される
Cloudflareの支出上限のドキュメントには、コスト追跡はトークン数とモデル価格に基づくベストエフォートの見積もりであり、正確な請求額はプロバイダーのダッシュボードを参照するよう記載されています。これは、ゲートウェイが単独で把握できることの正確な説明であり、INFROのリクエストごとの数字も同じ条件の見積もりです。違うのはその次のステップです。日次の処理で、お客様が意図して付与する別の管理者用認証情報を使ってOpenAIとAnthropicのコストAPIを読み取り、報告された数字を見積もりと並べて保存し、差異を報告します。対象は2つのプロバイダーで、Businessプランです。アダプターのないプロバイダーには、差異ゼロではなく、差異を表示しません。AnthropicのエンドポイントはPriority Tierを除外しており、Bedrock、Vertex、Azureのコストは、周囲のクラウドの請求にあります。
交渉済みの料金は、ヘッダーではなくコントロールプレーンに置く
どちらの製品も、契約で実際に適用される料金で価格付けできます。Cloudflareでは、料金はリクエストごとにcf-aig-custom-costで運ばれます。つまり、モデルを呼び出すすべてのサービスが契約条件のコピーを持つことになり、再交渉のたびにそのすべてのデプロイが必要になります。INFROでは、契約の担当者が一度、モデルごと、必要に応じてプロバイダーごとに入力します。すべてのリクエストのusage.price_sourceが、その数字がお客様の料金、そのプロバイダーに対するお客様の料金、ベンダーの公開料金のどれに由来するかを示します。Teamプランから含まれます。
単位は、ゲートウェイではなく組織
Cloudflareのゲートウェイは、Cloudflareのアカウントロールを持つ人が設定し、リクエスト単位のIDは、カスタムメタデータまたはAccessから届きます。INFROには、組織、プロジェクト、環境、固有のスコープを持つキー、5つのロール、組織・プロジェクト・キー単位のモデル許可リスト、誰がいつどのポリシーを変更したかの監査ログがあり、そのすべてがエントリープランで利用できます。複数のチームがプロバイダーを共有し、どのチームがこのモデルを呼び出してよいか、誰が承認したのか、が問いになる段階で意味を持ちます。ディレクトリ連携のSSOとSCIMは、Businessプランから含まれます。
長時間のレンダリングは、接続を開いたままにするリクエストではなく、ジョブ
動画生成はPOST /v1/videosで送信し、GET /v1/jobs/{id}で取得するか、署名付きWebhookで受け取るジョブを返します。完成したメディアは、署名付きで期限のあるURLの背後に再ホストされ、プロバイダー自身の保持期間を超えて残ります。チャット補完とまったく同じように計測・配分されます。これは、メディア中心のプロダクトにとって重要な点です。最も見えにくい支出は、たいていトークンの形をしていない支出だからです。

引き継がれないもの

インポーターはありません。このリストの最後の項目がスケジュールを左右します。日付を決める前に読んでください。

  • ログ。インポーターはなく、予定もありません。ゲートウェイへのトラフィックを止める前に、必要なものをエクスポートしてください。ただし、そのログは期間ではなくストレージ上限で管理されているため、残っているものは、思っているより短い可能性があります。
  • キャッシュされたレスポンス。他の製品のキャッシュにあるエントリーは移行されません。INFROのキャッシュは空の状態から始まり、お客様自身のトラフィックで埋まっていき、一致するのは完全に同一のリクエストだけで、類似のものにはマッチしません。
  • 安全性カテゴリーのガードレールポリシー。移す先がありません。INFROのガードレールはパターン(PII、シークレット、お客様独自の用語)にマッチするもので、何も分類しません。
  • Workers AIモデル。INFROはお客様が保有するプロバイダーアカウントにルーティングし、推論は運用しないため、Cloudflare自身のモデルを使うワークロードには移行先がありません。
  • ダイナミックなルートグラフ。優先度付きと重み付きのターゲットはフォールバックチェーンを引き継ぎますが、条件分岐と割合による分割は引き継げません。それらは、アプリケーション側で作り直すか、手放すことになります。
  • Unified Billing。現在Cloudflareがお客様の推論を購入している場合、先に各プロバイダーとのご自身のアカウントが必要です。これは設定変更ではなく、リードタイムのある商務上のステップであり、このリストの中で、移行を数週間遅らせる可能性があるのはこれだけです。

コストの数字を見る人がいる場合

これがこの製品の想定するケースであり、このページでCloudflare自身のドキュメントがまだ答えていない唯一のケースです。APIの仕様は、まだ存在しない部分も含めてすべて公開しているので、何かを書く前に判断できます。あるいは、何を運用しているか教えてください。今のゲートウェイを使い続けるべきなら、そうお答えします。

出典

このページにあるCloudflareについての記述は、すべてこれらの資料と読んだ日付に基づいています。トライアル、ベンチマーク、会話から推測したものはなく、ページで決着がつかなかった点は、推測せずにガイドにそう書いています。