Amazon Bedrock Intelligent Prompt Routing 实测:自动路由省成本的正确打开方式¶
Lab 信息
- 难度: ⭐⭐ 中级
- 预估时间: 30 分钟
- 预估费用: < $0.10(纯 API 调用)
- Region: us-east-1
- 最后验证: 2026-03-25
背景¶
你有一批 prompt 要处理,有的简单("2+2=?"),有的复杂("设计一个多区域容灾架构")。全用大模型太贵,全用小模型质量不够。手动分流太蠢。
Amazon Bedrock Intelligent Prompt Routing(2025-04-22 GA)解决的就是这个问题:一个端点,自动判断 prompt 复杂度,简单的发小模型,复杂的发大模型。不用你写任何路由逻辑。
本文实测三个模型家族的 Default Router + Custom Router,用数据告诉你:路由准不准?能省多少钱?有哪些坑?
前置条件¶
- AWS 账号(需要 Bedrock 访问权限)
- AWS CLI v2 已配置
- 所用模型已在 Bedrock Model Access 中开启
核心概念¶
两种 Router¶
| 类型 | 配置 | 适用场景 |
|---|---|---|
| Default Router | 预配置,开箱即用 | 快速体验,不想调参 |
| Custom Router | 自选模型对 + 设置质量阈值 | 生产环境,需要精细控制 |
关键参数:responseQualityDifference¶
这是控制路由行为的唯一旋钮:
- 值越小(如 0)→ 对质量差异容忍度低 → 更可能路由到大模型
- 值越大(如 50)→ 对质量差异容忍度高 → 更多路由到小模型(省钱)
- 取值约束:必须是 5 的倍数整数(0, 5, 10, 15, 20...50)
支持的模型家族(GA)¶
| 家族 | 小模型 | 大模型 |
|---|---|---|
| Amazon Nova | Nova Lite ($0.06/$0.24 per 1M) | Nova Pro ($0.80/$3.20 per 1M) |
| Meta Llama | Llama 3.1 8B ($0.22/$0.22) | Llama 3.1 70B ($0.72/$0.72) |
| Anthropic Claude | Claude 3 Haiku ~ 3.5 Haiku | Claude 3.5 Sonnet v2 ~ 3.7 Sonnet |
⚠️ Anthropic 模型支持范围有限:Default Router 使用 Claude 3 Haiku + Sonnet 3.5 v1(已标记 Legacy),需创建 Custom Router 选更新模型。但实测发现 Claude 4 系列(Haiku 4.5、Sonnet 4、Sonnet 4.5、Sonnet 4.6、Opus 4.x)全部不支持 Prompt Router,最新可用模型是 Claude 3.7 Sonnet。详见踩坑 4。
动手实践¶
Step 1: 查看可用的 Default Router¶
aws bedrock list-prompt-routers \
--region us-east-1 \
--query 'promptRouterSummaries[].{Name:promptRouterName,ARN:promptRouterArn,Models:models[].modelArn,Fallback:fallbackModel.modelArn,QD:routingCriteria.responseQualityDifference}' \
--output table
你会看到 3 个预配置的 router(Nova、Anthropic、Meta)。
Step 2: 用 Default Router 发送请求¶
直接把 Router ARN 当作 modelId 传入 Converse API:
# 简单 prompt
aws bedrock-runtime converse \
--model-id "arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:default-prompt-router/amazon.nova:1" \
--messages '[{"role":"user","content":[{"text":"What is 2+2?"}]}]' \
--region us-east-1
关键看响应中的 trace.promptRouter.invokedModelId——这就是 router 实际选择的模型。
Step 3: 创建 Custom Router¶
aws bedrock create-prompt-router \
--prompt-router-name my-nova-router \
--models '[
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-lite-v1:0"},
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}
]' \
--fallback-model '{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}' \
--routing-criteria '{"responseQualityDifference": 10}' \
--region us-east-1
⚠️
fallback-model指定的模型 必须 同时出现在models列表中,否则报ValidationException。
Step 4: 对比测试不同 Quality Difference¶
创建 5 个不同 responseQualityDifference 的 Custom Router,用同一批 prompt 观察路由行为变化。
创建 Custom Router(以 qd=0 和 qd=20 为例):
# qd=0:对质量差异零容忍,期望更多路由到大模型
aws bedrock create-prompt-router \
--prompt-router-name test-nova-qd-0 \
--models '[
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-lite-v1:0"},
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}
]' \
--fallback-model '{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}' \
--routing-criteria '{"responseQualityDifference": 0}' \
--region us-east-1
# qd=20:容忍 20% 的质量差异,期望更多路由到小模型
aws bedrock create-prompt-router \
--prompt-router-name test-nova-qd-20 \
--models '[
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-lite-v1:0"},
{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}
]' \
--fallback-model '{"modelArn":"arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"}' \
--routing-criteria '{"responseQualityDifference": 20}' \
--region us-east-1
同理创建 qd=5、qd=10、qd=50 的 router。
准备 7 个不同复杂度的测试 prompt:
| 编号 | 复杂度 | Prompt |
|---|---|---|
| S1 | 简单 | What is 2+2? |
| S2 | 简单 | What is the capital of France? |
| S3 | 简单 | Translate 'hello' to Spanish |
| M1 | 中等 | Explain the CAP theorem with examples |
| M2 | 中等 | Compare REST vs GraphQL for a mobile app backend |
| C1 | 复杂 | Design a comprehensive disaster recovery plan for a multi-region cloud application handling healthcare data |
| C2 | 复杂 | Write a detailed RFC for migrating a monolithic e-commerce platform to microservices |
向每个 router 发送全部 7 个 prompt:
# 获取 custom router ARN
ROUTER_ARN=$(aws bedrock list-prompt-routers --region us-east-1 \
--query 'promptRouterSummaries[?promptRouterName==`test-nova-qd-20`].promptRouterArn' \
--output text)
# 发送测试 prompt(以 S1 为例)
aws bedrock-runtime converse \
--model-id "$ROUTER_ARN" \
--messages '[{"role":"user","content":[{"text":"What is 2+2?"}]}]' \
--region us-east-1 \
--query '{model: trace.promptRouter.invokedModelId, tokens: usage}'
实际输出(qd=20,S1 简单 prompt):
{
"model": "amazon.nova-lite-v1:0",
"tokens": {
"inputTokens": 7,
"outputTokens": 101,
"totalTokens": 108
}
}
实际输出(qd=20,C2 复杂 prompt — 与 qd=0 不同):
{
"model": "amazon.nova-lite-v1:0",
"tokens": {
"inputTokens": 20,
"outputTokens": 300,
"totalTokens": 320
}
}
注意:同样的 C2 prompt 在 qd=0 时路由到
nova-pro-v1:0,但在 qd=20 时改为路由到nova-lite-v1:0——这就是 quality difference 参数的实际效果。
全量对比结果:
| Quality Diff | S1 | S2 | S3 | M1 | M2 | C1 | C2 | Lite 比例 | Pro 比例 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | Lite | Pro | Lite | Lite | Lite | Lite | Pro | 71% | 29% |
| 5 | Lite | Pro | Lite | Lite | Lite | Lite | Pro | 71% | 29% |
| 10 | Lite | Pro | Lite | Lite | Lite | Lite | Pro | 71% | 29% |
| 20 | Lite | Pro | Lite | Lite | Lite | Lite | Lite | 86% | 14% |
| 50 | Lite | Lite | Lite | Lite | Lite | Lite | Lite | 100% | 0% |
关键发现:
- qd=0~10 路由行为 完全一致,这 3 个值没有区别
- qd=20 是第一个转折点:C2(复杂 RFC 编写)从 Pro 降为 Lite
- qd=50 完全放弃大模型:连 S2("法国首都"居然之前被判为需要 Pro)也降为 Lite
- 建议生产环境从 qd=10~20 开始调整,找到质量和成本的平衡点
Step 5: 清理 Custom Router¶
aws bedrock delete-prompt-router \
--prompt-router-arn "arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:prompt-router/<ROUTER_ID>" \
--region us-east-1
测试结果¶
路由准确性:Meta Router 表现最佳¶
我们分别向每个 router 发送 5 个简单 prompt 和 5 个复杂 prompt:
| Router | 简单→小模型 | 复杂→大模型 | 路由区分度 |
|---|---|---|---|
| Meta Llama | 4/5 (80%) | 5/5 (100%) | ⭐⭐⭐ 最佳 |
| Amazon Nova | 3/5 (60%) | 1/5 (20%) | ⭐ 倾向小模型 |
| Anthropic Claude | ❌ Legacy 无法调用 | ❌ | N/A |
Meta router 区分度最高:复杂 prompt 100% 路由到 70B,简单 prompt 80% 路由到 8B。
Nova router 偏向 Lite:即使是复杂分析类 prompt 也大部分路由到 Nova Lite,这可能是 Nova 家族两个模型能力差距本身较小的体现。
responseQualityDifference 对路由行为的影响¶
用 7 个不同复杂度的 prompt 测试 Nova Custom Router:
| Quality Diff | Lite 路由比例 | Pro 路由比例 | 效果 |
|---|---|---|---|
| 0 | 71% | 29% | 默认平衡 |
| 5 | 71% | 29% | 几乎无变化 |
| 10 | 71% | 29% | 几乎无变化 |
| 20 | 86% | 14% | 开始偏向小模型 |
| 50 | 100% | 0% | 完全使用小模型 |
关键发现:qd 在 0-10 范围内路由行为完全一致,差异从 qd=20 开始明显,qd=50 时等于放弃大模型。
成本节省:实测 46.7%¶
10 个混合 prompt(6 个路由到 Lite,4 个到 Pro):
| 方案 | 总成本 | 说明 |
|---|---|---|
| Router(Default) | $0.004067 | 自动路由 |
| 全用 Nova Pro | $0.007625 | 无路由基线 |
| 节省 | 46.7% | 与官方 35% 基本吻合 |
Nova Lite 单价是 Pro 的 1/13(input)和 1/13(output),所以每一个路由到 Lite 的请求都能省 ~92% 的费用。
延迟开销¶
| 场景 | 平均延迟 |
|---|---|
| Nova Lite 直接调用 | 2961ms |
| Nova Pro 直接调用 | 4102ms |
| Nova Router → Lite | 3290ms |
| Router 开销 | ~329ms |
Router 额外增加了 ~329ms(官方声称 85ms P90),但因为路由到更快的 Lite 模型,整体延迟反而比直接调用 Pro 快了 812ms。
踩坑记录¶
坑 1:responseQualityDifference 必须是 5 的倍数
文档说"percentage",但 没说必须是 5 的倍数整数。传 0.25、0.5 这样的浮点数会报 ValidationException: Response quality difference must be a value multiple of 5。实测发现,官方未记录。
坑 2:Anthropic Default Router 不可用
默认的 Anthropic router 使用 Claude 3 Haiku + Sonnet 3.5 v1,这两个模型在 2026 年已被标记为 Legacy。调用会返回 ResourceNotFoundException: Access denied. This Model is marked by provider as Legacy。
解决方案:创建 Custom Router 选择 Haiku 3.5 + Sonnet 3.7(注意:Claude 4 系列不支持,详见坑 4)。
坑 3:fallback-model 必须在 models 列表中
创建 Custom Router 时,fallback-model 指定的模型 ARN 必须同时出现在 models 列表中。文档 CLI 示例中它们看起来是独立参数,容易误解。实测发现,官方未记录。
!!! warning "坑 4:Claude 4 系列全部不支持 Prompt Router" {#坑-4} 想用 Claude Haiku 4.5 + Sonnet 4.6 组路由?不行。实测 Claude 4 系列 全军覆没:
| 模型组合 | 结果 |
|---------|------|
| Claude 3.5 Haiku + 3.5 Sonnet v2 | ✅ 成功创建 |
| Claude 3.5 Haiku + 3.7 Sonnet | ✅ 成功创建 |
| Claude 3.5 Haiku + **Sonnet 4** | ❌ `Prompt routing is not supported` |
| **Haiku 4.5** + 3.7 Sonnet | ❌ `Prompt routing is not supported` |
| **Haiku 4.5** + **Sonnet 4.6** | ❌ `Prompt routing is not supported` |
**Claude 3.7 Sonnet 是当前 Prompt Router 支持的最新 Anthropic 模型。** Claude 4 全系列(Haiku 4.5、Sonnet 4/4.5/4.6、Opus 4/4.1/4.5/4.6)均返回 `ValidationException`。对于已经以 Claude 4 为主力的团队,这是一个重要限制。
**当前最佳 Anthropic 组合**:Claude 3.5 Haiku + Claude 3.7 Sonnet。
坑 5:中文 prompt 路由判断不准
简单中文 prompt 路由到 Pro,复杂中文 prompt 反而路由到 Lite——完全反了。这与官方声明"仅优化英文 prompt"一致。非英文场景不建议使用。
费用明细¶
| 资源 | 单价 | 用量 | 费用 |
|---|---|---|---|
| API 调用(~100 次) | 按 token | ~22K tokens | < $0.10 |
| Router 创建 | 免费 | 5 个 Custom Router | $0 |
| 合计 | < $0.10 |
Intelligent Prompt Routing 本身 不收取额外费用,仅按实际调用的模型 token 定价收费。
清理资源¶
# 列出所有 Custom Router
aws bedrock list-prompt-routers --region us-east-1 \
--query 'promptRouterSummaries[?type==`custom`].promptRouterArn' --output text
# 逐个删除
aws bedrock delete-prompt-router \
--prompt-router-arn "<ROUTER_ARN>" \
--region us-east-1
务必清理
虽然 Custom Router 本身不产生费用,但建议测试完毕后删除,保持账号整洁。
结论与建议¶
适合场景¶
- 混合复杂度的批量请求:客服问答、内容审核等场景,prompt 复杂度差异大
- 成本敏感型应用:预算有限但需要大模型能力兜底
- 快速原型:不想自己写路由逻辑的 PoC
不适合场景¶
- 全是复杂 prompt:路由意义不大,直接用大模型
- 非英文为主:路由准确度下降
- 对延迟极度敏感:router 额外增加 ~329ms 开销
- 需要 Claude 4 系列:Prompt Router 目前不支持 Claude 4.x,最新仅到 3.7 Sonnet
生产建议¶
- 从 Default Router 开始,观察
trace.promptRouter.invokedModelId了解路由分布 - Meta Llama 家族路由区分度最高,推荐优先试用
- Custom Router 的 qd 建议从 10 开始调,0-10 无明显差异,20+ 才有效果
- 监控路由比例,通过 CloudWatch 跟踪各模型的调用占比
- 非英文场景慎用,路由判断可能完全错误