OverpayingForAI定价台
8 min read·上次准确性审核 · 2026-10-27·价格已验证 · 2026-11-05

智能体的LLM成本控制:限制支出的5条护栏

五条护栏防止AI智能体在一个下午花掉你一个月的预算,每个旗舰模型上200步失控循环的价格示例,以及一个30行的Python运行器,在达到费用上限时中止。

文章文本包含审核日期。下方的费率表在每次部署时从实时目录重新构建。

最快获胜

智能体成本随步骤数的平方增长,因为每一步都会重新发送之前的所有内容。在Claude Sonnet 5上,一次正常的12步运行花费约$0.39;同一个智能体陷入200步循环,会读取3670万输入令牌,花费约$74,在Claude Opus 5上花费$185。根据每个响应的使用字段计算的每运行美元预算,加上硬性步骤上限,是唯一能随损害规模扩展的护栏。

关于限制智能体支出的简短答案

在 Claude Sonnet 5 上健康运行 12 步的 Agent 成本约为 $0.39。陷入 200 步死循环的同一 Agent 成本约为 $74,因为其上下文每步增长 1,800 个 token,且每步都会重新发送全部内容:总计 36.7 million 输入 token。在 Claude Opus 5 或 GPT-5.5 上,同样的循环成本约为 $185。五种防护机制可阻止此问题:每次调用的 max_tokens、每次运行的步数上限、明确的停止条件、根据每次响应中的 usage 字段计算的单次运行美元预算,以及供应商控制台中的每日预算上限。

前三者各只需一行代码。第四者是下方的 30 行运行器。第五者是控制台设置。请全部启用,因为每种机制都能拦截其他机制遗漏的故障。

失控循环是如何发生的

Agent 通常不会因生成一个巨大的响应而失败。它们往往是因为反复执行同一个看似合理的小步骤而失败。我们最常见的故障模式包括:

  • 返回错误信息的工具,模型将其视为提示词并带着相同参数无限重试
  • “验证你的工作”指令,模型通过重新运行整个任务来满足该要求
  • 搜索工具每次调用返回略有不同的结果,导致模型永远觉得没完成
  • 两个 Agent 来回交接任务,各自认为对方负责收尾
  • stop_reason 为 max_tokens,但循环代码将其视为“再次调用”而非“出错了”

这些在第 5 步时看起来都不贵。到了第 80 步时才会显得昂贵,此时上下文已达 147,000 个 token,单步成本超过前二十步的总和。这种增长的底层机制详见 [how much an AI agent costs to run](/guides/how-much-does-an-ai-agent-cost-to-run)。

200 步循环在各旗舰模型上的成本

参考轨迹:4,000 token 前缀,500 token 任务,每一步增加一个 300 token 的工具调用和一个 1,500 token 的结果。第 k 步的输入为 4,500 + 1,800 × (k − 1)。200 步的总和:200 × 4,500 + 1,800 × 19,900 = 36,720,000 输入 token。输出为 200 × 300 = 60,000 token。第 200 步的上下文为 362,700 token,适合 1M 窗口;一个 200K 模型(如旧版 Claude Haiku 4.5)会在第 109 步左右出错,这是一个意外的护栏,而非计划。

模型($/1M 输入/输出)输入成本输出成本200 步总计健康的 12 步运行
Claude Sonnet 5 ($2 / $10)36.72M × $2 = $73.4460,000 × $10 = $0.60$74.04$0.39
Claude Opus 5 ($5 / $25)36.72M × $5 = $183.6060,000 × $25 = $1.50$185.10$0.98
GPT-5.4 ($2.50 / $15)36.72M × $2.50 = $91.8060,000 × $15 = $0.90$92.70$0.50
GPT-5.5 ($5 / $30)36.72M × $5 = $183.6060,000 × $30 = $1.80$185.40$1.01
Gemini 3.1 Pro ($2 / $12)36.72M × $2 = $73.4460,000 × $12 = $0.72$74.16$0.40
Gemini 3.8 Flash ($0.75 / $3.75)36.72M × $0.75 = $27.5460,000 × $3.75 = $0.23$27.77$0.15
DeepSeek V4.1 Flash ($0.30 / $1.20)36.72M × $0.30 = $11.0260,000 × $1.20 = $0.07$11.09$0.058

