使用 Anthropic SDK
万川提供 Anthropic Messages 端点。官方 SDK 只需改 base_url 与密钥,但 Base URL 的写法和 OpenAI SDK 正好相反。
base_url 填 https://chuanapi.com,不要带 /v1。Anthropic SDK 会自己拼上 /v1/messages。 这是从 OpenAI SDK 迁过来时最容易踩的坑。Base URL 的差异
两个 SDK 的拼接行为不同,写错就是 404:
- OpenAI SDK:
https://chuanapi.com/v1→ 实际请求/v1/chat/completions - Anthropic SDK:
https://chuanapi.com→ 实际请求/v1/messages
Python
# pip install anthropic
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["WANCHUAN_API_KEY"],
base_url="https://chuanapi.com",
)
resp = client.messages.create(
model="MODEL_ID",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(resp.content[0].text)把 MODEL_ID 换成 模型目录 里的真实 id。
Node.js
// npm i @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.WANCHUAN_API_KEY,
baseURL: "https://chuanapi.com",
});
const resp = await client.messages.create({
model: "MODEL_ID",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }],
});
console.log(resp.content[0].text);与官方端点的差异
max_tokens必填:Messages 协议要求显式给出,省略会返回 400。OpenAI 协议下它是可选的。system是顶层参数:不放进messages数组。- model id 用万川目录的: 不要沿用官方的模型名,目录之外的名称一律 404。
- 计费口径统一:无论走 Messages 还是 Chat Completions,都按万川的倍率计费,不因协议不同而变化。
resp = client.messages.create(
model="MODEL_ID",
max_tokens=1024,
system="你是一个简洁的技术助手。",
messages=[{"role": "user", "content": "解释一下 SSE"}],
)用 curl 验证
SDK 报错时先用 curl 排除客户端因素:
curl https://chuanapi.com/v1/messages \
-H "x-api-key: $WANCHUAN_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID",
"max_tokens": 64,
"messages": [{"role": "user", "content": "你好"}]
}'常见问题
- 404:
base_url多写了/v1,实际打到了/v1/v1/messages。 - 400 max_tokens: 忘了传
max_tokens,或者填的值超过该模型上限。 - 401:密钥没读到, 或者环境里残留了
ANTHROPIC_API_KEY覆盖了显式传入的值。 - 403:账号分组不含该模型。
相关文档
- 配合 Claude Code 使用—— 同一个端点的终端客户端用法。
- 使用 OpenAI SDK—— 兼容面更广的另一条路。
本页基于 2026-08-19 校订。