按量计费说明
Modelink AI 大模型推理服务按模型和能力的实际用量计费。不要把所有请求都简单理解为“请求次数 × 单价”:文本和多模态理解通常按 Token 计费,图片生成可能包含图片输出 Token,视频生成通常还会受到生成时长、分辨率、帧率或质量档位影响。最终费用以模型广场、价格页和请求返回的用量字段为准。
本文中的示例用于说明对账方法,示例单价不是 Modelink 的统一价格。不同模型、协议、区域和供应商资源池可能有不同计费项。
先判断计费单位
接入一个模型前,先确认它属于哪一种计费方式:
| 能力类型 | 常见计费量 | 实际会影响费用的因素 |
|---|---|---|
| 文本对话、代码、推理 | 输入 Token、输出 Token,部分模型还会单列思考 Token | 上下文历史长度、输出上限、思考级别、工具定义和工具结果 |
| 图片理解 | 文本输入 Token、图片输入 Token、输出 Token | 图片数量、尺寸或 detail、图片压缩方式、提示词和输出长度 |
| 视频理解 | 文本输入 Token、视频输入 Token、输出 Token | 视频时长、抽帧 FPS、分辨率、截取区间、提示词和输出长度 |
| 音频理解 | 音频输入对应的模型计费量、文本输入/输出 Token | 音频时长、采样或转写设置、说话人和翻译任务、输出长度 |
| 图片生成 | 文本输入、图片输入和图片输出对应的模型计费量 | 输出尺寸、质量、数量、参考图和模型版本 |
| 视频生成 | 模型规定的生成计费项,常见为时长、分辨率、质量或任务档位 | 生成时长、输出尺寸、帧率、音频、参考素材和重试次数 |
这里的“Token”不只指用户输入的文字。图片、视频、音频和文件会先由目标模型转换成它能处理的计费表示,因此同一个文件在不同模型上的计费量可能不同。视频理解还可能根据 FPS 和分辨率产生明显不同的输入 Token;只截取需要分析的时间段,通常比上传整段视频更容易控制成本。
文本和多模态理解
对按 Token 计费的模型,可以按计费项分别核算:
请求费用 = 输入费用 + 输出费用 + 思考费用 + 缓存写入费用 + 缓存读取费用
不是每个模型都会返回或使用全部计费项。没有思考或缓存时,对应项就是零;价格表没有单独列出的项不要自行重复计算。
某计费项费用 = 该计费项数量 / 计价单位 × 该项单价
例如,某模型的输入单价为 1 元 / 百万 Token,输出单价为 4 元 / 百万 Token。一次请求返回 12,000 个输入 Token 和 2,000 个输出 Token,则:
- 输入费用:
12,000 / 1,000,000 × 1 = 0.012 元 - 输出费用:
2,000 / 1,000,000 × 4 = 0.008 元 - 本次推理费用:
0.020 元
如果返回中另有思考 Token、缓存写入 Token 或缓存读取 Token,应使用价格表中对应的单价继续相加。max_tokens 或类似参数是上限,不等于一定会产生这么多输出 Token;实际生成多少,应以响应中的 usage 为准。
图片、视频和音频
图片理解
图片会参与模型输入计费。图片数量、尺寸、清晰度档位和模型实现都会改变输入计费量;同一张图片换一个模型,不应继续沿用原来的 Token 估算。图片理解还会叠加问题文本和模型输出的费用。
图片生成也不只是“调用一次”的固定价格。部分模型会把图片输出折算为输出 Token,尺寸和质量越高,输出计费量可能越大;部分模型会直接按图片质量和尺寸给出价格。应以该模型价格项为准,不要用文本模型的 Token 单价估算图片生成。
视频理解
视频理解的成本通常与送入模型的内容量有关。FPS 从 1 调到 5、分析区间从 30 秒扩大到 5 分钟、或提高输入分辨率,都可能显著增加视频输入 Token。需要定位某个时间段时,优先使用 start_offset 和 end_offset;只需要低精度场景信息时,先选择较低 detail 或较低 FPS。
视频生成通常是异步任务,计费维度不一定等于输入输出 Token。生成 5 秒和 10 秒视频、低清和高清版本、关闭和开启音频,可能对应不同价格。提交任务后要同时记录任务 ID、模型、时长、尺寸、质量和终态,按照模型价格页核对最终任务费用。
音频输入、转写、翻译和带音频的视频生成也不能直接套用文本模型价格。音频时长、是否包含翻译或说话人识别,以及模型是否把音频折算为 Token,都应以对应模型的计费项为准。
缓存如何影响费用
缓存命中不是免费,而是把一部分输入从普通输入计费项转移到缓存读取计费项。常见的缓存成本分为:
| 阶段 | 含义 | 对账时关注 |
|---|---|---|
| 缓存写入 | 第一次建立或更新可复用上下文 | 可能按标准输入价格的更高倍率计费,具体看模型 |
| 缓存读取 | 后续请求复用已缓存上下文 | 通常比普通输入便宜,但仍然计费 |
| 未命中输入 | 没有被缓存覆盖的本次输入 | 按普通输入单价计费 |
以支持 Claude Prompt Caching 的模型为例,当前页面记录的典型口径是:缓存写入约为标准价格的 125%,缓存读取约为标准价格的 10%,默认有效期约 5 分钟,且缓存内容通常需要至少 1024 Token。这个比例只适用于相应模型和缓存实现,不能推广到所有模型。
缓存前缀必须稳定。工具定义、系统提示词、长文档的顺序或内容发生变化,或者把时间戳、用户问题、实时数据放进前缀,都可能导致部分或全部未命中。建议在响应里记录:
Chat Completions: usage.prompt_tokens_details.cached_tokens
Responses: usage.input_tokens_details.cached_tokens
Anthropic: cache_creation_input_tokens、cache_read_input_tokens计算缓存收益时,不要只看 cached_tokens 是否大于 0,还要比较:缓存写入费用 + 缓存读取费用 + 未命中输入费用 与“全部按普通输入计费”的差额。只调用一次的长文档,缓存写入成本可能抵消收益;短时间内反复处理同一份长上下文,才更容易体现缓存价值。
如何查看用量和费用?
对账时应分别查看 API 响应、控制台用量明细和财务账单。三者的用途不同,更新时间也可能不同:
| 查询内容 | 使用场景 |
|---|---|
响应中的 usage | 对账单次文本或多模态请求的输入、输出和缓存字段 |
| 请求日志 | 核对请求 ID、模型、协议、状态、耗时、任务 ID 和错误原因 |
| 用量统计 | 按模型、API Key 或时间段观察 Token 和请求趋势 |
| 账单或消费明细 | 以财务口径核对结算金额,通常可能晚于 API 响应 |
不要只看 HTTP 200:响应成功不一定意味着图片或视频已经生成,也不能只按请求数估算费用。对异常请求,使用响应中的用量字段、控制台用量明细、异步任务状态和账单明细进行核对。
重试、失败和异步任务
- 网络超时后重试前,先判断服务端是否已经接受请求。没有幂等控制的生成请求可能被执行多次,从而产生多次费用。
- 文本请求要区分客户端超时、网关错误、模型拒绝和模型已返回但客户端丢失响应;最终以请求日志和账单明细核对。
- 图片和视频生成通常先返回任务 ID,再异步进入排队、运行和终态。提交成功不等于已经生成成功,也不代表可以忽略终态费用;需要通过任务 ID 查询终态并核对费用。
- 被参数校验、鉴权或限流拦截的请求通常不会产生模型推理用量;已经进入模型推理、即使业务没有采用返回结果,仍可能产生费用。具体边界以错误码、请求日志和账单明细为准。
- Webhook 投递失败属于回调链路问题,不能直接推断原模型任务是否失败或是否需要重新生成;先查询原任务状态,再决定是否重试。
余额不足会发生什么?
当账户余额或套餐额度不足时,新的请求可能被拒绝,正在运行的异步任务也应通过任务状态和账单明细确认。建议按模型和业务线设置预算,给批量图片/视频任务设置队列上限,在活动前预留余额,并为余额、异常增量和缓存命中率配置告警。
上线前的核对清单
- 确认目标模型的计费单位,而不是只看模型名称。
- 文本和多模态请求用响应
usage对账;图片、视频、音频同时记录媒体参数。 - 将稳定长上下文放在缓存前缀,把动态问题和实时数据放在后面。
- 为重试设置幂等键或业务去重,尤其是图片和视频生成。
- 异步任务按任务 ID查询终态,并按最终状态核对费用。
- 按模型、API Key、租户或业务线查看用量和预算。
- 先用小批量真实请求验证价格,再估算月度成本;不要用单一平均请求数替代实际用量。