步骤数增加 17 倍,成本大约增加 190 倍。使用提示缓存(Anthropic 上缓存读取约为列表价格的 10%,写入约为 125%),Sonnet 5 循环变为 362,700 × $2.50 + 36,357,300 × $0.20 + $0.60 = 约 $8.78。缓存值得拥有,正如 [prompt caching for AI agents](/guides/prompt-caching-for-ai-agents) 所示,但 22 倍于健康运行的成本仍然是一笔值得注意的账单。DeepSeek V4.1 Flash,API 名称 deepseek-flash,取代了 DeepSeek 已退役的 V4 Flash。DeepSeek 行使用峰值费率;非峰值时段成本减半。DeepSeek 定价于 2026-10-27 在 api-docs.deepseek.com 检查。

五种防护机制

1. 每次调用的 max_tokens。按单步需求设定,而非模型上限。工具调用步骤通常需要 512 到 2,048 个 token;最终报告可能需要 4,000 个。在 Opus 5 上失控生成的 32,000-token 响应仅自身就消耗 32,000 × $25 = $0.80,且会占据后续每一步的上下文。

2. 每次运行的最大步数。从你的追踪数据中选取数值:成功运行的 p95 值加上一定余量。对于大多数工具循环,该值为 15 到 30。达到上限的运行应明确报错,而不是静默返回已有结果。

3. 明确的停止条件。为模型提供 finish 或 report 工具,并在其被调用或 stop_reason 为 end_turn 时结束循环。同时检测停滞进展:连续两次以相同参数调用同一工具即为循环,运行应立即中止。

4. 基于 usage 的单次运行美元预算。每次响应都会报告输入、缓存和输出 token。乘以模型费率并累加,总额超限时立即中止。这是唯一以你真正关心的货币单位设定阈值的防护机制。

5. 供应商控制台中的每日账户上限。Anthropic 和 OpenAI 允许为工作区或项目设置支出限额并触发警报;Google Cloud budgets 支持警报并可配置为自动停止计费。这是为你尚未想到的漏洞准备的最后一道防线。

重试与退避策略的成本

SDK 客户端默认会对速率限制和服务端错误进行重试,通常为指数退避下的两到三次尝试。被拒绝的请求通常不计费,但在生成开始后超时的请求往往会计费,且应用层对单步的重试会重新发送整个上下文。

在参考循环的第 100 步,上下文为 4,500 + 99 × 1,800 = 182,700 个 token。Sonnet 5 未缓存时单次尝试成本为 182,700 × $2 = $0.37;三次尝试花费 $1.10 却毫无进展。若已缓存,每次尝试仅需约 $0.04。由此得出两条规则:保留 SDK 默认的重试次数,切勿自行包裹重试逻辑;如果必须从头重试失败的运行,应计入同一次运行的预算中,而非开启全新预算。

30 行代码实现 BudgetedRunner

这个Python运行器驱动一个Claude工具循环,并在达到美元上限或步骤上限时停止。同样的模式在OpenAI上通过responses.create和usage.input_tokens_details.cached_tokens工作。

from anthropic import Anthropic

PRICES = {"claude-sonnet-5": (2.0, 2.5, 0.2, 10.0)}  # $/1M: input, cache write, cache read, output

