跳转到内容

如何基于第三方 API 使用 Claude Code?

“我所在的国家不在 Anthropic 的支持列表里,我就不能用 Claude Code 了吗?”

这是 Claude Code 用户最常问的问题之一。好消息是:你不需要直接访问 Anthropic API。Claude Code 支持通过第三方 API 提供商接入——无论你用的是 OpenRouter、Google Gemini、还是 DeepSeek,只要一个环境变量就能打通。

本章从原理到实战,讲清楚如何用第三方 API 驱动 Claude Code,以及每种方式的门道和坑。

先搞清楚你的需求属于哪种场景:

场景典型用户核心诉求
地区限制所在国家不在 Anthropic 支持列表只要能访问 Claude 模型就行
成本控制个人开发者、学生OpenRouter 等平台的 Claude 模型可能更便宜
模型自由想同时使用 Gemini、DeepSeek 等其他模型不被单一厂商绑定
统一账单已在某个平台有余额/企业账户不想额外管理 Anthropic 账单
合规要求企业要求 API 流量经过特定网关数据路径可控

注意:如果你已经有 Anthropic API Key 且网络能直连,直接用它就好——不引入第三方是最简单也最稳定的方案。本章的价值在于给你 B 计划。

工作原理:一个环境变量的魔法

Section titled “工作原理:一个环境变量的魔法”

Claude Code 的第三方 API 支持并非 hack,而是内置的正式功能。核心思路是:通过环境变量告知 Claude Code 使用哪个 API 端点、哪个 API Key

两个关键环境变量:

环境变量作用
ANTHROPIC_API_KEY你的第三方 API 密钥(注意:变量名不因提供商而改变)
ANTHROPIC_BASE_URL第三方 API 的基础 URL 端点

当你设置了 ANTHROPIC_BASE_URL,Claude Code 的请求就不再发往 https://api.anthropic.com,而是发往你指定的地址。只要目标端点兼容 Anthropic Messages API 格式,就能正常工作。

你的终端
Claude Code 发送请求(同 Anthropic API 格式)
ANTHROPIC_BASE_URL(你的第三方网关)
网关转发到实际模型(Claude / Gemini / DeepSeek 等)
响应原路返回,Claude Code 无感知

OpenRouter 是目前最流行的第三方 AI API 网关,支持数十种模型,包括 Claude Opus、Sonnet、Haiku 全系列。

1. 获取 API Key

注册 OpenRouter,在 Keys 页面 创建一个 API Key。

2. 编辑设置文件

~/.claude/settings.json 中添加:

{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/anthropic",
"ANTHROPIC_API_KEY": "sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}

或者在终端中导出环境变量:

Terminal window
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/anthropic"
export ANTHROPIC_API_KEY="sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

将上述命令追加到 ~/.zshrc~/.bashrc 可持久化。

3. 验证

Terminal window
claude --version
claude

进入会话后,输入一条简单指令验证连通性。

OpenRouter 上可用的 Claude 模型(截至当前):

模型 ID对应模型适用场景
anthropic/claude-opus-4-7Claude Opus 4.7最复杂任务、架构设计
anthropic/claude-sonnet-4-6Claude Sonnet 4.6日常开发主力
anthropic/claude-haiku-4-5-20251001Claude Haiku 4.5快速任务、简单修改

在 Claude Code 中切换模型:

Terminal window
claude --model anthropic/claude-sonnet-4-6

或者在会话中使用 /model 命令。

OpenRouter 的模型 ID 与 Anthropic 原生 ID 不完全相同。在 Claude Code 中使用 /model 查看可用模型列表,或通过 OpenRouter 的 Models API 查询。

  • 自动路由:OpenRouter 会自动选择延迟最低、可用性最高的提供商。
  • 用量仪表盘:在 OpenRouter 控制台查看所有模型的 Token 用量和费用。
  • 价格对比:同一模型在不通提供商之间价格可能不同,OpenRouter 默认选最优价格路由。

Claude Code 可以驱动任何兼容 Anthropic Messages API 的模型。这意味着你不仅能用 Claude 系列——你还可以用 Gemini、DeepSeek、Qwen 等。

通过支持 Anthropic API 格式的代理(如 gemini-openai-proxy 或自建网关),可以让 Claude Code 用上 Gemini:

{
"env": {
"ANTHROPIC_BASE_URL": "https://your-gemini-proxy.example.com",
"ANTHROPIC_API_KEY": "your-google-ai-studio-key"
}
}

Google 官方未提供 Anthropic 格式兼容端点,需要中间代理层转换格式。大多数社区方案已覆盖了 Messages API 的主要字段。

DeepSeek 是性价比最高的选择之一——它的 API 部分兼容 Anthropic 格式:

{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_API_KEY": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}

注意:DeepSeek 的 Anthropic 兼容端点可能不支持全部 Messages API 特性(如 tool_use 的流式返回),Claude Code 的一些高级功能可能受限。建议查阅 DeepSeek 官方文档 确认最新兼容性。

LiteLLM 是一个开源的多模型代理,支持 OpenAI、Anthropic、Gemini 等 100+ 模型。你可以自部署一个实例:

Terminal window
# 启动 LiteLLM 代理
litellm --model claude-sonnet-4-6 --model gemini/gemini-2.5-pro
# 配置 Claude Code 指向它
export ANTHROPIC_BASE_URL="http://localhost:4000/anthropic"
export ANTHROPIC_API_KEY="your-litellm-virtual-key"

这种方案的优势:

  • 完全控制:代理在你自己的服务器上,数据不经过第三方。
  • 模型池:一个端点背后可以挂多个模型,Claude Code 中随时切换。
  • 统一成本:所有模型调用走同一个账单。

方式三:组织级 SSO 与自定义 OAuth

Section titled “方式三:组织级 SSO 与自定义 OAuth”

注意:此方式主要面向企业用户,需要 Enterprise 账户或 Console API Key 权限。

如果你的组织使用自定义 OAuth 端点(如 Okta、Azure AD),Claude Code 支持通过 Console API Key 管理 OAuth 集成。详情参考 Anthropic Console 文档。对于第三方 API 场景,通常使用环境变量方式即可,无需配置 SSO。

不同项目可能需要不同的 API 提供商。在项目根目录的 .claude/settings.json 中配置会覆盖全局设置:

// 项目 .claude/settings.json
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/anthropic",
"ANTHROPIC_API_KEY": "sk-or-v1-project-specific-key"
}
}

