AI Agents · 课时

成本意识:令牌计数与预算

使用 tiktoken 统计令牌,在发送前估算成本,并执行每次请求和每天的预算限制。

第 4 / 4 课13 个步骤

成本意识:令牌计数与预算 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 调用 OpenAI API:chat.completions
  2. 调用 Anthropic API:messages
  3. 流式响应(SSE)
  4. 成本意识:令牌计数与预算
← 返回 AI Agents