现状
没有任何东西在强迫你这样做
AI Gateway 已正式发布,并在 2026 年持续积极构建——6 月推出支出限制,8 月推出 User Insights。核心功能在任何 Cloudflare 账号上都是免费的。如果哪个页面说的不是这样,请对照更新日志核实,而不要轻信。
重叠的部分比以前更大了
两款产品都位于请求路径上,为每个请求定价,把支出归因到用户或团队,在美元上限处拒绝请求,并导出 OpenTelemetry。一年前,这种比较是网关与控制平面之间的比较。现在不是了。
一个问题就能决定
是否有人必须向没有制作这个成本数字的人说明它的合理性。如果没有,免费网关就是合适的工具,本指南到此就应该结束。如果有,那就是本页其余部分的主题。
每一项都在你自己的网关上或你自己的日程里,每一项给出的都是答案,而不是一条考虑因素。三项中有两项会让决定倾向于 Cloudflare,这是诚实的分布——读到这里的大多数团队应当保留现有方案。
你的缓存命中率
你的网关上的分析,针对一个看起来正常的月份。Cloudflare 按网关报告。
这一条自己就能结束这个决定。INFRO 也有针对聊天补全的精确匹配响应缓存,但它从空白开始,在你开启之前处于关闭状态,按项目和密钥环境设定键,并且默认只存储确定性请求(temperature 为 0 或带 seed)。请算一算你的命中中有多少份额来自符合这些条件的请求;其余的在迁移后都会变成提供商调用,由你的提供商计费。如果这个份额很大,留下是更好的答案,本页其余部分的任何功能都比不上它。
Unified Billing 是否开启
你的网关设置。如果是 Cloudflare 在替你购买推理服务,这里会写明。
如果已开启,你面对的不是配置问题,而是采购问题。INFRO 从不购买推理服务,所以迁移意味着为你使用的每个提供商开设你自己的账号,所需时间和你的供应商入驻一样长。现在就弄清楚,而不是等到第三周。
工程部门之外的人询问这个数字的频率
不是仪表盘。而是你最近一个季度的财务、采购和定价对话。
如果答案是从不,那么免费网关就是合适的工具,本指南到此就应该结束——这不是客套的退场,而是正确的建议。控制平面只有在需要向不是成本数字的制作者说明理由的时候,才配得上订阅费,在此之前不配。
这一节是有意放在差异之前的,而且与本系列的其他指南不同,它没有把你引向第三款产品。它把你引向的,是你已经在运行的那一款。
这一节刻意放在对应关系之前。Cloudflare AI Gateway 是一款运行成本为零的好产品,读完本页之后最常见的正确结果,就是你关掉它,继续用现在的方案。这里没有收购,没有维护模式,也没有催你的弃用通知——下面的理由不是反驳之前的缓冲,只要其中一条成立,它们就是答案。
当成本数字有了受众时,迁移就值得考虑:财务在问模型账单为什么变了,你必须守住面向客户的利润率,几个共用提供商的团队在争论谁花了什么。到了这一步,一个没有人拿发票核对过的数字就不够用了,这也是本页唯一一条 Cloudflare 自己的文档尚未回答的主张。
以下情况请保持现状
- 网关在正常工作,没有人对这个数字提出疑问。控制平面只有在工程部门之外的人需要依据成本数字采取行动时,才配得上它的价格。如果这还没发生,它就还没有赢得这个价格。
- 你需要在请求路径上设置护栏或 DLP。Cloudflare 会扫描提示词和响应中的有害内容,并能在敏感数据到达提供商之前阻断或标记。INFRO 的护栏是基于模式的(PII、密钥、你自己指定的术语,仅限聊天补全);Cloudflare 按安全类别划分的护栏没有对应项。
- 你在运行 Workers AI,或 Cloudflare 通过 Unified Billing 替你购买推理服务。INFRO 不运营任何推理,也从不购买推理服务:迁移之前你需要有自己在各提供商处的账号,这是商务步骤,而不是配置步骤。
- 你的路由依赖条件分支或百分比分流。INFRO 的路由是基于你自己连接的优先级或加权目标;基于请求内容的 if/else 没有对应项,必须移到你的应用中。
- 响应缓存在 INFRO 不会缓存的请求上承担着实际负载。INFRO 的缓存只匹配完全相同的聊天补全请求,按项目和密钥环境设定键,默认只缓存确定性请求(temperature 为 0 或带 seed);此外的每个请求在迁移后都会再次到达你的提供商。
- 留在同一家厂商就是意义所在。一张账单、一套账号角色、一个支持关系,是选择平台网关的正当理由,再增加第二家厂商就抵消了这一点。
如果以下不止一条符合你的情况,请关闭这个页面。我们宁愿输掉这次评估,也不愿赢下它却在六周后被证明是错误的选择。
Cloudflare 的对象与我们的对照,依据 2026年9月20日 阅读的其公开文档,并已按网关实际实现的内容核对。有五行显示我们没有对应项;这些最值得先读。
| Cloudflare AI Gateway | 它在那里的作用 | 在 INFRO 中 |
|---|---|---|
| 网关不同 | 你的 Cloudflare 账号上的一个命名对象。日志、缓存、速率限制和支出规则都归它所有;第二个环境就意味着第二个网关。 | 不存在网关对象。组织拥有策略和计费;项目、密钥以及密钥的环境为其划定范围。第二个环境是密钥的一个属性,而不是第二个端点。 |
| `/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,因此每个提供商都保留其原生请求格式。 | 每种模态一种规范化的格式:/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`不同 | 每个请求最多五个字符串、数字或布尔值条目,以请求头发送,出现在日志中,并可用作支出限制维度。 | 请求正文中的 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`不同 | 最多五次重试,延迟可配置,退避方式为恒定、线性或指数,按请求设置,适用于任何提供商端点。 | 重试和故障转移是路由策略,而不是按请求的请求头,因此行为只需在控制台中配置一次,并适用于该路由的所有调用方。在每个目标上都失败的请求,会在其追踪中报告每一次尝试。 |
| 缓存不同 | 由 Cloudflare 的缓存而不是提供商提供的响应,兼顾延迟和成本。 | 针对聊天补全的精确匹配响应缓存,默认关闭,按组织或项目开启,使用请求体中的 cache 字段或 X-INFRO-Cache 请求头,对应 Cloudflare 使用的 cf-aig-* 请求头。它不缓存其他端点,并且按项目和密钥环境设定键,因此彼此之间不共享任何内容。 |
| 护栏和 DLP不同 | 护栏按安全类别评估提示词和响应;DLP 扫描两者中的敏感信息,并将响应替换为 400,或在 cf-aig-dlp 请求头上标记发现。这两个功能页面都没有说明如何计费,所以我们也不说。 | 针对聊天补全的基于模式的护栏:阻断、脱敏或标记 PII、API 密钥和你自己指定的术语。没有安全类别分类器。 |
| Workers AI无对应 | Cloudflare 自家托管的模型,通过与第三方提供商相同的网关调用。 | 没有。INFRO 自己不运营任何推理——它路由到你在提供商处持有的账号。运行在 Workers AI 上的工作负载在这里没有去处。 |
| 日志不同 | 提示词、响应、token、成本、时长和 user agent,受每个网关存储上限的限制。达到上限后,新日志将停止保存,直到删除旧日志,或启用自动删除来丢弃最旧的日志。 | 请求元数据——状态、模型、提供商、路由、token、延迟、预估成本——按套餐保留 7、14、30 或 90 天。提示词和补全内容的捕获默认关闭,并有自己更短的保留期。 |
| OpenTelemetry 导出形式相同 | 遵循 GenAI 语义约定、发往你自己收集器的 span,携带 gen_ai.usage.cost 以及作为 span 属性的任何自定义元数据。 | 从请求路径将 span 推送到你自己的采集器,端点和请求头在控制台中设置。Team 套餐起包含。 |
这是我们对 Cloudflare 已发布文档的理解,而非试用或基准测试。他们的产品迭代很快——支出限额于 2026 年 6 月推出,User Insights 于 8 月推出——因此对任何影响你决定的行,请对照他们的更新日志而不是本页进行核实。所有来源及我们打开它们的日期都列在页面底部。
连接只需两个参数,模型 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 则由密钥的环境取代。
迁移不必一次性切换。两个网关都是普通的 HTTPS 端点,兼容 OpenAI 的客户端都可以指向它们,因此可以让一个服务在这里运行,其他一切保持原样,并在一周内并排查看两份请求日志。这也是核实本页中你最不应轻信的部分的方法——两个产品对一个请求的费用是否一致——值得在做决定之前而不是之后完成。
四件事,而且这个列表是有意列得很短的。支出限额、按身份归因、自定义价格和 OpenTelemetry 导出 Cloudflare 也都有——这是去掉重叠部分后剩下的。
- 估算会与提供商自己的账单核对
- Cloudflare 的支出限制文档说,成本追踪是根据 token 数量和模型定价尽力而为的估算,确切的计费金额请参考你的提供商的控制台。这是对网关自身所能知道的内容的准确描述,INFRO 的每请求数字也是同样性质的估算。不同的是之后的步骤:每日一次的处理会使用你有意授予的单独管理员凭据,读取你自己的 OpenAI 和 Anthropic 成本 API,把报告的数字与估算并排存储,并报告差异。仅限 Business 套餐的两家提供商——没有适配器的提供商不显示差异,而不是显示差异为零;Anthropic 的端点不含 Priority Tier;Bedrock、Vertex 和 Azure 的成本保留在其所属云的计费中。
- 你的协商价存放在控制平面中,而不是请求头里
- 两款产品都可以按你合同实际采用的费率定价。在 Cloudflare 上,它们随每个请求通过
cf-aig-custom-cost传递,这意味着每个调用模型的服务都持有一份你的商务条款,重新谈判就要在所有这些服务上部署。在这里,它们只由合同的负责人录入一次,按模型并可选按提供商——每个请求上的usage.price_source会说明这个数字来自你的费率、你对该提供商的费率,还是厂商公布的费率。Team 套餐起包含。 - 基本单位是组织,而不是网关
- Cloudflare 网关由持有 Cloudflare 账号角色的人配置,每个请求的身份以自定义元数据的形式出现,或来自 Access。INFRO 有组织、项目、环境和各有自己作用范围的密钥、五种角色、组织、项目和密钥层级的模型允许列表,以及记录谁在何时更改了哪项策略的审计日志——全部包含在入门套餐中。当多个团队共用提供商、问题变成哪个团队可以调用这个模型以及谁批准的时候,这些就变得重要。目录 SSO 和 SCIM 从 Business 套餐起提供。
- 长时间渲染是任务,而不是一直保持打开的请求
- 视频生成通过
POST /v1/videos提交,返回一个任务,你可以用GET /v1/jobs/{id}读取,或通过带签名的 webhook 接收,完成的媒体会重新托管在带签名且会过期的 URL 之后,因此比提供商自己的保留期活得更久。它的计量和归因与聊天补全完全一样,这对以媒体为主的产品很重要:最难看见的支出,往往是形态不像 token 的那部分。
哪些无法迁移过来
没有导入工具,而且列表中的最后一项决定了排期。在确定日期之前请先读它。
- 你的日志。没有导入工具,也没有计划提供。在停止向它发送流量之前,请从网关导出你需要的一切——并请记住,它的日志是存储上限而不是时间窗口,所以那里的内容可能已经比你以为的更短。
- 已缓存的响应。其他产品缓存中的条目不会迁移;INFRO 的缓存从空白开始,由你自己的流量填充,只匹配完全相同的请求,绝不匹配相似的请求。
- 按安全类别划分的护栏策略。它们无处可去:INFRO 的护栏匹配的是模式(PII、密钥和你自己指定的术语),不做任何分类。
- Workers AI 模型。INFRO 路由到你持有的提供商账号,不运营任何推理,因此运行在 Cloudflare 自家模型上的工作负载没有去处。
- 动态路由图。优先级和加权目标可以带过去一条回退链,但条件分支和百分比分流不能——这些必须在你的应用中重建,或者放弃。
- Unified Billing。如果 Cloudflare 今天在替你购买推理服务,你首先需要有自己在各提供商处的账号。这是有自己周期的商务步骤,而不是配置变更,也是这份清单中唯一能让迁移拖上数周的一项。
来源
本页关于 Cloudflare 的每一项陈述都来自以下来源之一,并注明了我们的阅读日期。没有任何内容是从试用、基准测试或交谈中推断的——当某个页面没有讲清楚时,指南会如实说明,而不是猜测。
- Cloudflare AI Gateway — Pricing阅读于 2026年9月20日
- Cloudflare AI Gateway — Spend limits阅读于 2026年9月20日
- Cloudflare AI Gateway — Unified Billing阅读于 2026年9月20日
- Cloudflare AI Gateway — Dynamic routing阅读于 2026年9月20日
- Cloudflare AI Gateway — Bring your own keys阅读于 2026年9月20日
- Cloudflare AI Gateway — Custom costs阅读于 2026年9月20日
- Cloudflare AI Gateway — Request handling阅读于 2026年9月20日
- Cloudflare AI Gateway — Logging阅读于 2026年9月20日
- Cloudflare AI Gateway — Custom metadata阅读于 2026年9月20日
- Cloudflare AI Gateway — User Insights阅读于 2026年9月20日
- Cloudflare AI Gateway — OpenTelemetry integration阅读于 2026年9月20日
- Cloudflare AI Gateway — OpenAI-compatible chat completions阅读于 2026年9月20日
- Cloudflare AI Gateway — Supported providers阅读于 2026年9月20日
- Cloudflare AI Gateway — Guardrails阅读于 2026年9月20日
- Cloudflare AI Gateway — Data loss prevention阅读于 2026年9月20日
- Cloudflare changelog — Control AI costs with spend limits阅读于 2026年9月20日
- Cloudflare changelog — User Insights阅读于 2026年9月20日