计算消息的 token 数
BigModel.io 的 POST /v1/messages/count_tokens 接口:在不生成回复的情况下计算 Anthropic Messages 请求的输入 token 数,仅 Anthropic 分组可用。
POST
https://bigmodel.io/v1/messages/count_tokens计算一个 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 或有生效中的套餐,否则返回
403INSUFFICIENT_BALANCE。 - 请求体为空或格式错误返回
400invalid_request_error,过大返回413。完整列表见错误码。
#相关文档
这篇文档有帮助吗?
更新于 · 以 Markdown 查看