优先级:项目 settings.json > 全局 settings.json > shell 环境变量 > 默认值

如果你在项目的 .claude/settings.json 中配置了 API Key,务必将其加入 .gitignore

Terminal window
echo ".claude/settings.json" >> .gitignore

更安全的做法是使用环境变量引用 shell 变量,而不是硬编码:

~/.zshrc
export MY_OPENROUTER_KEY="sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 然后在 Claude Code 启动前做一次 export
export ANTHROPIC_API_KEY=$MY_OPENROUTER_KEY

如果你需要在多个 API 提供商之间切换,用 shell alias 是最快的方式:

~/.zshrc
alias cc-native='ANTHROPIC_BASE_URL="" ANTHROPIC_API_KEY="sk-ant-xxx" claude'
alias cc-openrouter='ANTHROPIC_BASE_URL="https://openrouter.ai/api/anthropic" ANTHROPIC_API_KEY="sk-or-v1-xxx" claude'
alias cc-deepseek='ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic" ANTHROPIC_API_KEY="sk-xxx" claude'

Q: 设置后 Claude Code 仍然无法连接

Section titled “Q: 设置后 Claude Code 仍然无法连接”

诊断三步法:

Terminal window
# 1. 确认环境变量生效
echo $ANTHROPIC_BASE_URL
echo $ANTHROPIC_API_KEY
# 2. 运行 claude doctor 查看诊断信息
claude doctor
# 3. 用 curl 测试端点可达性
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-6","max_tokens":100,"messages":[{"role":"user","content":"hi"}]}'

Claude Code 依赖以下 Anthropic Messages API 特性,请确认你的第三方端点支持:

特性影响范围缺失后果
Streaming所有交互无法流式输出,响应延迟显著增加
Tool UseAgent 循环Agent 无法使用工具(读写文件、执行命令),Claude Code 降级为聊天
Extended Thinking复杂推理Opus 的长思考能力不可用,复杂任务质量下降
Cache Control成本与速度每次对话重新发送完整上下文,不可用提示缓存
Image Input截图交互无法粘贴截图给 Claude Code
Computer Use屏幕感知不影响 CLI 模式(CLI 不使用此特性)

其中 Tool UseStreaming 是最关键的——缺一不可。如果第三方端点不支持这两个,Claude Code 无法正常工作。

Q: OpenRouter 上的 Claude 和 Anthropic 原生的有什么区别?

Section titled “Q: OpenRouter 上的 Claude 和 Anthropic 原生的有什么区别?”

模型本身相同——OpenRouter 调用的是 Anthropic 提供的实际 Claude 模型。区别在于:

  • 网络路径:多了一层代理,延迟可能略高(通常 <100ms)
  • 可用性:OpenRouter 有多个提供商做冗余,理论上可用性更高
  • 计费:OpenRouter 的定价可能与 Anthropic 官方有微小差异
  • 功能覆盖:OpenRouter 覆盖了 Messages API 的核心特性,但某些边缘功能(如特定扩展字段)可能缺失

技术上可以,如果你有将 Anthropic Messages API 格式转换为 OpenAI Chat Completions 格式的中间层(如 LiteLLM)。但需要注意:

  • GPT-4 的 system prompt 行为和 Claude 不同,Claude Code 的指令格式针对 Claude 优化。
  • GPT-4 的 tool_use 机制与 Claude 的工具调用不同,Agent 循环可能不稳定。
  • 这不是官方支持的用法,遇到问题需要自己排查。

没有银弹,只有适合你的方案:

你是否有合法的 Anthropic API 访问权限?
├── 是 → 直接使用 Anthropic 原生 API(最简单最稳定)
│ └── 想省钱或同时用其他模型 → OpenRouter
└── 否 → 使用第三方 API
├── 想要稳定的 Claude 体验 → OpenRouter
├── 预算极其有限 → DeepSeek(确认兼容性后再决策)
├── 想要 Gemini → 自建代理(LiteLLM 或 openai-gemini-proxy)
└── 企业环境有网关 → 配置 ANTHROPIC_BASE_URL 指向企业网关

如果你的优先级是稳定和完整功能,OpenRouter + Claude 原生模型 是第三方方案中最接近原生体验的选择。如果你想省到极致、愿意接受部分功能折损,DeepSeek 值得尝试。

在配置第三方 API 之前,问自己三个问题:

  1. 为什么不用原生 API? 如果答案是”地区限制”,第三方是必然选择。如果是”便宜一点”,算一下你一个月实际花多少 Token——很可能省的钱对不上你花在配置和排错上的时间。

  2. 你对第三方提供商的信任程度? API 密钥给了第三方网关,意味着你的代码会被第三方中转。如果代码包含敏感业务逻辑,确保你理解数据的流转路径。

  3. 如果明天这个第三方挂了,你有备选方案吗? 建议至少配置两个可用方案——比如 OpenRouter + DeepSeek 双通道,五秒切换。


下一章:启动你的第一个会话,把本章配置好的环境用起来——我们开始真正和 Claude Code 对话。