导出字段说明
通过日志导出功能获取 CSV 文件后,可使用以下字段进行计费核算:
| 字段 | 含义 |
|---|
| 提示Token | 上游返回的原始输入总量(校验用) |
| 输入Token | 按普通文本输入单价计费的非缓存输入;无缓存、无图片时等于提示Token |
| 缓存命中Token | 命中缓存的输入 token |
| 缓存写入Token | 写入缓存的 token(5分钟有效期) |
| 缓存写入1hToken | 写入缓存的 token(1小时有效期) |
| 输出Token | 总输出 token 数(含推理) |
| 推理Token | 模型内部推理消耗的输出 token |
| 输入单价 | CNY/百万Token |
| 输出单价 | CNY/百万Token |
| 缓存命中单价 | CNY/百万Token |
| 缓存写入单价 | CNY/百万Token |
| 缓存写入1h单价 | CNY/百万Token |
| 推理单价 | CNY/百万Token |
| 搜索次数 | Claude Web Search 调用次数 |
| 搜索单价 | CNY/次(按次计费) |
| 图片输入Token | 图片模态的输入 token 数 |
| 图片输入单价 | CNY/百万Token(图片输入) |
| 缓存图片Token | 缓存命中的图片输入 token 数 |
| 缓存图片单价 | CNY/百万Token(缓存图片) |
校验关系
普通文本:
提示Token = 输入Token + 缓存命中Token + 缓存写入Token + 缓存写入1hToken
含图片输入:
提示Token = 输入Token + 图片输入Token + 缓存命中Token + 缓存图片Token + 缓存写入Token + 缓存写入1hToken
提示Token用于校验上游输入总量。财务核算统一使用各分项 Token 乘对应单价,不使用提示Token直接计费。
精度说明
公式计算金额与实际计费可能存在 < ¥0.0001 的差异,来源于内部额度单位的向上取整(ceil),属于正常精度损失。
Claude 系列
适用模型:claude-sonnet-4-6、claude-opus-4-6、claude-haiku-4-5 等
计费特点: 缓存分为 5分钟 和 1小时 两档,写入缓存比普通输入贵,读取缓存大幅折扣。支持 Web Search 按次附加计费。
上游响应体结构
Claude 原生 Messages API 返回的 usage 结构如下:
{
"usage": {
"input_tokens": 465,
"output_tokens": 572,
"cache_creation_input_tokens": 46109,
"cache_read_input_tokens": 11944,
"cache_creation": {
"ephemeral_5m_input_tokens": 29762,
"ephemeral_1h_input_tokens": 16347
},
"server_tool_use": {
"web_search_requests": 1
}
}
}
| 字段 | 对账映射 |
|---|
input_tokens | 输入Token(非缓存普通输入) |
output_tokens | 输出Token |
cache_read_input_tokens | 缓存命中Token |
cache_creation_input_tokens | 写缓存总量(校验用) |
cache_creation.ephemeral_5m_input_tokens | 缓存写入Token |
cache_creation.ephemeral_1h_input_tokens | 缓存写入1hToken |
server_tool_use.web_search_requests | 搜索次数 |
如果上游没有返回 cache_creation 分桶,平台会把 cache_creation_input_tokens 作为默认/5分钟写缓存处理。通过 OpenAI 兼容接口返回给客户端时,缓存命中会映射到 usage.prompt_tokens_details.cached_tokens;写缓存分桶以日志 metadata 和导出字段为准。
金额 = 输入Token / 1M × 输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ 缓存写入Token / 1M × 缓存写入单价
+ 缓存写入1hToken / 1M × 缓存写入1h单价
+ 输出Token / 1M × 输出单价
+ 搜索次数 × 搜索单价
搜索次数和搜索单价为可选导出字段,仅在请求使用了 Claude Web Search 工具时有值。未使用时为空,不影响总金额。
以 claude-haiku-4-5 一次真实请求为例:
| 字段 | 值 |
|---|
| 提示Token | 58,518 |
| 输出Token | 572 |
| 输入Token | 465 |
| 缓存命中Token | 11,944 |
| 缓存写入Token | 29,762 |
| 缓存写入1hToken | 16,347 |
| 输入单价 | ¥3.5/M |
| 输出单价 | ¥17.5/M |
| 缓存命中单价 | ¥0.35/M |
| 缓存写入单价 | ¥4.375/M |
| 缓存写入1h单价 | ¥7.0/M |
计算:
465 / 1M × 3.5 = ¥0.001628
11,944 / 1M × 0.35 = ¥0.004180
29,762 / 1M × 4.375 = ¥0.130209
16,347 / 1M × 7.0 = ¥0.114429
572 / 1M × 17.5 = ¥0.010010
─────────────────────────────────
合计 = ¥0.260456
GPT-5 系列
适用模型:gpt-5、gpt-5.4、gpt-5.4-mini 等
计费特点: 有推理 token(reasoning),推理单价通常等于输出单价。支持缓存读取。
响应体 usage 结构
Chat Completions 接口常见 usage 结构如下:
{
"usage": {
"prompt_tokens": 26672,
"completion_tokens": 3791,
"total_tokens": 30463,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 26672,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 2478,
"text_tokens": 1313,
"audio_tokens": 0
}
}
}
Responses 接口常见 usage 结构如下:
{
"usage": {
"input_tokens": 26672,
"output_tokens": 3791,
"total_tokens": 30463,
"input_tokens_details": {
"cached_tokens": 0,
"text_tokens": 26672
},
"output_tokens_details": {
"reasoning_tokens": 2478
}
}
}
| Chat Completions 字段 | Responses 字段 | 对账映射 |
|---|
prompt_tokens | input_tokens | 提示Token(输入总量,含缓存命中) |
completion_tokens | output_tokens | 输出Token(含推理) |
prompt_tokens_details.cached_tokens | input_tokens_details.cached_tokens | 缓存命中Token |
completion_tokens_details.reasoning_tokens | output_tokens_details.reasoning_tokens | 推理Token |
cached_tokens 是输入总量里的子项,不是额外 token。财务核算时,输入Token = 提示Token - 缓存命中Token;推理Token 已包含在输出Token中。
金额 = 输入Token / 1M × 输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ (输出Token - 推理Token) / 1M × 输出单价
+ 推理Token / 1M × 推理单价
当推理单价 = 输出单价时(大多数 GPT 模型),可简化为 输入Token/1M × 输入单价 + 输出Token/1M × 输出单价。
以 gpt-5.4 一次真实请求为例:
| 字段 | 值 |
|---|
| 提示Token | 26,672 |
| 输出Token | 3,791 |
| 输入Token | 26,672 |
| 缓存命中Token | 0 |
| 推理Token | 2,478 |
| 输入单价 | ¥8.75/M |
| 输出单价 | ¥52.5/M |
| 推理单价 | ¥52.5/M |
计算:
26,672 / 1M × 8.75 = ¥0.233380
(3,791 - 2,478) / 1M × 52.5 = ¥0.068933
2,478 / 1M × 52.5 = ¥0.130095
─────────────────────────────────
合计 = ¥0.432408
GPT-Image 系列
适用模型:gpt-image-2、gpt-image-1、gpt-image-1-mini、gpt-image-1.5、chatgpt-image-latest
计费特点: 输入按文本/图片分别计价,图片缓存有独立折扣。输出 token 全部为图片 token,直接使用输出单价核算。需勾选图片计费字段进行导出。
上游响应体结构
OpenAI 返回的 usage 结构如下:
{
"input_tokens": 1041,
"output_tokens": 1756,
"total_tokens": 2797,
"input_tokens_details": {
"text_tokens": 236,
"image_tokens": 805,
"cached_tokens": 500
},
"output_tokens_details": null
}
| 字段 | 含义 |
|---|
input_tokens | 输入总量(文本 + 图片 + 缓存) |
input_tokens_details.text_tokens | 纯文本输入 token |
input_tokens_details.image_tokens | 图片输入 token |
input_tokens_details.cached_tokens | 缓存命中 token(文本+图片混合,平台按比例拆分) |
output_tokens | 输出 token(全部为图片,无拆分) |
output_tokens_details | 始终为 null,上游不区分输出类型 |
cached_tokens 是文本和图片缓存的混合值。平台按 cached × image / (text + image) 比例拆分为文本缓存和图片缓存,分别适用不同折扣。纯文本生图时无 image_tokens 和 cached_tokens 字段。
金额 = 输入Token / 1M × 输入单价
+ 图片输入Token / 1M × 图片输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ 缓存图片Token / 1M × 缓存图片单价
+ 输出Token / 1M × 输出单价
图片计费字段为可选导出列,不在 billing_detail 预设中。需单独勾选 input_image_tokens、input_image_price、cached_image_tokens、cached_image_price。非图片模型这些列为空。上游不单独返回”图片输出 token”,输出Token 本身即为图片输出。
以 gpt-image-2 改图请求为例(图片输入 + 部分缓存命中):
| 字段 | 值 |
|---|
| 提示Token | 1,010 |
| 输出Token | 500 |
| 输入Token | 0 |
| 图片输入Token | 10 |
| 缓存命中Token | 10 |
| 缓存图片Token | 990 |
| 输入单价 | $5.00/M |
| 图片输入单价 | $8.00/M |
| 缓存命中单价 | $1.25/M |
| 缓存图片单价 | $2.00/M |
| 输出单价 | $30.00/M |
计算:
0 / 1M × 5.00 = $0.000000
10 / 1M × 8.00 = $0.000080
10 / 1M × 1.25 = $0.000013
990 / 1M × 2.00 = $0.001980
500 / 1M × 30.00 = $0.015000
─────────────────────────────────
合计 = $0.017073
Gemini 系列
适用模型:gemini-3.5-flash、gemini-3-pro-image-preview 等
计费特点: 支持缓存读取/写入,部分模型有推理 token。图像生成模型有多模态 token 分项。
纯文本/推理模型公式
金额 = 输入Token / 1M × 输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ 缓存写入Token / 1M × 缓存写入单价
+ (输出Token - 推理Token) / 1M × 输出单价
+ 推理Token / 1M × 推理单价
图像生成模型
图像生成模型(如 gemini-3-pro-image-preview)的输入/输出包含多模态 token,当前导出按总量计费,公式同上。
Gemini 图像 no-image 失败对账
当 Gemini 图像请求被上游封控或未产出图片,但上游返回了 prompt/input token usage 且平台已按 token 结算时,API 错误响应会携带本次 usage,方便与消费日志对齐。
OpenAI 风格图片接口示例:
{
"error": {
"message": "no image generated (request id: 20260608235925678097275ZgRxuG4y)",
"type": "one_hub_error",
"code": "no_image_generated"
},
"usage": {
"input_tokens": 353,
"output_tokens": 0,
"total_tokens": 353,
"input_tokens_details": {
"text_tokens": 95,
"image_tokens": 258
}
}
}
对账时可按以下关系核对:
| API 响应字段 | 消费日志/导出字段 |
|---|
usage.input_tokens 或 usage.prompt_tokens | 提示Token / prompt_tokens |
usage.input_tokens_details.image_tokens | 图片输入Token / input_image_tokens |
usage.output_tokens | 输出Token / completion_tokens |
| 无图片输出 | output_image_tokens=0 |
只有已结算的 no-image 失败会返回 usage。未扣费失败、本地校验失败、平台额度失败或上游未返回 usage 的普通失败不会返回 usage。
DeepSeek 系列
适用模型:deepseek-v4-pro、deepseek-v4-flash 等
计费特点: 支持缓存读取,缓存命中折扣极大。无写入分桶。
金额 = 输入Token / 1M × 输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ 输出Token / 1M × 输出单价
通用核算模板
对于任意模型,以下公式均适用(空字段视为 0):
金额 = 输入Token / 1M × 输入单价
+ 图片输入Token / 1M × 图片输入单价
+ 缓存命中Token / 1M × 缓存命中单价
+ 缓存图片Token / 1M × 缓存图片单价
+ 缓存写入Token / 1M × 缓存写入单价
+ 缓存写入1hToken / 1M × 缓存写入1h单价
+ (输出Token - 推理Token) / 1M × 输出单价
+ 推理Token / 1M × 推理单价
+ 搜索次数 × 搜索单价
在 Excel 中可直接使用此公式对每行数据进行验算,空单价列视为 0 即可。图片输入计费字段仅 GPT-Image 系列有值(输出直接用输出单价),搜索字段仅 Claude 使用 Web Search 时有值。