0Pricing
AI Agents · 课时

为每一步设置令牌预算

为每个节点限制输入和输出令牌数,避免失控循环让您承担巨额费用。

为每一步设置令牌预算 是 CoddyKit 上的免费 AI Agents 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

令牌就是成本

您发送或接收的每个令牌都会产生金钱和时间成本。生产环境中的智能体会在每个步骤跟踪令牌使用量并强制执行上限。

在所有地方设置 max_tokens 上限

始终在每次调用中设置 max_tokens。否则,有问题的提示词可能生成 10,000 个令牌的响应:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    max_tokens=1024,   # cap per response
)

智能体循环中的逐步上限

不同步骤需要不同的预算:

STEP_BUDGETS = {
    'planner': 512,
    'classifier': 64,
    'final_synthesis': 2048,
    'tool_call': 256
}

response = client.chat.completions.create(
    model=model,
    messages=messages,
    max_tokens=STEP_BUDGETS[step_name]
)

裁剪输入令牌

输入令牌同样会产生费用。请积极裁剪:

import tiktoken
enc = tiktoken.encoding_for_model('gpt-4o-mini')

def trim_to_budget(text, max_tokens=4000):
    toks = enc.encode(text)
    if len(toks) > max_tokens:
        return enc.decode(toks[:max_tokens])
    return text

每次运行的总预算

将所有步骤的输入令牌和输出令牌相加;如果超出上限则中止:

MAX_TOKENS_PER_RUN = 50_000
total = 0
for step in agent_steps:
    r = call_step(step)
    total += r.usage.total_tokens
    if total > MAX_TOKENS_PER_RUN:
        return 'Budget exhausted; partial result'

以美元设置成本上限

有时,用美元进行预算更有意义:

PRICES = {'gpt-4o-mini': {'in': 0.15e-6, 'out': 0.60e-6}}

for step in agent_steps:
    r = call_step(step)
    cost = r.usage.prompt_tokens * PRICES[model]['in'] + r.usage.completion_tokens * PRICES[model]['out']
    total_cost += cost
    if total_cost > MAX_COST_PER_RUN:
        break

自适应预算

在最困难的步骤上花费更多令牌:

if step_difficulty == 'easy':
    max_tokens = 256
elif step_difficulty == 'hard':
    max_tokens = 2048

输出长度估算

有时可以询问模型答案应该有多长:

preview = llm.invoke(f'How many tokens (approx) does {question} need to answer?').content
budget = parse_int(preview, default=512)
final = llm.invoke(question, max_tokens=budget)

截断工具输出

大型工具输出(HTML、日志)会使上下文膨胀。将其发送给模型前先进行截断:

tool_result = run_tool(...)
text = json.dumps(tool_result)
if len(text) > 4000:
    text = text[:4000] + '\n...[truncated]'

压缩历史记录

对于较长的对话,将较早的轮次总结起来,以节省令牌:

if total_message_tokens(messages) > 8000:
    messages = compact(messages)

输出格式会影响令牌数量

JSON 比较冗长。对于简短的结构化回复,可以考虑:

  • 单个工具调用参数
  • 逗号分隔的列表
  • 紧凑的自定义格式

跟踪令牌分布

逐步统计直方图可以揭示哪些步骤需要优化:

metrics.observe('step.planner.tokens', r.usage.total_tokens, tags={'agent': 'qa'})

为什么要设置 max_tokens

为什么每次 LLM 调用都要设置 max_tokens?

回顾

为每次调用设置 max_tokens 上限。裁剪输入。设置逐步预算。设置每次运行的总上限。跟踪分布。压缩历史记录。

常见问题解答

「为每一步设置令牌预算」课时是免费的吗?

是的 — 「为每一步设置令牌预算」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「为每一步设置令牌预算」这节课中我会学到什么?

为每个节点限制输入和输出令牌数,避免失控循环让您承担巨额费用。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「为每一步设置令牌预算」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为每一步设置令牌预算
  2. 模型路由(低价 -> 高价)
  3. 提示与结果缓存(Anthropic、Vertex)
  4. 量化与推测解码
← 返回 AI Agents