class BudgetedRunner:
    def __init__(self, model, system, tools, budget_usd, max_steps=25):
        self.client, self.model, self.system, self.tools = Anthropic(), model, system, tools
        self.budget, self.max_steps, self.spent = budget_usd, max_steps, 0.0

    def cost(self, u):
        i, w, r, o = PRICES[self.model]
        return (u.input_tokens * i + (u.cache_creation_input_tokens or 0) * w
                + (u.cache_read_input_tokens or 0) * r + u.output_tokens * o) / 1e6

    def run(self, messages, execute_tool):
        for step in range(1, self.max_steps + 1):
            resp = self.client.messages.create(model=self.model, max_tokens=1024,
                system=self.system, tools=self.tools, messages=messages)
            self.spent += self.cost(resp.usage)   # e.g. 24,300 in × $2 + 300 out × $10 = $0.052
            if self.spent > self.budget:
                raise RuntimeError(f"budget ${self.budget} exceeded at step {step}: ${self.spent:.3f}")
            messages.append({"role": "assistant", "content": resp.content})
            if resp.stop_reason != "tool_use":
                return resp, self.spent
            results = [{"type": "tool_result", "tool_use_id": b.id,
                        "content": execute_tool(b.name, b.input)}
                       for b in resp.content if b.type == "tool_use"]
            messages.append({"role": "user", "content": results})
        raise RuntimeError(f"step cap {self.max_steps} hit after ${self.spent:.3f}")

根据你的追踪设置budget_usd:中位数成功运行的三倍是一个合理的起点。对于Sonnet 5参考运行,大约是$1.20,200步循环会在第24步达到该预算,大约$73,而控制台尚未察觉。

如何在账单到来之前发出警报

一个预算阻止一次运行。警报告诉你运行已经开始需要它。

  • 记录每次运行的成本,而不是每次调用,包括模型、步骤数和停止原因
  • 为每次运行标记触发它的功能或客户,这样峰值就有归属
  • 对每次运行的p99成本以及达到步骤上限或预算的运行比例发出警报;两者同时上升意味着新的失败模式,而不是忙碌的一天
  • 每周与供应商的使用报告进行核对,因为低估token数量的运行器bug本身就是一个失控问题

如果你通过OpenRouter路由,每个密钥的信用额度给你第二个独立于供应商的上限;权衡在[OpenRouter vs 直接API](/compare/openrouter-vs-direct-api)中讨论。

最便宜但仍能完成此任务的模型,以及何时为旗舰版付费

护栏限制了损失;模型选择决定了斜率。对于定义良好的循环,DeepSeek V4.1 Flash($0.30/$1.20)将200步灾难变成$11的烦恼,Gemini 3.8 Flash($0.75/$3.75)变成$28。根据我们的经验,当任务清晰时,两者在结构化工具调用方面都可靠,而[Gemini代理API成本](/guides/gemini-agent-api-cost)文章涵盖了Gemini方面。

当任务模糊或循环较长时,为Claude Sonnet 5、GPT-5.4或旗舰模型付费,因为这些情况下廉价模型最容易偏离,而偏离正是上表所定价的。无论你选择什么,上述运行器不变;只有PRICES行不同。在[计算器](/calculator)中为你自己的轨迹定价,并查看[Claude代理API成本](/guides/claude-agent-api-cost)了解每个供应商的使用字段。

关键要点

  • →一个200步的循环需要36.7M输入token:Claude Sonnet 5上$74,GPT-5.4上$93,Opus 5和GPT-5.5上$185,Gemini 3.8 Flash上$28,DeepSeek V4.1 Flash上$11
  • →这大约是健康12步运行成本的190倍,而步骤数仅为17倍;成本与步骤数呈二次方关系
  • →五道护栏:每次调用的max_tokens、每次运行的最大步骤数、明确的停止条件、基于使用情况的每次运行美元预算,以及供应商控制台中的每日上限
  • →在第100步重试会重新发送约183K token:在Sonnet 5上每次尝试未缓存为$0.37,缓存后约为$0.04
  • →提示缓存将Sonnet 5上的200步灾难降至约$8.78,仍为健康运行的22倍
  • →记录每次运行的成本并按功能标记运行;p99的跳跃是你的第一个警告

