成本意识:令牌计数与预算
使用 tiktoken 统计令牌,在发送前估算成本,并执行每次请求和每天的预算限制。
成本意识:令牌计数与预算 是 CoddyKit 上的免费 AI Agents 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
为什么令牌计数很重要
您需要按令牌付费。没有令牌预算的失控智能体循环可能在几分钟内花费数百美元。
令牌计数是控制成本最重要的习惯。
什么是令牌
令牌是模型处理的文本片段。对于英语,可以参考以下粗略规则:
- 1 个令牌约等于 4 个字符
- 1 个令牌约等于 0.75 个单词
- 100 个令牌约等于 75 个单词
代码、表情符号和非英语文本每个字符所占用的令牌更多。
使用 tiktoken 计算令牌数(OpenAI)
OpenAI 提供了精确的分词器:
# pip install tiktoken
import tiktoken
enc = tiktoken.encoding_for_model('gpt-4o-mini')
tokens = enc.encode('Hello, world!')
print(len(tokens)) # 4
print(tokens) # [9906, 11, 1917, 0]计算消息中的令牌数
完整计数还包括消息结构的额外开销:
def count_message_tokens(messages, model='gpt-4o-mini'):
enc = tiktoken.encoding_for_model(model)
total = 0
for m in messages:
total += 4 # role + structural
total += len(enc.encode(m['content']))
return total + 2 # priming使用 Anthropic 计算令牌数
Anthropic 提供了一个服务端计数接口:
count = client.messages.count_tokens(
model='claude-sonnet-4-5',
system='You are helpful.',
messages=[{'role': 'user', 'content': 'Hello'}],
)
print(count.input_tokens)发送前估算成本
将令牌数乘以每个令牌的价格(价格可从服务商的定价页面获取):
INPUT_PRICE = 0.150 / 1_000_000 # gpt-4o-mini: $0.15 / 1M input tokens
OUTPUT_PRICE = 0.600 / 1_000_000
input_tokens = count_message_tokens(messages)
est_input_cost = input_tokens * INPUT_PRICE
print(f'Estimated input cost: ${est_input_cost:.6f}')跟踪实际成本
每次调用后,累加使用量:
total_cost = 0
response = client.chat.completions.create(...)
cost = (
response.usage.prompt_tokens * INPUT_PRICE +
response.usage.completion_tokens * OUTPUT_PRICE
)
total_cost += cost每次运行的预算
为每次智能体运行设置硬性上限:
MAX_COST_PER_RUN = 0.50 # USD
if total_cost > MAX_COST_PER_RUN:
raise BudgetExceeded(f'Cost {total_cost} exceeds limit')每位用户的每日预算
在 Redis 中跟踪每位用户的成本,并每天重置:
key = f'cost:{user_id}:{today_date}'
current = float(redis.get(key) or 0)
if current + cost > 5.0:
raise QuotaExceeded()
redis.incrbyfloat(key, cost)
redis.expireat(key, midnight_tomorrow_ts)限制每次调用的 max_tokens
最常见的意外高额成本来源,是生成包含 50,000 个令牌的响应。请为它设置上限:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
max_tokens=2048, # never more than 2k output
)智能体的步骤上限
将令牌上限与步骤上限(最大迭代次数)结合起来:
MAX_STEPS = 20
for step in range(MAX_STEPS):
response = run_step(...)
if response.is_final():
break
else:
raise StepLimitExceeded()输出令牌上限
为什么要显式设置 max_tokens?
回顾
令牌计数、每次调用的 max_tokens、每次运行的预算、每位用户的配额以及步骤上限。将这五项全部叠加,才能安全地用于生产环境。
用 AI 导师学习 AI Agents — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 60
- 课程
- 239
常见问题解答
「成本意识:令牌计数与预算」课时是免费的吗?
是的 — 「成本意识:令牌计数与预算」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「成本意识:令牌计数与预算」这节课中我会学到什么?
使用 tiktoken 统计令牌,在发送前估算成本,并执行每次请求和每天的预算限制。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「成本意识:令牌计数与预算」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。