使用指南
Token 计数
在发起 API 调用前预估消息中的 Token 数量
OpenModel 提供 Token 计数端点,允许你在发起 API 调用前估算消息中的 Token 数量。这对费用估算、上下文窗口管理和提示词优化非常有用。
端点
POST /v1/messages/count_tokens此端点遵循 Anthropic Token 计数 API 格式。接受与 Messages API 相同的 messages 和 system 参数,返回 Token 计数而不实际生成响应。
请求格式
请求体与常规 Messages API 调用类似,但不需要 max_tokens:
curl https://api.openmodel.ai/v1/messages/count_tokens \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "生命的意义是什么?"}
]
}'包含系统提示词
你可以包含系统提示词以获得更准确的计数:
result = client.messages.count_tokens(
model="claude-sonnet-4-6",
system="你是一个乐于助人的助手。",
messages=[
{"role": "user", "content": "用简单的语言解释量子计算。"}
],
)
print(f"输入 Token 数: {result.input_tokens}")响应格式
端点返回包含 Token 计数的 JSON 对象:
{
"input_tokens": 15
}input_tokens 字段表示所有消息和系统提示词(如提供)的总 Token 数。
使用场景
费用估算
在发送请求前计算大致费用:
TOKEN_PRICES = {
"claude-sonnet-4-6": {"input": 3.00, "output": 15.00},
}
result = client.messages.count_tokens(
model="claude-sonnet-4-6",
messages=my_messages,
)
price = TOKEN_PRICES["claude-sonnet-4-6"]
input_cost = (result.input_tokens / 1_000_000) * price["input"]
print(f"预估输入费用: ${input_cost:.6f}")上下文窗口管理
在发送前检查消息是否超出模型的上下文窗口:
MAX_CONTEXT = 200_000
result = client.messages.count_tokens(
model="claude-sonnet-4-6",
messages=my_messages,
)
if result.input_tokens > MAX_CONTEXT * 0.9:
print("警告: 即将达到上下文窗口限制")提示词优化
比较不同提示词表述的 Token 数量,找到最高效的方式:
prompts = [
"请总结以下文本:",
"简要概括:",
"给出简短摘要:",
]
for prompt in prompts:
result = client.messages.count_tokens(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": f"{prompt} {my_text}"}],
)
print(f"'{prompt}' → {result.input_tokens} tokens")不使用 API 的估算方法
如需在不调用 API 的情况下粗略估算,可以使用以下近似规则:
- 英文文本:约每 4 个字符 1 个 Token,或每个单词约 0.75 个 Token
- 代码:密度与英文文本相近
- 中日韩文字:每个字符约 1-2 个 Token
这些仅为粗略估算。如需准确计数,请使用 Token 计数端点。