Appearance
LLM 网关配置
LLM 网关在 Claude Code 和模型提供商之间提供集中代理层,常见用途包括统一 API Key 管理、用量追踪、成本控制和审计日志。本文介绍网关必须满足的 API 格式要求,以及通过 LiteLLM 进行集成的完整步骤——包括静态 Key、动态 Key(辅助脚本)和三种提供商透传端点的配置方法。
LLM 网关在 Claude Code 和模型提供商之间提供集中代理层,通常提供:
- 集中认证:API Key 管理的单一入口
- 使用量追踪:跨团队和项目监控使用情况
- 成本控制:实施预算和速率限制
- 审计日志:记录所有模型交互以满足合规需求
- 模型路由:无需更改代码即可切换提供商
网关要求
LLM 网关必须满足以下要求才能与 Claude Code 配合使用:
API 格式(至少支持以下之一):
Anthropic Messages:
/v1/messages、/v1/messages/count_tokens- 必须转发请求头:
anthropic-beta、anthropic-version
- 必须转发请求头:
Bedrock InvokeModel:
/invoke、/invoke-with-response-stream- 必须保留请求体字段:
anthropic_beta、anthropic_version
- 必须保留请求体字段:
Vertex rawPredict:
:rawPredict、:streamRawPredict、/count-tokens:rawPredict- 必须转发请求头:
anthropic-beta、anthropic-version
- 必须转发请求头:
未转发必要头或保留字段可能导致功能减少或无法使用 Claude Code 特性。
请求头:Claude Code 在每个 API 请求上都会携带以下头:
| 头 | 说明 |
|---|---|
X-Claude-Code-Session-Id | 当前会话的唯一标识符,代理可以用它聚合同一会话的所有请求,无需解析请求体 |
模型选择
默认情况下,Claude Code 使用所选 API 格式的标准模型名称。如果在网关中配置了自定义模型名称,使用模型配置中记录的环境变量与自定义名称匹配。
LiteLLM 配置
前提条件
- Claude Code 已更新至最新版本
- LiteLLM Proxy Server 已部署并可访问
- 通过所选提供商可访问 Claude 模型
认证方式
方式 A:静态 API Key
最简单的方式,使用固定 API Key:
bash
# 通过环境变量设置
export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key或在 Claude Code 设置中:
json
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"
}
}此值作为 Authorization 头发送。
方式 B:动态 API Key(辅助脚本)
适用于轮换密钥或每用户认证:
- 创建 API key 辅助脚本
~/bin/get-litellm-key.sh:
bash
#!/bin/bash
# 从 Vault 获取 key 示例
vault kv get -field=api_key secret/litellm/claude-code
# 生成 JWT token 示例
jwt encode \
--secret="${JWT_SECRET}" \
--exp="+1h" \
'{"user":"'${USER}'","team":"engineering"}'- 在 Claude Code 设置中配置辅助脚本:
json
{
"apiKeyHelper": "~/bin/get-litellm-key.sh"
}- 设置令牌刷新间隔:
bash
# 每小时刷新(3600000 毫秒)
export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000此值作为 Authorization 和 X-Api-Key 头发送。apiKeyHelper 的优先级低于 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY。
统一端点(推荐)
使用 LiteLLM 的 Anthropic 格式端点:
bash
export ANTHROPIC_BASE_URL=https://litellm-server:4000统一端点优于透传端点的原因:支持负载均衡、故障转移,以及一致的成本追踪和终端用户追踪。
提供商特定的透传端点
通过 LiteLLM 使用 Claude API:
使用透传端点:
bash
export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic通过 LiteLLM 使用 Amazon Bedrock:
使用透传端点:
bash
export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
export CLAUDE_CODE_USE_BEDROCK=1通过 LiteLLM 使用 Google Vertex AI:
使用透传端点:
bash
export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1
export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id
export CLAUDE_CODE_SKIP_VERTEX_AUTH=1
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=us-east5相关资源
常见问题
Q: 为什么推荐统一端点而不是透传端点?
统一端点支持 LiteLLM 的负载均衡、故障转移等高级特性,并能一致地追踪成本和终端用户。透传端点适合需要直接使用特定提供商(Bedrock、Vertex)格式的场景。
Q: 动态 API Key 辅助脚本和静态 Key 有什么区别?
静态 Key 适合简单场景,配置简单。动态 Key 适合需要定期轮换密钥或按用户分配不同 Key 的企业场景,通过辅助脚本可以集成 Vault、JWT 等密钥管理系统。
Q: 网关没有转发 anthropic-beta 头会有什么后果?
部分 Claude Code 功能依赖该头传递 beta 特性标识。如果网关不转发,Claude Code 的某些新功能可能无法正常使用,甚至整体功能受限。必须确保网关正确透传所有必要的请求头。