← 提示词库 Anthropic/claude-code/skills/claude-api/shared/token-counting.md 原文 md
🌐 中英双语对照

Token Counting / 令牌计数

Use the count_tokens endpoint (POST /v1/messages/count_tokens) for accurate
token counts against Claude models. Token counts are model-specific - pass
the same model ID you'll use for inference.

要对 Claude 模型获得准确的令牌计数,请使用 count_tokens 端点(POST /v1/messages/count_tokens)。令牌计数是因模型而异的——请传入你推理时将使用的同一个模型 ID。

Do not use tiktoken. It's OpenAI's tokenizer. It undercounts Claude
tokens by ~15-20% on typical text, and by much more on code or non-English
input. Any estimate from tiktoken, gpt-tokenizer, or similar is wrong for
Claude.

**不要使用 tiktoken。**那是 OpenAI 的分词器。对典型文本,它会把 Claude 的令牌数低估约 15-20%,对代码或非英语输入的低估幅度还要大得多。任何来自 tiktoken、gpt-tokenizer 或类似工具的估计值,对 Claude 来说都是错误的。

Count a file or string / 统计文件或字符串

from anthropic import Anthropic

client = Anthropic()
resp = client.messages.count_tokens(
    model="claude-opus-5-5",
    messages=[{"role": "user", "content": open("CLAUDE.md").read()}],
)
print(resp.input_tokens)

TypeScript: await client.messages.countTokens({model, messages}) ->
.input_tokens. See {lang}/claude-api/README.md for other SDKs.

TypeScript:await client.messages.countTokens({model, messages}) ->
.input_tokens。其他 SDK 见 {lang}/claude-api/README.md。

CLI / 命令行

ant messages count-tokens --model claude-opus-5-5 \
  --message '{role: user, content: "@./CLAUDE.md"}' \
  --transform input_tokens -r

Diffing a file across two versions / 比较同一文件两个版本间的令牌差异

The endpoint is stateless - count each version separately and subtract:

该端点是无状态的——请分别统计每个版本再相减:

from anthropic import Anthropic
import subprocess

client = Anthropic()
def count(text: str) -> int:
    return client.messages.count_tokens(
        model="claude-opus-5-5",
        messages=[{"role": "user", "content": text}],
    ).input_tokens

before = subprocess.check_output(["git", "show", "HEAD:CLAUDE.md"], text=True)
after = open("CLAUDE.md").read()
print(count(after) - count(before))

Full docs: see the Token Counting entry in shared/live-sources.md.

完整文档:见 shared/live-sources.md 中的 Token Counting 条目。

【评论】文档明确告诫不要用 OpenAI 的 tiktoken 估算 Claude 的令牌数:不同厂商分词器差异会带来两位数的计数偏差。这类提示面向的是需要生成正确调用代码的模型或开发者。