用 Anthropic SDK 调用 BigModel.io
在官方 Anthropic Python 和 TypeScript SDK 中把 base_url 设为 https://bigmodel.io,调用 BigModel.io 的 Anthropic 兼容 Messages API,含流式输出和工具调用示例。
BigModel.io 在 https://bigmodel.io/v1/messages 提供 Anthropic Messages API。官方 Anthropic SDK 指向网关根地址即可,/v1/messages 由 SDK 自己拼。
| 配置项 | 值 |
|---|---|
| Base URL | https://bigmodel.io(不带 /v1) |
| API Key | 你的 BigModel.io Key(sk-...) |
| 模型 | 模型目录中的模型 ID,例如 glm-5.3 |
Key 所在分组必须提供
/v1/messages。GLM、DeepSeek 分组只支持 Chat Completions,这里会返回 404,这类 Key 请用 OpenAI SDK。
export BIGMODEL_API_KEY="sk-..."#安装
pip install anthropicnpm install @anthropic-ai/sdk#最小调用
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://bigmodel.io",
api_key=os.environ["BIGMODEL_API_KEY"],
)
message = client.messages.create(
model="glm-5.3",
max_tokens=512,
messages=[{"role": "user", "content": "用三句话解释什么是向量数据库。"}],
)
print(message.content[0].text)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://bigmodel.io",
apiKey: process.env.BIGMODEL_API_KEY,
});
const message = await client.messages.create({
model: "glm-5.3",
max_tokens: 512,
messages: [{ role: "user", content: "用三句话解释什么是向量数据库。" }],
});
console.log(message.content[0].type === "text" ? message.content[0].text : message.content);api_key / apiKey 以 x-api-key 请求头发送。想用 Authorization: Bearer,改传 auth_token / authToken,网关两种都接受。SDK 还会从环境变量读取 ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN,其他工具遗留的值记得清掉。
#流式输出
with client.messages.stream(
model="glm-5.3",
max_tokens=512,
messages=[{"role": "user", "content": "写一首关于延迟的俳句。"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)const stream = client.messages.stream({
model: "glm-5.3",
max_tokens: 512,
messages: [{ role: "user", content: "写一首关于延迟的俳句。" }],
});
stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();流开始后出现的错误以 SSE error 事件返回,SDK 会把它抛成异常。
#工具调用
工具使用标准 Messages 格式。模型调用工具的效果因模型而异,正式使用前先测一下。见工具调用。
message = client.messages.create(
model="glm-5.3",
max_tokens=512,
tools=[{
"name": "get_weather",
"description": "查询城市当前天气",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}],
messages=[{"role": "user", "content": "杭州现在天气怎么样?"}],
)
for block in message.content:
if block.type == "tool_use":
print(block.name, block.input)const message = await client.messages.create({
model: "glm-5.3",
max_tokens: 512,
tools: [{
name: "get_weather",
description: "查询城市当前天气",
input_schema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"],
},
}],
messages: [{ role: "user", content: "杭州现在天气怎么样?" }],
});
for (const block of message.content) {
if (block.type === "tool_use") console.log(block.name, block.input);
}回传历史消息时,如果 thinking 块或工具 ID 对不上,网关会返回 409 malformed_session_state。请把收到的 assistant 内容原样传回。
#提示缓存与 Token 计数
cache_control 断点会透传(最多 4 个,多出的会被移除),缓存写入和读取按模型的缓存价格计费。client.messages.count_tokens(...) 调用 POST /v1/messages/count_tokens,仅在提供 Messages 的分组可用。见提示缓存。
#验证配置
运行上面的最小调用,然后打开用量,确认请求出现且端点为 /v1/messages。也可以用 curl:
curl https://bigmodel.io/v1/messages \
-H "x-api-key: $BIGMODEL_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'#常见问题排查
404 ... platform only supports /v1/chat/completions; /v1/messages is not available。 Key 所在分组只支持 Chat Completions。换一个支持 Messages 的分组 Key,或改用 OpenAI SDK。
所有请求都 404。 Base URL 末尾带了 /v1,SDK 实际请求的是 /v1/v1/messages。改成 https://bigmodel.io。
401 INVALID_API_KEY 或 API_KEY_REQUIRED。 Key 为空或填错,或者环境里残留的 ANTHROPIC_API_KEY 被优先使用了。执行 env | grep ANTHROPIC 检查。
403 This group does not allow /v1/messages dispatch。 该分组不允许使用 Messages API,换一个分组。
403 permission_error API Key is not assigned to any group。 在 API Keys 编辑这个 Key 并选择分组。
503 No available accounts: no available accounts supporting model: ...。 模型 ID 写错,或分组不提供该模型。从模型目录复制 ID。
403 INSUFFICIENT_BALANCE 或 429 API_KEY_QUOTA_EXHAUSTED。 到充值页面充值,或调高 Key 额度。见限额与速率。
#相关文档
- Claude Code 使用同一个 Messages 接口
- OpenAI SDK:调用 Chat Completions
- LangChain(
ChatAnthropic)和 Vercel AI SDK(@ai-sdk/anthropic) - 错误码
更新于 · 以 Markdown 查看