按量计费说明

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_offsetend_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、租户或业务线查看用量和预算。
  • 先用小批量真实请求验证价格,再估算月度成本;不要用单一平均请求数替代实际用量。