编辑背景

这适合谁?

在生产环境中运行工具调用代理的开发者和平台团队,他们需要一个在运行出错时仍能生效的消费上限。

何时不使用此

一次性脚本和笔记本,由人工监控每一步;护栏仍然有用,但每次运行的预算则显得多余。

定价见解

同一个代理在Claude Sonnet 5上,12步花费$0.39,200步花费$74,因为每一步都会重新发送不断增长的上下文。

考虑替代方案

供应商端的工作区限制、OpenRouter每个密钥的信用额度限制以及更便宜的循环模型都能减少风险,但都无法替代每次运行的预算。

最终结论

在将代理交给用户之前,为每次运行设置一个美元上限。这只需要30行代码,却是$0.39运行和$74运行之间的区别。

常见问题

如何限制AI智能体的花费?

同时使用五种控制措施:每次调用的max_tokens、每次运行的最大步骤数、模型可以触发的明确停止条件、从每个响应的使用对象计算的每次运行美元预算,以及供应商控制台中的每日或每月上限。每次运行预算才是真正跟踪损害的那个,因为智能体成本随步骤数的平方增长。

失控的智能体循环需要多少成本?

一个200步的循环,起始上下文为4,500 token,每步增加1,800 token,大约消耗3670万输入token。按峰值费率,Claude Sonnet 5约$74,GPT-5.4约$93,Claude Opus 5或GPT-5.5约$185,Gemini 3.8 Flash约$28,DeepSeek V4.1 Flash约$11。同样代理的健康12步运行在Sonnet 5上约$0.39。

如何从API响应计算每次运行的成本?

每个响应都带有一个使用量对象。在 Anthropic 上,将 input_tokens、cache_creation_input_tokens、cache_read_input_tokens 和 output_tokens 乘以它们每百万的费率;在 OpenAI 上,使用 input_tokens、input_tokens_details.cached_tokens 和 output_tokens;在 Gemini 上,使用 usage_metadata。在循环中累加这些值,当总量超过你的上限时中止。

重试需要付费吗?

因速率限制错误而被拒绝的请求通常不计费,但模型开始生成后超时的请求通常会计费,并且应用程序级别的整个步骤重试会重新发送整个上下文。在参考循环的第100步,大约有183,000个token,在Claude Sonnet 5未缓存的情况下每次尝试大约$0.37。请谨慎设置SDK重试次数,切勿将其包裹在另一个重试循环中。

我可以在供应商控制台中设置硬性消费限制吗?

可以,但有区别。Anthropic 和 OpenAI 都允许你为每个工作区或项目设置带有警报阈值的消费限制,一旦达到硬性限制,请求就会失败。Google Cloud 预算默认发出警报,需要额外配置才能停止消费。将控制台上限视为最后一道防线,而不是第一道防线,因为它会停止所有运行,而不是正在出现异常的那一个。

提示缓存能保护我免受失控循环的影响吗?

它能缓解问题。当缓存读取约占列表价格的10%时,200步的Claude Sonnet 5循环从大约$74降至大约$8.78。这仍然是正常运行的22倍,因此缓存是一种成本优化,而不是护栏。无论如何都要保留步骤上限和美元预算。

Related

免费课程 · 无需注册

还在犹豫?先学习基础知识,再回来查看价格。

如果我们的计算器帮助您减少了隐藏的 AI 钱包泄露,感谢您的使用。您节省费用中的一小部分,正是我们每日更新定价指数的来源。

不确定哪个 AI 对你的使用场景最划算? 30 秒内找到答案——无需注册。

AI成本情报

停止为AI工具多付钱

加入OverpayingForAI列表,获取定价更新、更便宜的替代方案和实用的购买指导。

现已追踪50多种AI工具、模型、平台、订阅、编码工具和自动化产品。

我们仅使用您的邮箱发送OverpayingForAI更新。可随时退订。