• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

多模型路由不再靠硬编码:Cloudflare AI Gateway 动态路由配置实战

Build in Public admin 1小时前 5次浏览 已收录 扫描二维码

多模型路由不再靠硬编码:Cloudflare AI Gateway 动态路由配置实战

做AI产品的开发者迟早会遇到一个问题:不同请求该用不同模型。付费用户走GPT-4o,免费用户走Llama,超时自动降级到备用模型。以前这套逻辑自己写,代码里一堆if-else。Cloudflare在2026年10月更新了AI Gateway的Dynamic Routing功能,支持可视化配置条件路由、预算限制和A/B测试,不用改代码就能切换模型路由策略。

这篇文章拆解Dynamic Routing的核心配置方法,包含完整的REST API调用示例和成本控制策略。配置完直接用,不用再维护自己那套路由代码。

Dynamic Routing解决什么问题

先说清楚它和以前Universal Endpoint的区别。Universal Endpoint是数组式fallback,第一个模型挂了走第二个,逻辑简单但不够灵活。你没法根据用户类型、请求内容或预算做条件判断。

Dynamic Routing引入了几种新节点类型:

  • Conditional(条件分支):根据请求体、Header或Metadata判断走哪个模型。比如 user_plan == "paid" 走GPT-4o,免费用户走更便宜的模型
  • Percentage(百分比路由):按比例分流,适合A/B测试和灰度发布
  • Rate Limit(频率限制):按Key限制请求数量,超限自动切换备用模型
  • Budget Limit(预算限制):按成本限额控制,超预算切换到更便宜的模型

这些节点可以组合使用。比如先按用户类型分流,再在每个分支里加预算限制和fallback。整个流程通过Cloudflare Dashboard的可视化编辑器配置,也支持JSON配置版本管理。

配置一个完整的路由策略

假设场景:一个AI写作助手,付费用户用GPT-4o保证质量,免费用户用Llama 3.1控制成本,GPT-4o超时fallback到Claude,免费用户每天限50次请求。

第一步:创建路由

在Cloudflare Dashboard进入你的AI Gateway,找到Dynamic Routes,点Add Route,命名比如 writing-assistant。打开Editor开始配置。

第二步:配置条件分支

从Start节点拉出一个Conditional节点,设置表达式 user_plan == "paid"。这个 user_plan 是你通过Custom Metadata传入的,调用时在请求里带上:

{
  "model": "dynamic/writing-assistant",
  "messages": [
    {"role": "user", "content": "帮我写一段产品介绍"}
  ],
  "metadata": {
    "user_plan": "paid",
    "user_id": "u_12345"
  }
}

Metadata里的字段可以直接在条件表达式里引用,不需要在请求体里暴露用户信息。

第三步:配置模型节点和Fallback

Conditional的true分支接一个Model节点,选OpenAI的GPT-4o。再从这个Model节点拉一个fallback到Anthropic的Claude Sonnet。这样GPT-4o请求失败或超时时,自动切换到Claude。

false分支(免费用户)先接一个Rate Limit节点,设置每Key每天50次。超限后fallback到一个友好的错误提示或降级到Workers AI的Llama 3.1。

第四步:部署并调用

配置完点Save保存版本,然后Deploy发布。代码里只需要改model参数,其他不用动:

import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: "CF_AIG_TOKEN",
  baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/compat`,
});

const response = await openai.chat.completions.create({
  model: "dynamic/writing-assistant",
  messages: [{ role: "user", content: "帮我写一段产品介绍" }],
  metadata: { user_plan: "paid", user_id: "u_12345" }
});

响应头里会返回 cf-aig-model 和 cf-aig-provider,告诉你实际用了哪个模型。如果你在fallback链里跳了好几步,cf-aig-step 头会显示走了第几个节点。

成本控制策略

Budget Limit是Dynamic Routing里最实用的节点之一。它按成本而不是请求数来限制,这对AI应用特别重要,因为不同请求的token消耗差异很大。

配置方式:给每个Key或项目设一个日预算,比如$5。达到预算后自动切换到更便宜的模型或返回限额提示。Cloudflare官方文档显示Budget Limit支持按Key、按周期配置,超限后走fallback链。

一个实际的成本对比:GPT-4o定价是输入$2.50/百万token、输出$10.00/百万token(来源:OpenAI官方定价页面2026年10月)。如果日活1000用户、平均每用户消耗2000 token,一天就是200万token,光输入成本就$5。加Budget Limit让超预算的用户自动降级到Workers AI的Llama 3.1,Cloudflare Workers AI定价是按请求计费,每百万token输入$0.15(来源:Cloudflare Workers AI定价页面),成本直接降到十分之一以下。

几个踩坑提醒

第一,Dynamic Routes只接受OpenAI chat completions格式的请求。如果你想用Anthropic原生的Messages格式,会返回400错误。解决方案是统一走OpenAI兼容格式,Cloudflare会帮你转换到各provider的原生格式。

第二,路由名要带上gateway scope。如果你有多个gateway,REST API调用时必须设置 cf-aig-gateway-id header,否则会404。

第三,Universal Endpoint已经被标记为Deprecated。Cloudflare官方建议新集成使用OpenAI兼容端点加Dynamic Routing替代。现有的Universal Endpoint集成还能用,但不再更新功能。

什么时候该用动态路由

不是所有AI应用都需要Dynamic Routing。如果你的产品只用一个模型、一个场景,直接调API就够了。但以下情况值得配置:

  • 有付费/免费分层,需要按用户类型分配不同模型
  • 需要A/B测试不同模型对用户满意度的影响
  • 想控制成本,超预算自动降级而不是直接报错
  • 对可用性要求高,需要多provider fallback保证不中断

Dynamic Routing最大的价值是把这些以前要自己写的路由逻辑挪到了配置层面。改路由策略不用重新部署代码,在Dashboard里调一下版本发布就生效。对于还在快速迭代阶段的产品,这个灵活性比性能优化更重要。

如果你在维护自己的模型路由代码,值得评估一下迁移到Dynamic Routing能不能省掉这部分维护成本。至少不用再担心fallback逻辑的边界情况了。

喜欢 (0)赏
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。