输入输出tokens怎么计算的?
每家模型厂商、每个模型,都有不同的 tokens计算公式,所有输入输出tokens数量由模型厂商计算,并在返回API请求是包含在usage
内。
流式请求 使用 include_usage 参数显示usage
功能说明:
- 在请求体中设置
"stream_options": {"include_usage": True}
可以在流式响应结束时返回 token 使用统计(usage
)。
- 在请求体中设置
前提条件:
- 必须同时启用
"stream": True
(开启流式传输),否则该参数无效。
- 必须同时启用
请求体示例:
json{ "stream": true, "stream_options": { "include_usage": true } }
注意事项:
- 仅当流式传输完成时,
usage
数据才会在最终返回的块中显示。
- 仅当流式传输完成时,
适用场景:
- 需要实时获取流式响应,同时希望最终统计 token 消耗的情况。
非流返回示例(下面是 gpt-4o-mini 返回内容):
json
{
"id":"chatcmpl-BteZIMPUksv1dj4t2dUULu6aM8QTb",
"object":"chat.completion",
"created":1752603684,
"model":"gpt-4o-mini",
"choices":[
{
"index":0,
"message":{
"role":"assistant",
"content":"1+1等于2。",
"refusal":null,
"annotations":[
]
},
"logprobs":null,
"finish_reason":"stop"
}],
"usage":{
"prompt_tokens":15,
"completion_tokens":8,
"total_tokens":23,
"prompt_tokens_details":{
"cached_tokens":0,
"audio_tokens":0
},
"completion_tokens_details":{
"reasoning_tokens":0,
"audio_tokens":0,
"accepted_prediction_tokens":0,
"rejected_prediction_tokens":0
}
},
"system_fingerprint":"fp_efad92c60b"
}
API响应中的usage
字段会返回tokens消耗详情:
字段 | 说明 | 示例值 |
---|---|---|
prompt_tokens | 用户输入消耗的tokens | 15 |
completion_tokens | AI回答消耗的tokens | 8 |
total_tokens | 本次对话总tokens(输入+输出+推理) | 23 |
如果你发现 total_tokens 大于 输入输出tokens之和,说明 total_tokens 里还包含了未展示的推理tokens,比如 gemini-2.5-pro 就会出现这种情况。 |