从 Anthropic 直连迁移
用 Anthropic SDK 切到 GPUShare —— base URL 不带 /v1 一定要注意
从 Anthropic 直连迁移
已经在用 Anthropic SDK?切到 GPUShare 只需改 2 行代码,然后可以一并调 GPT / GLM / Grok / DeepSeek 等 26+ 个非 Claude 模型。
⚠️ 注意: base URL 不带 /v1
Anthropic SDK 默认会自动在 base URL 后追加 /v1/messages。所以:
# ❌ 错: 会拼出 /v1/v1/messages
client = Anthropic(base_url="https://api.dflop.top/v1", ...)
# ✅ 对: SDK 会拼出 /v1/messages
client = Anthropic(base_url="https://api.dflop.top", ...)
记住一句话: OpenAI SDK 带 /v1,Anthropic SDK 不带。
改动点 (Python)
from anthropic import Anthropic
# 原 Anthropic 直连
client = Anthropic(
- api_key="sk-ant-...",
+ api_key="sk-gpushare-xxx",
+ base_url="https://api.dflop.top",
)
就这两处。client.messages.create(...) 之后的代码不变。
改动点 (TypeScript)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
- apiKey: process.env.ANTHROPIC_API_KEY,
+ apiKey: process.env.GPUSHARE_API_KEY,
+ baseURL: "https://api.dflop.top",
});
改动点 (curl)
- curl https://api.anthropic.com/v1/messages \
+ curl https://api.dflop.top/v1/messages \
- -H "x-api-key: sk-ant-..." \
+ -H "x-api-key: sk-gpushare-xxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
拿到的新能力
# 用 Anthropic SDK 调 GPT
client.messages.create(model="gpt-5.4", max_tokens=1024, messages=[...])
# 调 GLM
client.messages.create(model="glm-5.1", max_tokens=1024, messages=[...])
# 调 Grok
client.messages.create(model="grok-4-fast-reasoning", max_tokens=1024, messages=[...])
# 调 DeepSeek
client.messages.create(model="deepseek-v3.2", max_tokens=1024, messages=[...])
限制: Gemini 系列 (
gemini-*) 目前不支持 Anthropic Messages 端点 (Anthropic → Gemini 翻译在路线图中)。要调 Gemini 改用 OpenAI Chat 或 Gemini Native 端点。
价格
Anthropic 直连 vs GPUShare:
| Model | Anthropic 直连 ($/1M in/out) | GPUShare ($/1M in/out) |
|---|---|---|
| claude-opus-4-5-20251101 | $15.00 / $75.00 | $15.00 / $75.00 |
| claude-sonnet-4-5-20250929 | $3.00 / $15.00 | $3.00 / $15.00 |
每次调用账单完整记在 model.dflop.top/keys → Usage。
改完之后必看
1. anthropic-version header
Anthropic SDK 自动设置 anthropic-version: 2023-06-01。curl 直调时必须手动加这个 header,否则 400。
2. Tools / Tool Use 兼容
完全一致:input_schema / tool_use / tool_result 命名都保留。详见 工具调用。
3. 流式响应跟原 Anthropic 一致
event: content_block_delta / event: message_stop 等事件格式不变。详见 流式响应。
4. 错误格式
GPUShare 在 /v1/messages 端点返回的错误保持 Anthropic 协议格式:
{"type": "error", "error": {"type": "...", "message": "..."}}
5. max_tokens 必填
跟 Anthropic 一致,GPUShare 在 /v1/messages 端点也要求 max_tokens 必填。这跟 OpenAI 不同 (OpenAI 选填)。
6. 你不能用的 Anthropic 专属功能
| 功能 | 状态 |
|---|---|
Messages API (POST /v1/messages) | ✅ 完整支持 |
| Streaming | ✅ 支持 |
| Tool Use | ✅ 支持 |
| Vision (image input) | ✅ 支持 (Claude / GPT / Gemini / Grok 模型) |
Prompt caching (cache_control) | ⚠️ 翻译路径会丢字段;原生 Claude 通道支持 |
| Computer Use beta | ❌ 不支持 |
| Files API | ❌ 不支持 |
| Batch API | ❌ 不支持 |
完整 diff 示例
原 Anthropic 直连
import os
from anthropic import Anthropic
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
msg = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{"role": "user", "content": "Write a haiku"}],
)
print(msg.content[0].text)
GPUShare
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["GPUSHARE_API_KEY"],
base_url="https://api.dflop.top",
)
# 同样调 Claude
msg = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{"role": "user", "content": "Write a haiku"}],
)
# 也能调 GPT (用 Anthropic SDK!)
msg_gpt = client.messages.create(
model="gpt-5.4",
max_tokens=1024,
messages=[{"role": "user", "content": "Write a haiku"}],
)
常见问题
Q: ANTHROPIC_API_KEY 环境变量还要留吗?
建议平行保留:
export ANTHROPIC_API_KEY=sk-ant-... # 原 Anthropic 直连
export GPUSHARE_API_KEY=sk-gpushare-... # GPUShare
Q: Claude Code 客户端怎么切?
export ANTHROPIC_BASE_URL=https://api.dflop.top
export ANTHROPIC_AUTH_TOKEN=sk-gpushare-xxx
claude
详见 Claude Code 集成。
Q: cache_control 还能用吗?
- 原生 Claude 通道支持 (Anthropic 直传 Claude 模型时)
- 翻译路径会丢字段 (
X-Protocol-Warning: cache_control: dropped)
如果 prompt caching 对你的成本很关键,坚持用 Claude 模型走 /v1/messages 端点即可保留完整支持。
Q: 怎么知道走的是原生还是翻译路径?
看响应 header:
X-Protocol-Translation: <tag>—— 翻译路径- 无该 header —— 原生直通
也可以在 兼容矩阵 直接查每个模型每个端点的路径。
下一步
- 选什么模型最划算? 见 模型列表 §按用途速选
- 想用 Anthropic SDK 调 Gemini? 暂不支持 (路线图中),现在改用 OpenAI SDK