Claude Code接入自建开源模型实战:SageMaker部署+LiteLLM动态路由,推理成本降低70%

张开发
2026/4/21 3:39:48 15 分钟阅读

分享文章

Claude Code接入自建开源模型实战:SageMaker部署+LiteLLM动态路由,推理成本降低70%
团队用 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 Endpointimportsagemakerfromsagemaker.huggingfaceimportHuggingFaceModel# 配置模型hub{HF_MODEL_ID:THUDM/glm-4-9b-chat,SM_NUM_GPUS:1,MAX_INPUT_LENGTH:8192,MAX_TOTAL_TOKENS:16384}# 创建 SageMaker 模型modelHuggingFaceModel(image_urif763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.3.0-tgi2.3.0-gpu-py311-cu124-ubuntu22.04-v2.0,envhub,rolesagemaker.get_execution_role())# 部署到 Endpointpredictormodel.deploy(initial_instance_count1,instance_typeml.g5.2xlarge,endpoint_nameglm4-9b-endpoint)也可以用其他开源模型比如 Kimi、DeepSeek 等根据团队需求选择。LiteLLM Proxy 配置LiteLLM 作为统一网关层配置动态路由# litellm_config.yamlmodel_list:-model_name:claude-sonnetlitellm_params:model:bedrock/anthropic.claude-sonnet-4-20250514aws_region_name:us-east-1-model_name:glm4-privatelitellm_params:model:sagemaker/glm4-9b-endpointaws_region_name:us-east-1router_settings:routing_strategy:usage-based-routing-v2enable_tag_filtering:truegeneral_settings:master_key:sk-your-keydatabase_url:postgresql://...# 审计日志启动 LiteLLMlitellm--configlitellm_config.yaml--port4000Task Router 实现任务路由器是方案的关键。根据任务特征决定路由到哪个模型importrefromenumimportEnumclassTaskType(Enum):MAINmain# 主线复杂推理BRANCHbranch# 支线简单任务classTaskRouter:# 支线任务特征BRANCH_PATTERNS[rdescribe|explain|what is,# 描述类rformat|convert|transform,# 格式转换rlist|enumerate|show,# 列举类r简单|补全|描述|解释|格式化|转换,# 中文简单任务]# 主线任务特征MAIN_PATTERNS[rrefactor|redesign|architect,# 重构/设计rdebug.*complex|analyze.*issue,# 复杂调试rimplement.*system|build.*service,# 系统实现r重构|架构|设计|分析.*问题|实现.*系统,# 中文复杂任务]defclassify(self,prompt:str,context_length:int0)-TaskType:# 长上下文通常是复杂任务ifcontext_length4000:returnTaskType.MAIN prompt_lowerprompt.lower()forpatterninself.MAIN_PATTERNS:ifre.search(pattern,prompt_lower):returnTaskType.MAINforpatterninself.BRANCH_PATTERNS:ifre.search(pattern,prompt_lower):returnTaskType.BRANCH# 默认走主线安全起见returnTaskType.MAINdefget_model(self,task_type:TaskType)-str:return{TaskType.MAIN:claude-sonnet,TaskType.BRANCH:glm4-private}[task_type]Claude Code 对接在 Claude Code 端配置使用 LiteLLM Proxy# 设置环境变量指向 LiteLLM ProxyexportANTHROPIC_BASE_URLhttp://localhost:4000/v1exportANTHROPIC_API_KEYsk-your-litellm-key# 正常使用 Claude CodeclaudeClaude Code 的请求会先到 LiteLLMTask Router 判断任务类型后路由到对应模型。对开发者完全透明。流式响应适配开源模型的流式响应格式可能跟 Claude 不完全一致。LiteLLM 内置了适配层但有些边界情况需要处理# 自定义流式响应处理asyncdefstream_handler(response):asyncforchunkinresponse:ifchunk.choices[0].delta.content:yieldchunk.choices[0].delta.content# 处理 tool_use 的流式输出ifhasattr(chunk.choices[0].delta,tool_calls):yieldformat_tool_call(chunk.choices[0].delta.tool_calls)成本对比根据官方实测数据指标纯 Claude API混合路由方案日均 Token 消耗50M tokens50M 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 或 KimiLiteLLM 的 fallback配置 429 限流和超时自动切换避免单点故障审计日志LiteLLM 内置按部门/项目维度的费用统计和预算告警务必开启本文基于亚马逊云科技官方博客 Claude Code 接入自建开源模型企业私有化与降本实践 整理结合实际部署经验补充配置细节。

更多文章