你可能是这样卡住的:代码写完了,想估算一下上线后一个月大概花多少,结果打开官方价目表只看到一串单价,不知道输入输出怎么分、缓存算哪一项、图片和长文档又怎么计。这篇不给你写死的数字,而是把 Claude API 的计费结构拆成几个能自己算的模块,并告诉你该去站内哪一页核对当时的单价。
你可能是这样卡住的:代码写完了,想估算上线后一个月大概花多少,结果打开官方价目表只看到一串单价,不知道输入输出怎么分、缓存算哪一项、图片和长文档又怎么计。这篇不给你写死的数字,而是把 Claude API 的计费结构拆成几个能自己算的模块,并告诉你该去站内哪一页核对当时的单价。
核心思路只有一句:先把「按什么单位收」搞清楚,再把你的用量拆成几个能分别估算的量,最后去站内价格页按当时的数字乘一遍。下面按这个顺序走,每一步都给判断标准和可执行动作。
先搞清它按什么收:不是按次,是按量
Claude 官方 API 走的是按量计费,计费单位是 token,一次请求的输入和输出分开计价。这意味着「调一次多少钱」这个问法本身没法直接回答,你只能问「这次请求消耗了多少输入 token 和多少输出 token」。想按次估算,得先知道你每次调用的平均 token 量,否则单价再准也乘不出结果。核对单价请到 价格追踪(/price-watch) 看当时的数字,按模型逐行对。
| 你要问的问题 | 对应的量 | 去哪里核对 |
|---|---|---|
| 模型单价是多少 | 输入单价、输出单价 | 到 价格追踪(/price-watch) 按模型逐行看 |
| 我这次请求花了多少 | 本次输入 token、输出 token | 你自己在代码里记录 usage 字段 |
| 一个月大概多少 | 日均调用次数 × 单次 token 量 | 先手算,再用站内计算器复核 |
什么情况下这条不适用:如果你的调用是流式的,输出 token 量在请求结束时才确定,那就不能用请求发起前的预估来算,必须等响应结束后读 usage 字段回填。做成本监控时要按「实际用量」而不是「预估用量」,否则偏差会随着调用量放大。
- 先跑一条真实请求,把 usage 里的输入输出 token 打印出来,这是后面所有估算的基准
- 把模型固定下来,再看单价,别拿 A 模型的单价估 B 模型的用量
- 单价本身不写死在文档里,去 价格追踪(/price-watch) 核对当时的口径
输入和输出为什么要分开看
输入是提示词、上下文、历史对话、图片折算后的量,输出是模型逐字生成的部分。两者单价通常不是一个数,输出一般更贵,所以让模型少说废话本身就是省钱动作。判断你该往哪边使劲,先看自己请求的形态:输入长输出短,优化重心在压缩上下文;输入短输出长,优化重心在限制生成长度和格式。
- 输入侧
- 系统提示、上下文、历史对话、文档、图片折算后都算进来
- 输出侧
- 模型生成的内容,包含它啰嗦出来的那部分
- 优化方向
- 输入靠压缩和缓存,输出靠约束长度和格式
判断适用边界:短输入长输出的任务(写代码、写长文)成本重心在输出;长文档问答重心在输入。如果你两者都长,那就是最贵的一类调用,优先考虑换模型或拆分任务。别在不看请求形态的情况下笼统说「省输出」,有可能你的账单大头其实在输入。
- 把一条请求的输入和输出 token 分别记下来,看哪个占大头
- 占大头的那一侧才是优化目标,另一侧微调收益有限
- 输出侧可以用「只返回 JSON、不要解释」这类约束直接压下来
- 输入侧可以用摘要、检索片段替换整篇文档来压
缓存命中和批量通道会改变单价
提示缓存命中时,重复的那段前缀按另一种口径计费,跟首次写入不是一回事。批量提交通常有单独的折扣口径,代价是返回不是实时的,适合离线跑数据。这两条都是「换计费口径」而不是「换模型」,用不用取决于你的任务形态。
| 机制 | 适合什么 | 什么情况下不适用 |
|---|---|---|
| 提示缓存 | 固定系统提示、固定长前缀反复复用 | 每次内容都不同、前缀几乎不复用 |
| 批量通道 | 离线打标、批量翻译、夜间跑数据 | 要实时返回、用户等着看结果 |
什么情况下不适用:请求内容每次都不同、前缀几乎不复用的场景,缓存基本命中不了,别按命中价估算。批量通道也一样,如果你的任务对延迟敏感,省下的那点折扣换不来体验损失。评估时先看你的复用率,再看能不能接受非实时。
- 统计前缀复用率把你最近一批请求的提示词开头拿出来比对,看有多少条共享同一段固定前缀,复用率高才值得开缓存
- 区分写入和命中首次写入和后续命中是两种口径,估算时要分别乘各自的量,不能一个价乘到底
- 给离线任务单列通道把不要求实时返回的任务挑出来走批量通道,实时任务仍走普通接口
- 回到站内核对具体折扣口径到 价格追踪(/price-watch) 看当时的说明,别用记得的数字
图片、长文档、工具调用怎么算量
图片按分辨率和尺寸折算成 token,不是按张收,同一张图不同清晰度消耗可能差出一截。长文档先被切成 token 再进上下文,几万字的材料会显著推高输入侧。工具调用是把模型的调用意图和返回结果各算一遍,链路越长累计越多。这三类是最容易被漏算的量,估算时别只算纯文本。
- 图片:先量尺寸和清晰度,再折算,别按张数估
- 长文档:按字数先粗算 token,再决定是整篇塞还是切片段
- 工具调用:把一轮里几次调用往返都算上,链路越长越贵
- 混合任务:图片加长文档加工具调用叠在一起,是最容易超预算的组合
什么情况下不适用:如果你的业务只处理短文本、不涉及图片和工具,这一节可以直接跳过,把精力放在前面输入输出的拆分上。判断标准很简单——看你的请求体里有没有 image 字段或工具定义,没有就不用管。
排查顺序建议
- 先看请求体构成确认这一条请求里有没有图片、超长文档、工具定义,三者都没有就按纯文本算
- 有图片先估折算量按尺寸和清晰度估一个 token 区间,而不是一个精确点,留出浮动空间
- 有长文档先算切分方案整篇塞和切片段塞的 token 量差很多,先定方案再算量
- 有工具调用就把往返算全一轮对话里模型发起几次调用、几次返回,都要计入输入侧
从用量倒推花费:一套可执行的估算顺序
前面讲的都是「单价怎么理解」,这一节讲「你自己的量怎么算」。顺序是从小到大:先一条请求,再一天,再一个月。每一步都要留可验证的痕迹,否则最后算出来的数只是拍脑袋。
- 跑通一条真实请求用一条有代表性的请求跑一次,记录输入输出 token 各是多少,这是基准点
- 估一天有多少次调用按你的业务量估,线上有日志就直接从日志统计,别靠感觉
- 乘出月度总量单次 token 量 × 日均调用 × 一个月天数,输入和输出分别算
- 拆固定前缀和变化部分固定前缀算缓存口径,变化部分按正常输入算,别一锅端
- 用站内工具复核到 工具目录(/tools/speed-test) 找成本计算器类工具,把手算结果输进去对一遍
判断这套流程什么时候会失真:当你的业务量波动很大(比如有明显高峰低谷),用平均值乘出来的月度数字只能当参考,真正要控成本还是靠预算告警和实时用量看板。另外,如果模型调用成功率不高、有大量重试,实际消耗会比成功请求算出来的多,这部分也要留余量。
| 估算环节 | 数据来源 | 容易出错的地方 |
|---|---|---|
| 单次 token 量 | 代码里打印的 usage | 拿非典型请求当基准 |
| 日均调用次数 | 业务日志或运营预估 | 忽略重试和失败请求 |
| 输入输出拆分 | 同一条请求的 usage | 把两者混在一起乘同一个价 |
这些钱不在 API 账单里
订阅制客户端(比如桌面端或命令行工具的包月方案)跟 API 按量计费是两套体系,别混着算。网络代理、服务器、日志存储属于你自己的基础设施开销,官方账单不会体现。汇率与结算手续费取决于你的支付渠道,去账单核对页面看实际扣款。把这些分清楚,你才能知道「claude api 多少钱」这个问题里,哪些是 API 单价能回答的,哪些不能。
- 订阅制客户端:包月或按席位,跟 API 按量是两套账
- 代理与中转:你为网络通道付的钱,通常按流量或次数另算
- 服务器与存储:跑在你自己的机器上,官方账单里看不到
- 结算与汇率:取决于支付渠道,去账单页核对实际扣款
什么情况下需要额外关注中转:如果你用的是第三方中转而不是官方直连,价格口径和稳定性都要单独核。判断标准是看你的 base_url 指向哪里,指向中转就按中转的规则算,到 站点导航(/sites) 看当时可用的中转选项和说明。
上线后怎么把账单控住
估算是事前的事,控制是事后的事。上线后最常见的失控不是单价涨了,而是调用量悄悄翻倍:某个循环没退干净、某次重试风暴、某个用户把长文档反复塞进来。控账单本质上是控调用行为,不是控单价。
- 给项目单独开一把 Key,用量日志按任务打标签,能按项目分摊成本
- 设预算告警,把跑飞限制在一晚以内,别等月底才发现翻了几倍
- 定期复盘:哪些调用可以换更便宜的模型、哪些提示词可以压缩、哪些请求可以走缓存
- 对重试做上限,失败重试本身也是按量计费的消耗
判断标准:如果你连续两周都没看过用量看板,那大概率已经处于失控边缘。判断方法很简单,去 排行榜(/rankings) 和 价格追踪(/price-watch) 交叉看你用的那档模型有没有更划算的替代,同时把自己的用量日志按任务类型拉一张表,看看有没有哪一类任务吃掉了大头。优化的优先级永远是最贵的那一类,而不是平均用力。
去核对当时的单价具体单价、折扣口径和模型档位都会变,这篇只讲结构。要算你自己的账,到站内价格页按模型逐行核对当时的数字,再用工具目录里的计算器复核一遍手算结果。→常见问题
Claude API 是包月还是按量付费?
官方 API 走的是按量计费,用多少算多少,没有固定月费。你充进去的是额度,按每次调用的输入和输出 token 扣减。包月那种是订阅制客户端产品的逻辑,和 API 是两条线,别混着算。具体单价去站内官方 API 价格页看当时的数字。
为什么我估算的花费和实际账单差很多?
最常见的原因是漏算了三项:重复发送的上下文、缓存写入与命中的不同口径、以及重试带来的重复调用。另外输出侧常常比预想的长,模型爱展开就会超。建议先跑一条真实请求记录实际 token,再乘调用次数,别凭感觉估。
同一段提示词,换个模型价格会差多少?
差多少取决于你换的是哪两档。不同模型单价档位不同,同一段文字折算出的 token 数也可能有细微差异,所以不能只比单价,要按真实任务跑一遍再比。站内官方 API 价格页有按模型的逐行对照,拿你要用的那条任务去比最准。
缓存到底能省多少,值得为它改代码吗?
值不值看前缀复用率。如果你的系统提示词、知识片段、示例每次请求都一样,只有用户问题在变,那命中率会很高,省下来的比例相当可观。反过来,如果每次请求内容都全新,改了也命中不了。先统计一周请求里有多少比例共享前缀,再决定要不要改。
图片和文档也要单独算钱吗?
不用单独算,它们是折算成 token 后并进输入侧的。图片按尺寸和分辨率折算,长文档按内容切分后折算,所以成本取决于清晰度和篇幅,而不是张数。想控制这块开销,可以在不影响识别的前提下降低图片精度、压缩文档长度。