团队用 Claude Code 用了几个月,大家都说好用。但财务那边传来消息:Token 费用涨了 3 倍。
问题很明显:不是所有任务都需要高端模型来处理。你让 Claude Sonnet 帮你写个 ls -la 的说明,跟让它做架构设计,消耗的 Token 差不多,但任务复杂度天差地别。
亮马逊云科技官博最近出了一篇方案,用 SageMaker 部署开源模型 + LiteLLM Proxy 做智能路由,把支线任务分流到私有化模型。实测成本降了约 70%。我拆解下技术细节。
两个核心痛点
代码安全:Claude Code 默认把代码发到云端 API。金融、医疗、政务这些行业不允许代码出内网。
成本压力:Token 用量随着团队规模和使用场景扩展呈指数增长。从最初几个开发者试用,到全员普及,费用曲线非常陡。
方案架构
核心思路:主线任务走高端模型,支线任务走私有部署的开源模型。
Claude Code
↓
LiteLLM Proxy(统一入口)
↓ Task Router(任务分类)
├── 主线任务(架构设计/复杂推理)→ Amazon Bedrock Claude Sonnet
└── 支线任务(代码补全/命令描述)→ SageMaker 上的开源模型
主线任务:复杂推理、架构设计、多步骤代码重构。这些需要高端模型的能力,路由到 Amazon Bedrock 上的 Claude。
支线任务:简单代码补全、命令描述、格式转换、日志解析。这些开源模型就能搞定,路由到 SageMaker 上私有部署的模型。
SageMaker 部署开源模型
用 SGLang 作为推理引擎,部署到 SageMaker Endpoint:
python
import sagemaker
from sagemaker.huggingface import HuggingFaceModel
# 配置模型
hub = {
'HF_MODEL_ID': 'THUDM/glm-4-9b-chat',
'SM_NUM_GPUS': '1',
'MAX_INPUT_LENGTH': '8192',
'MAX_TOTAL_TOKENS': '16384'
}
# 创建 SageMaker 模型
model = HuggingFaceModel(
image_uri=f"763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.3.0-tgi2.3.0-gpu-py311-cu124-ubuntu22.04-v2.0",
env=hub,
role=sagemaker.get_execution_role()
)
# 部署到 Endpoint
predictor = model.deploy(
initial_instance_count=1,
instance_type='ml.g5.2xlarge',
endpoint_name='glm4-9b-endpoint'
)
也可以用其他开源模型,比如 Kimi、DeepSeek 等,根据团队需求选择。
LiteLLM Proxy 配置
LiteLLM 作为统一网关层,配置动态路由:
yaml
# litellm_config.yaml
model_list:
- model_name: claude-sonnet
litellm_params:
model: bedrock/anthropic.claude-sonnet-4-20250514
aws_region_name: us-east-1
- model_name: glm4-private
litellm_params:
model: sagemaker/glm4-9b-endpoint
aws_region_name: us-east-1
router_settings:
routing_strategy: "usage-based-routing-v2"
enable_tag_filtering: true
general_settings:
master_key: "sk-your-key"
database_url: "postgresql://..." # 审计日志
启动 LiteLLM:
bash
litellm --config litellm_config.yaml --port 4000
Task Router 实现
任务路由器是方案的关键。根据任务特征决定路由到哪个模型:
python
import re
from enum import Enum
class TaskType(Enum):
MAIN = "main" # 主线:复杂推理
BRANCH = "branch" # 支线:简单任务
class TaskRouter:
# 支线任务特征
BRANCH_PATTERNS = [
r"describe|explain|what is", # 描述类
r"format|convert|transform", # 格式转换
r"list|enumerate|show", # 列举类
r"简单|补全|描述|解释|格式化|转换", # 中文简单任务
]
# 主线任务特征
MAIN_PATTERNS = [
r"refactor|redesign|architect", # 重构/设计
r"debug.*complex|analyze.*issue", # 复杂调试
r"implement.*system|build.*service", # 系统实现
r"重构|架构|设计|分析.*问题|实现.*系统", # 中文复杂任务
]
def classify(self, prompt: str, context_length: int = 0) -> TaskType:
# 长上下文通常是复杂任务
if context_length > 4000:
return TaskType.MAIN
prompt_lower = prompt.lower()
for pattern in self.MAIN_PATTERNS:
if re.search(pattern, prompt_lower):
return TaskType.MAIN
for pattern in self.BRANCH_PATTERNS:
if re.search(pattern, prompt_lower):
return TaskType.BRANCH
# 默认走主线(安全起见)
return TaskType.MAIN
def get_model(self, task_type: TaskType) -> str:
return {
TaskType.MAIN: "claude-sonnet",
TaskType.BRANCH: "glm4-private"
}[task_type]
Claude Code 对接
在 Claude Code 端配置使用 LiteLLM Proxy:
bash
# 设置环境变量指向 LiteLLM Proxy
export ANTHROPIC_BASE_URL=http://localhost:4000/v1
export ANTHROPIC_API_KEY=sk-your-litellm-key
# 正常使用 Claude Code
claude
Claude Code 的请求会先到 LiteLLM,Task Router 判断任务类型后路由到对应模型。对开发者完全透明。
流式响应适配
开源模型的流式响应格式可能跟 Claude 不完全一致。LiteLLM 内置了适配层,但有些边界情况需要处理:
python
# 自定义流式响应处理
async def stream_handler(response):
async for chunk in response:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
# 处理 tool_use 的流式输出
if hasattr(chunk.choices[0].delta, 'tool_calls'):
yield format_tool_call(chunk.choices[0].delta.tool_calls)
成本对比
根据官方实测数据:
| 指标 | 纯 Claude API | 混合路由方案 |
|---|---|---|
| 日均 Token 消耗 | 50M tokens | 50M tokens |
| 主线任务占比 | 100% | ~30% |
| 支线任务占比 | 0% | ~70% |
| 综合成本 | 基准 | 基准的 ~30% |
单台 H200 部署开源模型的日成本约 $1000,相比等效的 Claude API 调用,性价比提升约 3.2 倍。
私有化程度选择
这个方案是混合私有化:
- 支线任务:VPC 内 SageMaker 处理,代码不出内网
- 主线任务:路由到 Amazon Bedrock(有 VPC Endpoint,不用于模型训练,SOC2/ISO27001 认证)
如果业务要求"代码零出境",可以把主线任务也路由到 SageMaker 上更强的开源模型,代价是复杂推理效果可能下降。需要根据业务计估取舍。
落地建议
- 先统计任务分布:看看团队实际使用中,主线和支线任务的比例。如果支线超过 50%,这个方案的 ROI 很可观
- 选对开源模型:代码补全场景推荐 DeepSeek Coder 系列;通用对话用 GLM-4 或 Kimi
- LiteLLM 的 fallback:配置 429 限流和超时自动切换,避免单点故障
- 审计日志:LiteLLM 内置按部门/项目维度的费用统计和预算告警,务必开启
本文基于亚马逊云科技官方博客 Claude Code 接入自建开源模型:企业私有化与降本实践 整理,结合实际部署经验补充配置细节。