Claude Token 计算与成本优化
Token 是 AI 模型处理文本的基本单位,直接决定 API 调用成本。本文介绍 Claude 的 Token 计算方法、各模型定价,以及优化 Token 用量的实用策略。
什么是 Token?
Token 是模型处理文本的最小单位。对于中文,1 个汉字通常占 1-2 个 token;对于英文,1 个单词约占 1-1.5 个 token。标点符号、空格也会消耗 token。
估算规则:
- 中文:约 1 个汉字 = 1.2-1.5 token
- 英文:约 1 个单词 = 1-1.3 token
- 代码:因缩进和关键词较多,约 1 行 = 5-15 token
Claude 模型 Token 定价
Claude 按输入和输出分别计费(价格为每百万 token):
- Claude Opus 4:输入 $15 / 输出 $75
- Claude Sonnet 4:输入 $3 / 输出 $15
- Claude Haiku 3.5:输入 $0.80 / 输出 $4
使用 Prompt 缓存可节省 90% 输入费用,使用 Batch API 可享受 50% 折扣。
查看 Token 用量
每次 API 调用的响应都包含 usage 字段:
import anthropic
client = anthropic.Anthropic(
api_key="your-api-key",
base_url="https://claude4u.com/v1"
)
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "什么是量子计算?"}]
)
usage = response.usage
print(f"输入 Token: {usage.input_tokens}")
print(f"输出 Token: {usage.output_tokens}")
print(f"缓存命中: {getattr(usage, 'cache_read_input_tokens', 0)}")
print(f"缓存写入: {getattr(usage, 'cache_creation_input_tokens', 0)}")
# 计算费用(以 Sonnet 4 为例)
input_cost = usage.input_tokens / 1_000_000 * 3
output_cost = usage.output_tokens / 1_000_000 * 15
print(f"本次费用: ${input_cost + output_cost:.6f}")
Token 计算工具
在发送请求前预估 token 数量:
# 使用 Anthropic 的 token 计数 API
token_count = client.messages.count_tokens(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "你好,请介绍一下人工智能的发展历史"}]
)
print(f"预估输入 Token: {token_count.input_tokens}")
本地粗略估算
def estimate_tokens(text):
"""粗略估算 token 数量"""
chinese_chars = sum(1 for c in text if '\u4e00' <= c <= '\u9fff')
other_chars = len(text) - chinese_chars
return int(chinese_chars * 1.4 + other_chars * 0.3)
text = "Claude 是 Anthropic 开发的大语言模型"
print(f"估算 Token: {estimate_tokens(text)}")
Token 优化策略
1. 精简系统提示词
# 优化前(约 200 token)
system = "你是一个非常专业的、经验丰富的高级 Python 开发工程师,拥有超过20年的工作经验,精通各种Python框架和库..."
# 优化后(约 50 token)
system = "你是 Python 专家。回复简洁,包含代码示例。"
2. 使用 Prompt 缓存
对于重复使用的长上下文(如 RAG 文档),启用 Prompt Cache 可节省 90% 费用:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=[{
"type": "text",
"text": long_context, # 长文档上下文
"cache_control": {"type": "ephemeral"}
}],
messages=[{"role": "user", "content": "根据文档回答问题"}]
)
3. 控制输出长度
- 使用
max_tokens限制输出长度 - 在 System Prompt 中要求简洁回答
- 对长回复使用
stop_sequences提前截断
4. 优化对话历史
- 定期总结长对话,用总结替代完整历史
- 移除无关的早期消息
- 使用 sliding window 保留最近 N 轮对话
提示:通过 claude4u.com 轻舟 AI 中转服务,可以在管理后台实时监控每个 API Key 的 Token 用量和费用统计,支持设置用量预警和自动限额,帮你精确控制成本。
各模型上下文窗口
- Claude Opus 4 / Sonnet 4:200K token(约 15 万中文字)
- Claude Haiku 3.5:200K token
上下文窗口越大,可以处理越长的文档和对话,但也意味着输入 token 费用越高。
注意:Token 用量包含输入(System Prompt + 对话历史 + 当前消息)和输出两部分。随着对话轮次增加,输入 token 会不断累积,导致费用快速上升。建议在长对话场景中使用消息压缩策略。
轻舟 AI