计算消息的 token 数

BigModel.io 的 POST /v1/messages/count_tokens 接口:在不生成回复的情况下计算 Anthropic Messages 请求的输入 token 数,仅 Anthropic 分组可用。

POSThttps://bigmodel.io/v1/messages/count_tokens
本页目录
  1. 请求
  2. 认证
  3. 请求体
  4. 响应
  5. 响应字段
  6. 示例
  7. 说明
  8. 相关文档

计算一个 Anthropic Messages 请求体会消耗多少输入 token,不生成回复,也不记录用量。仅 Anthropic 分组支持;OpenAI 分组和仅对话补全分组(DeepSeek、GLM 平台)返回 404。

#请求

http
POST https://bigmodel.io/v1/messages/count_tokens

#认证

请求头 值
Authorization Bearer $BIGMODEL_API_KEY
x-api-key $BIGMODEL_API_KEY

任选其一。

#请求体

Anthropic Messages 请求体,不需要 max_tokens。

字段 类型 必填 说明
model string 是 模型 ID。
messages array<object> 是 要计数的消息。
system string | array<object>
tools array<object>

#响应

状态码 含义
200 上游返回的 token 计数。
400 api_key_in_query_deprecated(Key 放在了查询参数里),或 invalid_request_error:请求体为空或不是合法 JSON、缺少 model、stream 不是布尔值等。
401 API_KEY_REQUIRED、INVALID_API_KEY、API_KEY_DISABLED、USER_NOT_FOUND、USER_INACTIVE。
403 INSUFFICIENT_BALANCE、API_KEY_EXPIRED、ACCESS_DENIED(IP 规则)、SUBSCRIPTION_NOT_FOUND、SUBSCRIPTION_INVALID,或 permission_error(Key 未分配分组、分组不允许该接口)。
404 该 Key 所在分组不支持 token 计数。
413 请求体过大。
429 API_KEY_QUOTA_EXHAUSTED、USAGE_LIMIT_EXCEEDED(套餐额度),或 rate_limit_exceeded / rate_limit_error(Key 的 5 小时/1 天/7 天限额、每分钟请求数、并发、上游限流)。每分钟限流会带 Retry-After。
503 api_error 等:分组暂时没有该模型的可用容量,或分组不提供该模型(No available accounts)。

#响应字段

字段 类型 说明
input_tokens integer 该请求的输入 token 数。

#示例

cURL
curl https://bigmodel.io/v1/messages/count_tokens \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3",
    "system": "你是一个简洁的助手。",
    "messages": [{"role": "user", "content": "用一句话解释 HTTP 429。"}]
  }'
Python
import os
from anthropic import Anthropic

client = Anthropic(base_url="https://bigmodel.io", api_key=os.environ["BIGMODEL_API_KEY"])

count = client.messages.count_tokens(
    model="glm-5.3",
    system="你是一个简洁的助手。",
    messages=[{"role": "user", "content": "用一句话解释 HTTP 429。"}],
)
print(count.input_tokens)
Node.js
import Anthropic from '@anthropic-ai/sdk'

const client = new Anthropic({baseURL: 'https://bigmodel.io', apiKey: process.env.BIGMODEL_API_KEY})

const count = await client.messages.countTokens({
  model: 'glm-5.3',
  system: '你是一个简洁的助手。',
  messages: [{role: 'user', content: '用一句话解释 HTTP 429。'}],
})
console.log(count.input_tokens)

响应示例(数值仅作示意):

json
{"input_tokens": 21}

#说明

  • 并非所有分组都可用。 OpenAI 分组和仅对话补全分组返回 404:{"type":"error","error":{"type":"not_found_error","message":"Token counting is not supported for this platform"}}。这些分组请直接读取实际响应中的 usage。
  • 计数由上游返回,反映的是该模型自己的分词方式。
  • 仍做计费检查。 计数本身不收费,但和其他文本接口一样,要求余额大于 0 或有生效中的套餐,否则返回 403 INSUFFICIENT_BALANCE。
  • 请求体为空或格式错误返回 400 invalid_request_error,过大返回 413。完整列表见错误码。

#相关文档

更新于 · 以 Markdown 查看