为每一步设置令牌预算
为每个节点限制输入和输出令牌数,避免失控循环让您承担巨额费用。
为每一步设置令牌预算 是 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 反馈 — 无需本地设置。