简介:同一个AI Agent任务反复执行,token消耗可能相差数十倍,成本如同黑箱。本文系统定义Token消耗预测这一概念,解析上下文滚雪球机制为何让Agent成本难以预估,拆解预测系统的核心组成与滚动更新原理,并梳理典型应用场景与落地注意事项,帮助开发者与企业用户把Agent成本从黑箱变为可预算、可管控的工程指标。
先明确两个前置概念。
AI Agent(智能体):能够自主执行多步骤任务的AI系统。它接收一个目标——例如修复代码库中的某个缺陷,或完成一次多来源的深度调研——然后循环执行“调用大语言模型→使用工具→读取反馈→决定下一步”,直到任务完成。它不遵循固定的程序脚本,每一步具体怎么做,由模型在运行时自行判断。
Token:大语言模型处理文本的基本计量单位。模型读入的每一段上下文、生成的每一段回复,都折算成token并按量计费。
在此基础上,Token消耗预测可以定义为:在Agent执行任务的过程中,对其尚未发生的token消耗(含输入与输出两侧)进行估算,并随执行进度滚动更新的能力。它回答三个具体问题:
这个定义包含三个关键限定:其一,对象是多步自主任务,而不是单次模型调用;其二,估算的是尚未发生的消耗,而不是已经产生的用量;其三,输出是动态刷新的,而非一次性给出。
有研究实测显示,同一个Agent去修复同一个代码库里的同一个缺陷,不同次执行之间的token消耗可以相差约30倍:顺利时一万token左右收工,不顺时反复试错、消耗数十倍于此。原因在于Agent的自主性——缺陷定位的路径、尝试的修复方案数量、每轮验证的次数,都由模型即兴决定。同一个使用者下达同一个指令,两次执行的轨迹可以完全不同。
这种不确定性直接导致成本黑箱:任务开始前不知道要花多少钱;执行过程中不知道钱烧到了哪一步;任务结束后难以解释为什么这么贵。
Agent成本失控的结构性根源,在于上下文的累积机制。Agent每一步工具调用产生的结果——读到的文件内容、测试运行的日志、检索到的资料——都会被追加进对话上下文;而后续每一次调用大语言模型,输入里都要完整携带此前全部历史。也就是说,前面产生的每一段文字,后面每一步都要重新“读一遍”、重新计费一遍。
可以打个比方:这就像誊抄一份不断变长的文稿,规矩是每抄新的一行之前,必须把已经抄完的所有内容从头重读一遍。抄到第十行时重读尚可接受,抄到第五十行时,光是重读就占去了大部分时间——而这份文稿总共要抄多少行,在抄完之前无人知晓,全看“誊抄者”自己的临场判断。Agent面临的正是这种处境,且文稿的总长度(任务总步数)本身就是随机的。
输入侧的滚雪球还带来一个隐性放大效应:消耗的增长往往不是线性的,而是随步数加速——步数越多,每一步输入越长、单价越高;消耗越高,越可能触发更多的重试与验证。这解释了为什么“烧到几十倍”并非小概率事件。
在企业级使用中,成本管理至少包含四个动作,每一个都以预测为前提:
因此,Token消耗预测的价值可以概括为一句话:把不可见的调用成本,变成可预算、可监控、可决策的工程指标。
业界通行的实现思路中,面向Agent的消耗预测一般由以下模块协作:
整体流程可以概括为“记录轨迹→编码状态→估算剩余→滚动修正”四步:
第一步,积累历史执行数据。 用大量Agent任务的真实执行记录(任务描述、逐步轨迹、最终实际消耗)作为样本,让系统“见过”各类任务通常是怎么花钱的。
第二步,状态编码。 把“任务执行到第k步时的状态”转化为特征:当前上下文已有多长、历史各步消耗的分布、任务属于哪一类、已经重试了多少次等。
第三步,剩余消耗估算。 预测模型基于这些特征,估算“照此模式推进,还会发生多少步、每步大约多少token”。由于任务何时收敛由模型行为决定,估算结果天然带不确定度,因此以区间形式输出更稳妥。
第四步,滚动修正。 每新增一步真实执行,就把新事实注入预测。这类似导航软件的预计到达时间:出发前只能给出很宽的估计区间,行进过程中随着路线逐步确定,估计不断收敛、越来越准。
示意性伪代码如下(通用示例,不依赖任何具体框架):
budget = 任务预算上限used, trajectory = 0, []while not agent.task_finished():step = agent.run_one_step() # 一次模型调用+工具执行used += step.input_tokens + step.output_tokenstrajectory.append(step_summary(step))forecast = estimate_remaining(task, trajectory) # 滚动预测# forecast 通常形如 {lower, expected, upper}if used + forecast.upper > budget:alert_or_terminate() # 超预算告警/熔断report(used, forecast_history)
| 概念 | 回答的问题 | 作用时机 | 与消耗预测的关系 |
|---|---|---|---|
| 用量监控/账单 | 已经用了多少 | 事后 | 提供数据与校准依据,不回答未来 |
| Token计数 | 一段已有文本折多少token | 任意时刻 | 精确测量,仅针对已存在文本 |
| 单次调用成本估算 | 这一次调用花多少 | 调用时 | 是预测的基本构件,但不覆盖多步不确定性 |
| Agent任务规划 | 下一步做什么 | 执行中 | 路径决定消耗,两者互为输入 |
一句话区分:监控告诉你“花了多少”,计数告诉你“这段话值多少”,预测告诉你“这个任务还要花多少”。三者互补,不可互相替代。
Token消耗预测,是面向多步自主Agent的一种成本估算能力:它以任务特征与执行轨迹为输入,对尚未发生的token消耗做滚动式的区间估算,并对接预算与告警机制。它之所以必要,是因为Agent的自主决策与上下文滚雪球让同任务消耗可以相差数十倍,成本在缺乏预测时完全是黑箱;它之所以可行,是因为轨迹中蕴含了任务的难度模式,随着执行推进,预测可以不断收敛。
它不是精确计量工具,也不能替代监控与账单;它是让“烧钱”这件事在事前可见、事中可控的工程前提。对于要把Agent推向生产环境的团队而言,预测、监控、预算熔断与上下文管理,共同构成成本可控性的完整拼图。