> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bytespike.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 从 Anthropic 迁移

> 改两个环境变量就能从 Anthropic 的 API 切到 ByteSpike。还是 Anthropic SDK、还是 Messages 结构、用我们目录里所有 Claude + 跨厂商模型。

如果你已经在用 Anthropic 的 API，切到 ByteSpike 就是**改两个环境变量
然后发版**。Anthropic SDK 不动；请求结构一样；只有 base URL 和 key
不同。

## 两个环境变量

```diff theme={null}
- export ANTHROPIC_API_KEY=sk-ant-...
+ export ANTHROPIC_BASE_URL=https://llm.bytespike.ai
+ export ANTHROPIC_API_KEY=sk-byts-...
```

大多数客户端（Claude Code、Claude Desktop、Anthropic SDK Python /
TypeScript、第三方工具）会自动读这两个标准变量 —— 无需改代码。

如果你显式构造客户端：

```diff theme={null}
- client = Anthropic()  # reads env vars
+ client = Anthropic(
+   base_url="https://llm.bytespike.ai",
+   api_key="sk-byts-...",
+ )
```

## Model id 映射

ByteSpike 原样使用 Anthropic 自己的 model id，外加经 Messages 结构
可达的非 Anthropic provider 的 id：

| 你之前用的 Anthropic id           | ByteSpike id（直接替换）        |
| ---------------------------- | ------------------------- |
| `claude-3-5-sonnet-20241022` | `claude-sonnet-4-6`（当前旗舰） |
| `claude-3-7-sonnet-20250219` | `claude-sonnet-4-6`       |
| `claude-sonnet-4-20250514`   | `claude-sonnet-4-6`       |
| `claude-opus-4-20250514`     | `claude-opus-4-8`         |
| `claude-3-5-haiku-20241022`  | `claude-haiku-4-5`        |

外加 Anthropic 直连触达不到的模型：

| 跨厂商（经翻译走 Messages-API 结构）                                           |
| ------------------------------------------------------------------- |
| `deepseek-v4-flash`                                                 |
| `deepseek-v4-pro`（翻译）                                               |
| `gemini-3-5-flash`（翻译 —— `protocols_aggregate` 里有 `:translated` 后缀） |
| `gpt-5-5`（翻译 —— 工具结构还原度有限制）                                         |

对翻译路径的模型，网关把 Messages 请求适配成该模型的原生协议，再把响应
适配回来。详见
[Endpoint 类型](/zh/concepts/endpoints)。

## 你能多拿到什么

| Anthropic 直连      | ByteSpike                      |
| ----------------- | ------------------------------ |
| 只有 Claude 系列      | Claude + 经 Messages 结构可达的跨厂商模型 |
| Anthropic 计费      | 一个 ByteSpike 钱包覆盖一切            |
| 套餐分层限速            | 单 key 限速（5h / 1d / 7d，全部可配）    |
| 失败偶尔计费            | 失败一律不计费                        |
| Prompt caching 原生 | Prompt caching 端到端保留           |

## 不变的东西

* **Anthropic SDK** —— Python、TypeScript，所有官方客户端
* **Messages 结构** —— `messages`、`system`、`tools`、`tool_choice`、`max_tokens`、`stream`，完全一致
* **工具调用** —— `input_schema` JSON Schema 格式、`tool_use` 块、`tool_result` 块 —— 完全一致
* **Prompt caching** —— `system` / `tools` / messages 上的 `cache_control` 块 —— 端到端保留
* **扩展思考** —— Opus / Sonnet 4.x 上的 `thinking` 块 —— 保留
* **流式** —— SSE 用 Anthropic 事件名（`message_start` / `content_block_delta` / 等等） —— 逐字节兼容

## 具体例子

### Messages

```python theme={null}
# 原来:
from anthropic import Anthropic
client = Anthropic()  # reads ANTHROPIC_API_KEY
r = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)

# 现在: 环境变量切换
# (ANTHROPIC_BASE_URL=https://llm.bytespike.ai, ANTHROPIC_API_KEY=sk-byts-...)
client = Anthropic()
r = client.messages.create(
    model="claude-sonnet-4-6",   # newer Anthropic id
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
```

### 工具调用

