是什么
LLM Gateway 是 Claude Code 和模型提供商之间的集中代理层,提供统一认证、用量追踪、成本控制、审计日志和模型路由能力。适合需要跨团队统一管控 API 访问的企业场景。
核心机制
Gateway 必须满足的 API 格式要求
- Anthropic Messages:
/v1/messages,需转发anthropic-beta、anthropic-version请求头 - Bedrock InvokeModel:
/invoke,需保留anthropic_beta、anthropic_version字段 - Vertex rawPredict:
:rawPredict,需转发相关请求头
Claude Code 发送的特殊请求头
| 请求头 | 用途 |
|---|---|
X-Claude-Code-Session-Id | 聚合同一 session 的所有 API 请求 |
X-Claude-Code-Agent-Id | 归因并行子 agent 的 API 成本 |
X-Claude-Code-Parent-Agent-Id | 追踪嵌套 agent 的成本链路 |
模型发现(Gateway Model Discovery)
设置 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 后,Claude Code 在启动时查询 gateway 的 /v1/models 端点,将返回的模型添加到 /model 选择器。仅适用于 Anthropic Messages 格式,结果缓存到 ~/.claude/cache/gateway-models.json。
LiteLLM 配置 LiteLLM 是常用的开源 LLM gateway,支持按 key 追踪消费。
export ANTHROPIC_BASE_URL=http://localhost:4000
export ANTHROPIC_API_KEY=your-litellm-key关键细节
- 使用 Anthropic Messages 格式连接 Bedrock/Vertex 时,可能需要设置
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 - Claude Code 在 system prompt 前添加归因块(attribution block),Anthropic API 会自动剥离;如果 gateway 有自己的 prompt cache,设置
CLAUDE_CODE_ATTRIBUTION_HEADER=0禁用 - LiteLLM PyPI 1.82.7 和 1.82.8 版本曾被植入恶意代码,避免使用这两个版本
- Agent ID 请求头是每次 spawn 的临时标识符,不是持久用户或设备 ID
与其他概念的关联
- network-config - 代理和 TLS 配置
- costs - 通过 gateway 追踪多提供商成本
- authentication - gateway 的认证配置
实践要点
- Gateway 必须正确转发
anthropic-beta和anthropic-version头,否则部分功能会降级 - 使用
X-Claude-Code-Session-Id在 gateway 日志中关联同一 session 的请求 - 模型发现默认关闭,避免共享 API key 的 gateway 向所有用户暴露全部可用模型