Grok API一次请求花多少钱?cost_in_usd_ticks读取、精确求和与流式核对
使用usage中的实际计费ticks核对单次与会话费用,以整数和Decimal避免提前四舍五入;…
文章目录
应用按Token单价自己估算Grok费用,可能忽略缓存折扣、服务端工具或流式记录口径。官方API在usage提供cost_in_usd_ticks,表示该次请求实际计费。本文用虚构响应核对读取与汇总,不调用付费API、不发布固定套餐报价,也不把消费记录当钱包余额。

第一步:确认读取的是哪次请求
官方说明Chat Completions、Responses及图片、视频生成响应都有相应usage成本字段。它是每次调用费用,不自动累计整个多轮会话。保存时关联应用任务编号、上游响应或请求标识和状态,避免同一次返回被多个日志消费者重复入账。
第三方代理或SDK可能不透传原字段,文档也指出当前Vercel AI SDK的相关元数据不暴露此值。缺字段应按未知处理并检查上游响应,不能因为界面只展示Token就推断费用为零。不要为读取成本输出真实密钥或完整敏感提示。
第二步:使用正确单位转换
一美元对应一百亿ticks,即10的10次方。保存原始整数,汇总后再转换显示,比每轮先截成几位小数更可靠。金额展示与内部计量分开:界面显示0.00不意味着真实成本没有发生,可能只是精度不够。
from decimal import Decimal
TICKS_PER_USD = Decimal(10_000_000_000)
def read_cost_usd(payload):
ticks = payload.get("usage", {}).get("cost_in_usd_ticks")
if type(ticks) is not int or ticks < 0:
raise ValueError("Cost missing or invalid; do not assume zero")
return Decimal(ticks) / TICKS_PER_USD
# 仅为本地计量练习,不代表真实请求账单
sample = {"usage":{"cost_in_usd_ticks":400_000_000}}
assert read_cost_usd(sample) == Decimal("0.04")
示例只验证单位转换,不表示任何模型或图片现在固定收0.04美元。真实金额来自每次实际响应,价格、参数与工具使用都会影响它。不要把文档中的演示数字写进自己的价格表或促销广告。
第三步:按唯一记录累计多轮费用
records = {
"demo-request-a": 100_000_000,
"demo-request-b": 250_000_000,
}
total_ticks = sum(records.values())
total_usd = Decimal(total_ticks) / TICKS_PER_USD
assert total_usd == Decimal("0.035")
print(total_usd)
这里的字典用来说明唯一记录求和,不是完整生产账本。真实应用应保证并发写入幂等,并区分重试是否创建了另一请求。账本不能只覆盖最终成功回答,失败或中断时没有完整用量的请求也要保留未知状态,后续按实际可取得记录核对。
第四步:正确处理流式与工具费用
使用OpenAI兼容SDK或REST的Chat Completions流式请求时,官方要求stream_options.include_usage为true,成本在最终用量块出现,choices可能为空。读取前先检查usage与choices,别直接访问choices[0]导致最后成本块解析失败。
xAI SDK各块可带运行累计值,最后块反映该请求最终费用,不能把每块累计数相加。服务端网页搜索、X搜索和代码执行等内部工具费用已包含在这一请求的最终成本,不再把工具估价重复加一遍。自有外部服务费用则仍按各自系统统计。
第五步:区分计费、预算与余额
cost_in_usd_ticks反映已发生费用,不是执行前预算硬上限,也不是账户余额。发现异常时回查模型、端点、参数、重试与工具次数,不把短回答简单等同于低费用。长上下文即使只输出一句话,也可能有输入与推理消耗。
保留原始ticks与必要标识,展示时再按明确规则舍入。完成标准是每请求不漏不重、流式不重复累加、缺失不计零,且汇总能回到原始记录。本文不代替财务发票或账户账单核对,也不承诺自动推算尚未发生请求的最终金额。
真正返回零ticks与没有返回成本是两种状态,账本应分别表示。按统一时区记录请求时间,跨日汇总时保留原始计量;ticks换算的是美元,不自动代表人民币金额、税费或账户余额。流式断开没拿到最终用量时,先记录未知成本和请求标识,不把中间值标成最终账单,也不通过重发业务请求来查询上一笔费用。
官方资料
资料核对日期:2026年11月10日。
本文地址:https://www.163264.com/20250


