用 Anthropic SDK 调用 BigModel.io

在官方 Anthropic Python 和 TypeScript SDK 中把 base_url 设为 https://bigmodel.io,调用 BigModel.io 的 Anthropic 兼容 Messages API,含流式输出和工具调用示例。

本页目录
  1. 安装
  2. 最小调用
  3. 流式输出
  4. 工具调用
  5. 提示缓存与 Token 计数
  6. 验证配置
  7. 常见问题排查
  8. 相关文档

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。

bash
export BIGMODEL_API_KEY="sk-..."

#安装

Python
pip install anthropic
TypeScript
npm install @anthropic-ai/sdk

#最小调用

Python
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)
TypeScript
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,其他工具遗留的值记得清掉。

#流式输出

Python
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)
TypeScript
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 格式。模型调用工具的效果因模型而异,正式使用前先测一下。见工具调用。

Python
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)
TypeScript
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:

bash
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 额度。见限额与速率。

#相关文档

更新于 · 以 Markdown 查看