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

# 接入教程

> 基于生产环境复核，从 OpenAI、Anthropic、Gemini 接入 Crazyrouter 的起步路径

> 更新日期：2026-06-06

# 接入教程

本文页只写入 `2026-03-23` 已在 Crazyrouter 生产环境复核过的起步路径。

如果你要最快开始，先区分三类接法：

* OpenAI 兼容：`https://api.crazyrouter.com/v1`
* Anthropic 原生：`https://api.crazyrouter.com`
* Gemini 原生：`https://api.crazyrouter.com/v1beta/models/...`

## 最短迁移原则

从 OpenAI 兼容客户端迁移到 Crazyrouter，通常只需要改两项：

1. `base_url` 改成 `https://api.crazyrouter.com/v1`
2. `api_key` 改成 Crazyrouter 的 `sk-xxx`

***

## 从 OpenAI 迁移

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://api.crazyrouter.com/v1"
)

response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello"}],
    max_tokens=64
)
```

本轮生产复核确认：

* `gpt-5.5` 通过 `/v1/chat/completions` 可正常返回
* 如果你需要 reasoning 摘要或 OpenAI 风格 web search，优先切到 `/v1/responses`

相关页面：

* [Responses API 概览](/chat/responses/overview)
* [GPT-5 思考模式](/chat/responses/gpt5-thinking)

***

## 从 Anthropic 迁移

### 方案 A：继续走 OpenAI 兼容层

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://api.crazyrouter.com/v1"
)

response = client.chat.completions.create(
    model="claude-opus-4-8",
    messages=[{"role": "user", "content": "Hello"}],
    max_tokens=64
)
```

### 方案 B：走 Anthropic 原生 Messages

```python theme={null}
import anthropic

client = anthropic.Anthropic(
    api_key="sk-xxx",
    base_url="https://api.crazyrouter.com"
)

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=128,
    messages=[{"role": "user", "content": "Hello"}]
)
```

如果你要：

* 普通 Claude 对话：优先 `claude-opus-4-8`
* 明确需要 thinking block：优先 `claude-opus-4-8`

相关页面：

* [Claude 原生格式](/chat/anthropic/messages)

***

## 从 Gemini 迁移

### 方案 A：OpenAI 兼容层

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://api.crazyrouter.com/v1"
)

response = client.chat.completions.create(
    model="gemini-3.1-pro",
    messages=[{"role": "user", "content": "Hello"}],
    max_tokens=64
)
```

### 方案 B：Gemini 原生

```bash theme={null}
curl "https://api.crazyrouter.com/v1beta/models/gemini-3.1-pro:generateContent?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "Hello"}
        ]
      }
    ]
  }'
```

如果你要：

* 只复用现有 OpenAI SDK 代码：先走兼容层
* 需要结构化输出、Google Search、thinking：优先走 Gemini 原生

相关页面：

* [Gemini OpenAI 兼容格式](/chat/gemini/openai-compat)
* [Gemini 原生格式](/chat/gemini/native)

***

## 环境变量方式

如果你走 OpenAI 兼容层，推荐先配：

<Tabs>
  <Tab title="Linux / macOS">
    ```bash theme={null}
    export OPENAI_API_KEY=sk-xxx
    export OPENAI_BASE_URL=https://api.crazyrouter.com/v1
    ```
  </Tab>

  <Tab title="Windows">
    ```powershell theme={null}
    $env:OPENAI_API_KEY = "sk-xxx"
    $env:OPENAI_BASE_URL = "https://api.crazyrouter.com/v1"
    ```
  </Tab>
</Tabs>

然后代码里可直接：

```python theme={null}
from openai import OpenAI
client = OpenAI()
```

***

## 起步建议

| 目标                                                 | 推荐起步方式                                  |
| -------------------------------------------------- | --------------------------------------- |
| 最快接入 GPT                                           | OpenAI 兼容 + `gpt-5.5`                   |
| 最快接入 Claude                                        | Anthropic 原生 + `claude-opus-4-8`        |
| 最快接入 Gemini                                        | OpenAI 兼容或 Gemini 原生 + `gemini-3.1-pro` |
| 要 reasoning 摘要                                     | Responses API                           |
| 要 Claude thinking block                            | `claude-opus-4-8`                       |
| 要 Gemini Google Search / thinking / responseSchema | Gemini 原生                               |

<Note>
  Crazyrouter 同时支持 OpenAI、Anthropic、Gemini 三种协议。更稳的做法通常不是“所有模型都强行走同一协议”，而是按能力选最合适的入口。
</Note>
