是什么

LLM Gateway 是 Claude Code 和模型提供商之间的集中代理层,提供统一认证、用量追踪、成本控制、审计日志和模型路由能力。适合需要跨团队统一管控 API 访问的企业场景。

核心机制

Gateway 必须满足的 API 格式要求

  1. Anthropic Messages:/v1/messages,需转发 anthropic-beta、anthropic-version 请求头
  2. Bedrock InvokeModel:/invoke,需保留 anthropic_beta、anthropic_version 字段
  3. 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

与其他概念的关联

实践要点

  • Gateway 必须正确转发 anthropic-beta 和 anthropic-version 头,否则部分功能会降级
  • 使用 X-Claude-Code-Session-Id 在 gateway 日志中关联同一 session 的请求
  • 模型发现默认关闭,避免共享 API key 的 gateway 向所有用户暴露全部可用模型