一家类似 Shopify 规模的商户助手,每天处理 1000 万次对话,若未经优化每月需花费 210 万美元;但若经过优化,这一数字可压低至 45 万美元。这 78% 的差距并非源于算法突破,而是归功于缓存、路由以及一些工程规范——而这些往往是大多数团队在收到账单前才会忽略的细节。
AI Agent 绝非只是多绕了几道弯的聊天机器人。单一的用户请求会触发规划、工具选择、执行、验证,乃至反复的重试循环——其 Token 消耗量大约是直接交互式聊天的 5 倍。如果一个运行 10 个循环的 ReAct 机制,其 Token 消耗甚至是单次直通的 50 倍。在顶尖模型的定价面前,这种数学计算会迅速变成巨大的负债。
本文将深入探讨 Agent 成本产生的底层机制,并介绍那些(附带数据验证)能真正产生实效的具体优化手段。
为何 Agent 成本不同于普通聊天机器人
首先需要理解的是输出 Token 的溢价问题。在主流供应商中,输出 Token 的单价通常是输入 Token 的 3 到 8 倍,这是因为生成过程是序列化的,而输入处理则是并行的。对于那些侧重推理的模型,这一比例甚至能达到 8:1。当你的 Agent 生成冗长的工具调用响应、详尽的推理轨迹或长篇总结时,你都在以溢价付费。
上下文长度则进一步加剧了这一问题。受注意力机制计算二次方复杂度的影响,处理 128K Token 上下文的成本大约是处理 8K 上下文的 64 倍。Agent 系统天生就会累积上下文:系统提示词、工具定义、对话历史、检索片段以及工具响应。每一轮对话,上下文都在增长。许多团队在预演阶段会痛切地意识到这一点——原本在简短测试中单次任务仅需 0.05 美元的 Agent,一旦面对真实的文档库,成本可能会飙升至 1.50 美元。
最便宜与最昂贵模型之间的价差如今已达 60 倍。例如,Gemini Flash-Lite 的输入/输出价格约为每百万 Token 0.075/0.30 美元,而顶尖推理模型则高达 15/60 美元。这种价差既是机遇,但也仅限于你有策略地进行路由时。
Prompt 缓存:唾手可得的收益
Prompt 缓存的工作原理是复用先前请求中计算出的键值注意力张量,前提是新请求与旧请求拥有相同的前缀。Anthropic 为缓存的输入 Token 提供了 90% 的折扣(0.30 美元/M vs 3.00 美元/M),Google 提供 75% 的折扣,而 OpenAI 则会对符合条件的请求自动应用 50% 的折扣。
对于 Agent 系统而言,其中的启示意义重大:你必须精心设计 Prompt 结构,确保静态内容置于首位。系统提示、工具定义、少样本示例、策略文档——所有这些都应构成稳定的前缀。而动态内容(即实际的用户消息、本轮检索的上下文)则应置于末尾。这并非审美问题,而是直接决定了缓存是否生效。
在实践中,Claude Code 实现了 92% 的缓存命中率,从而带来了 81% 的成本削减。固定的 10,000 Token 系统提示在首次请求后几乎不再产生费用。某客户支持应用将其产品目录从动态插入转为缓存前缀,在未改变输出质量的情况下,每月节省了 12,000 美元的 API 账单。
除了降低成本,缓存还能减少延迟。当长前缀激活缓存时,平均响应延迟可从 800 毫秒降至 350 毫秒,因为模型跳过了对稳定部分的注意力矩阵重算。
这方面的工程开销极小:缓存窗口的 TTL(生存时间)从 5 分钟到 1 小时不等。对于服务于重复用户会话的 Agent,热缓存几乎随时可用。对于批处理流水线,则应构建作业,确保同一批次内的请求共享前缀。
模型路由与级联:将成本与复杂度匹配
并非所有查询都需要动用顶尖模型。关键在于如何辨别——答案取决于三个维度:推理复杂度、质量敏感度以及上下文长度。
在典型的生产级 Agent 工作负载中,分布大致如下:
- 60% 的任务直截了当:提取、分类、格式化、模板化回复。这些在价格低于 1 美元/M 的模型上即可流畅运行。
- 25% 需要中等程度推理:多跳问答、代码生成、结构化分析。中端模型(0.80-4 美元/M)足以应对。
- 12% 涉及真正的复杂性:模棱两可的指令、长周期的规划、跨异构源的综合。此时,高端模型物有所值。
- 3% 需要顶尖推理能力: Novel problems、高风险决策、突发行为。
实施良好的路由系统,在典型的 Agent 部署中可降低 30-60% 的成本,顶级实现甚至能达到 87%。
对于 Agent 系统,一种实用的模式是将编排与执行分离。在规划层使用昂贵的模型——因为它只读取相对较短的任务描述并做出路由决策,所以其 Token 消耗是可控的。而在执行步骤中使用廉价模型:摘要、提取、格式转换、检索排序。由 Claude Haiku 执行工具调用,而由 Sonnet 或 Opus 规划整体策略,这是一种常见且高效的分工。
模型级联将这一理念更进一步:每个请求均从最便宜的层级开始,依据标准(置信度、格式有效性、基于检索源的事实核查)对响应打分,若分数低于阈值则升级。级联带来的额外延迟通常是值得的——大多数请求在第一层级即完成,升级仅针对少数困难案例。
基于置信度的路由需要一定的校准。如果你自建系统,Logprob 熵是开源模型可用的信号。对于专有 API,你需要一个代理评估器(通常是一个更小、更快的模型,用于检查首次响应是否达标)。代理评估器的额外成本通常仅占路由节省成本的不到 5%。
上下文压缩:精简输入内容
上下文中的每一个 Token 都有直接成本。上下文压缩就是将上下文剥离至任务所需的最低限度。
滚动摘要 是基准技术。与其传递完整的对话历史,不如每隔 N 轮(通常是 5-10 轮)进行一次摘要。摘要向前传递,完整记录则归档。这使得上下文增长随摘要频率呈线性,而非随轮次呈线性。权衡在于早期轮次的细枝末节将不可用——这对大多数用例可以接受,但对于需要记住每个决策的代码审查 Agent 则不可。
工具输出遮蔽 常被忽视。当 Agent 调用网页抓取器、API 或数据库查询时,原始响应通常包含标题、元数据以及与当前任务无关的字段。在插入上下文前剥离这些内容,可将工具输出的 Token 量减少 60-80%。应为每种工具类型编写后处理器,仅提取模型真正需要的字段。
习得式压缩 工具如 LLMLingua,利用较小的模型来识别并移除低信息量的 Token,从而压缩 Prompt。据报道,客服提示从 800 Token 减少到 40 Token(缩减 95%)且能保持可接受的准确性。唯一的缺点是:压缩本身需要调用 LLM,增加了延迟和 Token 成本。只有当压缩后的 Prompt 被大量请求复用,或压缩器的成本远低于主模型成本时,这笔账才算得过来。
检索相关性过滤 则直截了当:不要传递所有检索到的片段,只传递那些余弦相似度高于阈值的片段。将此阈值从 0.7 提高到 0.8,通常能削减 40-60% 的检索 Token,同时还能减少那些本会稀释模型注意力的噪音。
语义缓存:彻底消除调用
语义缓存通过输入的 Embedding 对 LLM 的响应进行索引存储。当新查询到达时,系统会将其 Embedding 与缓存的查询进行比较——若相似度超过阈值,则直接返回缓存响应,无需调用 API。
在典型的生产工作负载中,约有 31% 的 LLM 查询具有足够高的语义相似度,可从中受益。缓存命中在毫秒级内返回,API 费用则为零。对于支持聊天机器人、FAQ 系统以及查询分布呈集群状的应用,语义缓存可 outright 消除 20-40% 的 API 调用。
权衡在于对新鲜度的敏感性。对于答案频繁变化的应用,陈旧数据是一种风险。应根据内容领域的更替速度配置 TTL。对于静态知识库,激进的 TTL 是合适的;而对于实时数据查询,则应完全禁用针对此类查询的语义缓存。
硬性上限绝非可有可无
最廉价的优化手段是防止失控循环。一起有据可查的生产事故是:一个 Agent 在一个周末针对损坏的数据源发起了 847,000 次 API 调用,在账户被暂停前累计产生了 3,847 美元的费用。另一起则是:一个 Agent 在五分钟内调用抓取工具 400 次,因为工具返回“可能有更多结果”——而被 Agent 误解为继续抓取的邀请。
每个 Agent 在部署前都必须设定三个硬性上限:
- 单任务最大迭代次数。 设定为预期平均值的 2-3 倍。大多数 Agent 框架(如 LangGraph, AutoGen, CrewAI)都将此作为一级配置暴露出来。
- 单任务最大 Token 花费。 设定为预演阶段观察到的 P95 花费的 3 倍。将其实现为中间件,在每次模型调用前检查累积成本。
- 最大墙钟时间。 用于捕获那些通过反复进行快速、廉价调用来规避 Token 预算的无限循环。
模棱两可的工具反馈是导致失控循环的最常见原因。如果一个工具能返回可能被解读为“继续”的信号,Agent 就会一直走下去。务必在工具输出模式中明确约定:包含一个 is_complete 布尔值或 next_action_required 字段,而不是依赖模型去推断终止。
FinOps:上线前必备的监控手段
成本的可视化是闭环的关键。没有它,优化只是盲猜,异常则是惊吓。
最小可行的监控层应追踪:
- 单次 Trace 成本。 每次 Agent 运行都应将其总成本(输入 Token × 价格 + 输出 Token × 价格,按模型层级细分)发送至可观测性系统。
- 缓存命中率。 若此数值低于基线,说明你的 Prompt 结构或请求模式发生了变化。
- 输出 Token 比率。 输出 Token / (输入 + 输出) Token。该比率上升通常意味着 Agent 过于啰嗦——通常只需在系统提示中添加“简洁回复”即可修复(这通常能减少 15-25% 的输出 Token)。
- 单次完成步数。 步数增加要么意味着任务变难,要么意味着 Agent 陷入困境。无论哪种,都值得调查。
Langfuse、Helicone 和 Portkey 等工具提供了 API 网关级的单次请求成本追踪和预算控制。对于异常检测,建议设置相对于滚动基准线 2σ 偏差的支出警报——如果你关注此信号,大多数成本事故在几分钟内即可被检测到。
同一个 Agent 在未优化与良好优化之间的部署成本差异,可能高达 30 到 200 倍。这是大多数 AI 团队目前能获得的最高 ROI 的工程工作。
实战优先级排序
如果你从零开始,请按以下顺序应用这些技术,达到成本目标即可止步:
- Prompt 缓存。 若框架支持,无需修改代码。将静态内容移至前缀。立竿见影。
- 硬性限制。 防止发生使一切优化都失去意义的“黑天鹅”事件。
- 输出 Token 控制。 在系统提示中加入“简洁回复”。监控输出 Token 比率,看着它下降。
- 工具输出遮蔽。 为高频率使用的工具编写后处理器。
- 模型路由。 按复杂度分类任务并路由至相应层级。从简单的基于规则的分类器开始;若量级证明划算,再升级为学习型路由器。
- 上下文压缩。 为长时会话实施滚动摘要。
- 语义缓存。 若查询分布具有足够的聚类特性,再添加此项。
默认状态下 Agentic 系统的成本与精心工程化后的成本之间,差距并非微不足道。这是决定项目能顺利上线,还是在预算审核时被砍掉的命门。