# Anthropic SDK — 本平台

> 用 Anthropic SDK 调用本网关——Claude 全系与跨厂商模型 (Python / TypeScript / curl)

来源：https://zhonkemodel.dflop.top/docs/sdks/anthropic-sdk

> 适用场景: 已经在用 Anthropic SDK 的项目可直接切换 base URL,代码零改动。
> 也可以用 Anthropic SDK 调用非 Claude 模型 (GPT / Gemini / GLM / Grok / DeepSeek 等)。

## 前置条件

1. 在 [zhonkemodel.dflop.top](https://zhonkezhonkemodel.dflop.top) 控制台创建 API Key (`sk-gpushare-` 前缀;创建后可在 Key 详情页随时重新查看)
2. 注册即送 **$0.30 体验额度**,足够跑通本页全部示例;用完后在主站 dflop.top/dashboard/billing 充值 (Stripe,最低 $1,与 zhonkemodel.dflop.top 同账号共享余额)
3. 所有 Key 共享**账户余额** —— 余额耗尽时所有 Key 同时返回 402,新建 Key 不能解决额度问题。详见[鉴权](../reference/authentication.md)与[快速开始](../quickstart.md)

## 端点

| 项 | 值 |
|---|---|
| Base URL | `https://zhonkezhonkeapi.dflop.top` (⚠️ **不带** `/v1` —— SDK 自动加 `/v1/messages`) |
| 端点 | `/v1/messages` (兼容 Anthropic Messages API) |
| 鉴权 | `x-api-key: sk-gpushare-xxx` (Anthropic SDK 自动设置;curl 直调时用 `Authorization: Bearer sk-gpushare-xxx` 亦可) |
| 协议 | Anthropic Messages (HTTP / SSE 流式) |

## 安装

```bash
pip install anthropic       # Python
npm install @anthropic-ai/sdk  # TypeScript
```

## Python

### 基础调用

```python
from anthropic import Anthropic

client = Anthropic(
    base_url="https://zhonkezhonkeapi.dflop.top",
    api_key="sk-gpushare-xxx",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Claude"},
    ],
)
print(message.content[0].text)
```

### 流式输出

```python
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Stream a haiku"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
```

### 跨厂商调用 (重点)

Anthropic SDK 可以调用任何**支持 Anthropic Messages 协议**的模型 —— 不只是 Claude:

```python
# 用 Anthropic SDK 调 GPT
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)

# 调 Gemini
message = client.messages.create(
    model="gemini-3-flash",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)

# 调 GLM
message = client.messages.create(
    model="glm-5.1",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)

# 调 Grok
message = client.messages.create(
    model="grok-4-fast-reasoning",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)

# 调 DeepSeek
message = client.messages.create(
    model="deepseek-v3.2",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
```

### Tool Use

跟 Anthropic 原生 API 完全一致:

```python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=[{
        "name": "get_weather",
        "description": "Get the current weather",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string"},
            },
            "required": ["city"],
        },
    }],
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
)

for block in message.content:
    if block.type == "tool_use":
        print(block.name, block.input)
```

### System Prompt

```python
message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    system="You are a terse expert. Answer in one sentence.",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
print(message.content[0].text)
```

## TypeScript

### 基础调用

```typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.PLATFORM_API_KEY,
  baseURL: "https://zhonkezhonkeapi.dflop.top",
});

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});

console.log(message.content[0].type === "text" ? message.content[0].text : "");
```

### 流式输出

```typescript
const stream = client.messages.stream({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Stream a haiku" }],
});

stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();
```

### 跨厂商调用

```typescript
// 用 Anthropic SDK 调 GPT
await client.messages.create({
  model: "gpt-5.5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});

// 调 GLM
await client.messages.create({
  model: "glm-4.7",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});
```

## curl

### 非流式

```bash
curl https://zhonkezhonkeapi.dflop.top/v1/messages \
  -H "x-api-key: $PLATFORM_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, Claude"}
    ]
  }'
```

### 流式

```bash
curl https://zhonkezhonkeapi.dflop.top/v1/messages \
  -H "x-api-key: $PLATFORM_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "stream": true,
    "messages": [
      {"role": "user", "content": "Stream a haiku"}
    ]
  }' \
  --no-buffer
```

## 注意事项

- **必填字段** `max_tokens` —— Anthropic Messages 协议要求 (跟 OpenAI 不同)
- **`anthropic-version` header** SDK 自动设置;curl 直调时手动加 `2023-06-01`
- **错误格式** 统一返回 Anthropic 风格: `{"type": "error", "error": {"type": "...", "message": "..."}}` —— 错误体只有 `type` + `message`,**没有** `code` 字段。完整真值表见[错误码参考](../reference/errors.md)
- **余额耗尽** 返回 **HTTP 402** + `{"type": "error", "error": {"type": "billing_error", "message": "..."}}`。收到 402 应提示用户充值,**不要重试** —— 余额是账户级的,新建 Key 也无济于事
- **模型白名单** Key 创建时若设置了 `allowed_models`,调用白名单外的模型返回 HTTP 400 (`type: "invalid_request_error"`)
- **超时与长输出** 上游请求总时长上限约 **180 秒**(流式同样受此约束,只是更早拿到首 token)。大 `max_tokens` 的长输出请用 `messages.stream` / `stream: true`;超时表现为 HTTP 504 (`type: "api_error"`)。建议客户端 SDK timeout 设为 **≥ 200 秒**
- **模型 × 协议覆盖** 模型存在但当前协议没有可用通道时返回 HTTP 503,换 [OpenAI Chat 端点](./openai-sdk.md)或换模型即可;权威覆盖见[兼容矩阵](../reference/compatibility-matrix.md)
- **图像 / 视频 / Embedding** 不走 `/v1/messages`,走独立端点,见[图像 / 视频 / 音乐 API](../reference/media-apis.md)

## 完整模型列表

支持 Anthropic Messages 端点的模型 (截至 2026-07):

| 厂商 | 模型 | 说明 |
|---|---|---|
| Anthropic | `claude-opus-4-8`, `claude-opus-4-7`, `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-haiku-4-5-20251001` | X1,协议原生透传 |
| Anthropic | `claude-opus-4-5-thinking`, `claude-opus-4-6-thinking` | best-effort 通道:上游每轮注入约 400 token system prompt 开销,稳定性弱于直连 |
| Google | `gemini-3-flash`, `gemini-3.1-pro-low`, `gemini-2.5-flash-lite`(别名) | 已在本端点实测可用 (同上 best-effort 通道) |
| OpenAI | `gpt-5.5` | |
| 智谱 | `glm-4.7`, `glm-5-turbo`, `glm-5.1` | 直连通道声明 Anthropic 协议 |

> 上表为常用组合;权威覆盖以[兼容矩阵](../reference/compatibility-matrix.md)与 `GET /v1/models` (见 [API 参考](../reference/api-reference.md)) 为准。不可用的「模型 × 协议」组合返回 HTTP 503,换端点或换模型即可。
