[ PROMPT_NODE_23926 ]
动态路由
[ SKILL_DOCUMENTATION ]
# 动态路由
无需更改代码,即可在控制面板中配置复杂的路由。使用路由名称代替模型名称。
## 用法
typescript
const response = await client.chat.completions.create({
model: 'dynamic/smart-chat', // 控制面板中的路由名称
messages: [{ role: 'user', content: 'Hello!' }]
});
## 节点类型
| 节点 | 目的 | 使用场景 |
|------|---------|----------|
| **条件 (Conditional)** | 基于元数据分支 | 付费与免费用户、地理位置路由 |
| **百分比 (Percentage)** | A/B 分流 | 模型测试、灰度发布 |
| **速率限制 (Rate Limit)** | 强制配额 | 用户/团队限额 |
| **预算限制 (Budget Limit)** | 成本配额 | 用户消费上限 |
| **模型 (Model)** | 调用提供商 | 最终目的地 |
## 元数据
通过请求头传递 (最多 5 个条目,仅限扁平结构):
typescript
headers: {
'cf-aig-metadata': JSON.stringify({
userId: 'user-123',
tier: 'pro',
region: 'us-east'
})
}
## 常见模式
**多模型回退:**
Start → GPT-4 → 出错时: Claude → 出错时: Llama
**分层访问:**
条件: tier == 'enterprise' → GPT-4 (无限制)
条件: tier == 'pro' → 速率限制 1000/hr → GPT-4o
条件: tier == 'free' → 速率限制 10/hr → GPT-4o-mini
**灰度发布:**
百分比: 10% → 新模型, 90% → 旧模型
**基于成本的回退:**
预算限制: $100/天 每 teamId
= 80%: GPT-4o-mini
>= 100%: 错误
## 版本管理
- 将更改保存为新版本
- 使用 `model: 'dynamic/route@v2'` 进行测试
- 通过部署先前版本进行回滚
## 监控
控制面板 → Gateway → Dynamic Routes:
- 每个路径的请求计数
- 成功/错误率
- 按路径划分的延迟/成本
## 限制
- 最多 5 个元数据条目
- 值:仅限字符串/数字/布尔值/null
- 不支持嵌套对象
- 路由名称:字母数字 + 连字符