从 Anthropic 迁移
如果你的应用使用 Anthropic Claude SDK 或 /v1/messages 协议,可以零改动迁移到 宁享Token。宁享Token 同时提供原生 Anthropic 协议端点和 OpenAI 兼容端点两种接入方式。
迁移要点
| 项目 | Anthropic 官方 | 宁享Token |
|---|---|---|
| Base URL | https://api.anthropic.com | `` |
| API Key | Anthropic Key | 宁享Token 控制台创建的 Key |
| 端点 | /v1/messages | 完全相同 |
| 请求/响应格式 | Anthropic Messages API | 完全相同 |
| SDK | @anthropic-ai/sdk | 完全相同 |
获取 API Key
- 登录 宁享Token 控制台
- 进入「API Key 管理」页面
- 点击「创建 Key」,复制生成的 Key
Python 迁移示例
修改前(Anthropic)
python
import anthropic
client = anthropic.Anthropic(
api_key="sk-ant-xxxxxxxx", # Anthropic Key
# base_url 默认指向 https://api.anthropic.com
)
message = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[{'role': 'user', 'content': '你好'}],
)
print(message.content[0].text)修改后(宁享Token,Anthropic 协议)
python
import anthropic
client = anthropic.Anthropic(
api_key="<YOUR_宁享Token_API_KEY>", # 改用 宁享Token Key
base_url="", # 仅新增这一行
)
message = client.messages.create(
model="glm-5.2", # 切换为 宁享Token 支持的模型
max_tokens=1024,
messages=[{'role': 'user', 'content': '你好'}],
)
print(message.content[0].text)唯一新增的一行:
base_url=""(不带/v1,SDK 会自动补全/v1/messages)。
Node.js 迁移示例
修改前(Anthropic)
javascript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const message = await client.messages.create({
model: "claude-3-5-sonnet-20241022",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }],
});
console.log(message.content[0].text);修改后(宁享Token)
javascript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.宁享Token_API_KEY,
baseURL: "", // 仅新增这一行
});
const message = await client.messages.create({
model: "glm-5.2",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }],
});
console.log(message.content[0].text);cURL 迁移示例
修改前
bash
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [{'role': 'user', 'content': '你好'}]
}'修改后
bash
curl /v1/messages \
-H "x-api-key: $宁享Token_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "glm-5.2",
"max_tokens": 1024,
"messages": [{'role': 'user', 'content': '你好'}]
}'兼容性说明
| 能力 | 兼容性 | 说明 |
|---|---|---|
| Messages API | ✅ 完全兼容 | /v1/messages 端点 |
| 流式输出(SSE) | ✅ 完全兼容 | stream: true |
| System Prompt | ✅ 兼容 | 顶层 system 字段 |
| Tool Use | ✅ 完全兼容 | tools / tool_use / tool_result |
| 多模态输入 | ✅ 兼容 | 图像输入格式一致 |
| Stop Sequences | ✅ 兼容 | stop_sequences |
| Token Count | ✅ 兼容 | /v1/messages/count_tokens |
| Prompt Caching | ✅ 兼容 | cache_control 字段 |
模型名称映射
迁移时需将 Claude 模型名替换为 宁享Token 支持的模型:
| Anthropic 模型 | 宁享Token 推荐替代 | 说明 |
|---|---|---|
claude-3-5-sonnet | glm-5.2 | 通用对话 |
claude-3-5-haiku | glm-5.1 / deepseek-v4-flash | 低成本 |
claude-3-opus | glm-5.2(思考模式) | 复杂推理 |
claude-3-sonnet | glm-5.1 | 通用 |
替代方案:使用 OpenAI 兼容协议
如果不需要保留 Anthropic 协议,也可以切换到 OpenAI 兼容端点:
python
from openai import OpenAI
client = OpenAI(
api_key="<YOUR_宁享Token_API_KEY>",
base_url="/v1",
)
resp = client.chat.completions.create(
model="glm-5.2",
messages=[{'role': 'user', 'content': '你好'}],
)
print(resp.choices[0].message.content)OpenAI 兼容协议生态更广,推荐优先使用。详见 从 OpenAI 迁移。
常见问题
迁移后报 401 怎么办?
检查 API Key 是否使用 宁享Token 控制台生成的 Key,而非 Anthropic 的 Key。
base_url 要带 /v1 吗?
使用 Anthropic SDK 时 不带 /v1,SDK 会自动补全 /v1/messages。使用 OpenAI SDK 时需带 /v1。
支持 anthropic-version 头吗?
支持,当前兼容版本 2023-06-01。
Prompt Caching 如何启用?
在消息块的 content 中添加 cache_control: { type: "ephemeral" } 即可,行为与 Anthropic 一致。
