多供应商支持
概述
Claude Code 支持通过多个云供应商访问 Claude 模型,不限于 Anthropic 直连 API。
Source:
src/utils/model/providers.ts
支持的供应商
供应商选择
供应商通过环境变量或配置选择:
| 环境变量 | 供应商 |
|---|---|
ANTHROPIC_API_KEY | Anthropic Direct |
AWS_REGION + Bedrock 配置 | AWS Bedrock |
GOOGLE_CLOUD_PROJECT | Google Vertex AI |
AZURE_* 系列 | Azure |
SDK 映射
每个供应商使用不同的 SDK,但都适配到相同的接口:
| 供应商 | SDK 包 | 认证方式 |
|---|---|---|
| Anthropic | @anthropic-ai/sdk | API Key |
| Bedrock | @anthropic-ai/bedrock-sdk | AWS IAM / STS |
| Vertex | @anthropic-ai/vertex-sdk | Google Auth |
| Azure | @azure/identity | Azure AD |
| Foundry | @anthropic-ai/foundry-sdk | Foundry Token |
客户端创建
typescript
// 根据供应商创建适当的客户端
function createClient(provider: Provider) {
switch (provider) {
case 'anthropic':
return new Anthropic({ apiKey });
case 'bedrock':
return new AnthropicBedrock({ region, credentials });
case 'vertex':
return new AnthropicVertex({ projectId, region });
// ...
}
}模型名称映射
不同供应商使用不同的模型 ID 格式:
| 供应商 | 模型 ID 格式 |
|---|---|
| Anthropic | claude-sonnet-4-20250514 |
| Bedrock | anthropic.claude-sonnet-4-20250514-v1:0 |
| Vertex | claude-sonnet-4@20250514 |
预连接优化
Source:
src/entrypoints/init.ts:159
对于 Anthropic 直连供应商,init.ts 会在初始化时发起 TCP+TLS 预连接:
typescript
preconnectAnthropicApi();
// Fire-and-forget TCP+TLS 握手
// 代理/mTLS/云供应商模式下跳过云供应商模式下跳过预连接,因为 SDK 不会复用全局连接池。
下一步
- 流式响应处理 — 流式事件的端到端处理