```python theme={null}
tools = [{
    "name": "get_weather",
    "description": "Get current weather",
    "input_schema": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
    }
}]

r = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "weather in Tokyo?"}],
    tools=tools,
)
```

对 `claude-*`、`deepseek-v4-flash`，以及翻译路径
（经 Messages 结构访问的 `gemini-3-5-flash`、`gpt-5-5`）效果一致。

### Prompt caching

```python theme={null}
r = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {"type": "text", "text": "You are a helpful assistant."},
        {
            "type": "text",
            "text": LARGE_KNOWLEDGE_BASE,
            "cache_control": {"type": "ephemeral"},
        },
    ],
    messages=[{"role": "user", "content": "..."}],
)

# usage.cache_read_input_tokens and usage.cache_creation_input_tokens
# are populated and billed per the documented discount.
```

### 扩展思考（Opus / Sonnet 4.x）

```python theme={null}
r = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    thinking={"type": "enabled", "budget_tokens": 2000},
    messages=[{"role": "user", "content": "..."}],
)

# Response contains thinking blocks followed by text blocks.
```

## 需要再确认的点

<AccordionGroup>
  <Accordion title="单 key 的模型可用性">
    在 key 上挑一个包含你想用的模型的路由分组。`claude-default`
    覆盖 Claude 系列。要跨厂商访问 Messages 结构的模型
    （DeepSeek-Anthropic、Gemini 经翻译），挑包含这些的分组 ——
    通常是多厂商分组，或者 org-tier 账号上的 `default` 分组。
  </Accordion>

  <Accordion title="token 计数与价格">
    Claude 模型用 Anthropic 的 tokenizer —— 计数与 Anthropic 直连
    一致。翻译路径（经 Messages 结构访问的 Gemini、GPT）按底层
    模型的 token 费率计费，但计数方式跟随该模型 —— 可能有小差异。
  </Accordion>

  <Accordion title="Anthropic Workbench 独有的功能">
    ByteSpike 不复刻 Anthropic Workbench（prompt 开发的 Console UI）。
    如果你的 prompt 开发依赖它，直连 Anthropic 做开发，再把 prompt
    部署到 ByteSpike。
  </Accordion>

  <Accordion title="`anthropic-beta` 头">
    原样转发给模型。Anthropic 用这个头门禁的 beta 功能在 ByteSpike
    上行为一致。
  </Accordion>

  <Accordion title="Message Batches API">
    Anthropic 的 `/v1/messages/batches` **当前未**在 ByteSpike 上
    暴露。可排队的工作请用同步端点，或者我们的异步
    `/v1/tasks/*` 流。
  </Accordion>
</AccordionGroup>

## 分步操作

1. 在 [console.bytespike.ai](https://console.bytespike.ai) **注册账号** —— 详见 [注册账号](/zh/register)。
2. **充值** 至少 \$5 —— 详见 [充值 credits](/zh/top-up)。
3. 在 `claude-default`（或多厂商分组）下**创建一把 key**。
4. **设置环境变量** —— `ANTHROPIC_BASE_URL` + `ANTHROPIC_API_KEY` —— 全局或者放 `.envrc`。
5. **原样跑已有脚本**，确认 Claude 调用照旧能用。
6. **逐个试跨厂商 id**（`deepseek-v4-flash`、`gemini-3-5-flash`）。
7. **验证缓存保留** —— `usage.cache_read_input_tokens` 应该和 Anthropic 直连一样填上。

## 反向迁移

删掉两个环境变量，你就回到 Anthropic 直连。想 A/B 路由就把两份配置
都放秘钥管理器里。

## 下一步

<CardGroup cols={2}>
  <Card title="从 OpenAI 迁移" icon="arrow-right-arrow-left" href="/zh/migrate-from-openai">
    同样思路，OpenAI 那一边。
  </Card>

  <Card title="Claude Code CLI" icon="terminal" href="/zh/claude-code-cli">
    CLI 端的具体配置。
  </Card>

  <Card title="/messages 参考" icon="code" href="/zh/api-reference/text/claude-messages">
    完整的 Messages-API 协议。
  </Card>

  <Card title="Endpoint 类型" icon="layer-group" href="/zh/concepts/endpoints">
    跨协议翻译背后的工作原理。
  </Card>
</CardGroup>
