Skip to content

输入输出tokens怎么计算的?

每家模型厂商、每个模型,都有不同的 tokens计算公式,所有输入输出tokens数量由模型厂商计算,并在返回API请求是包含在usage内。

流式请求 使用 include_usage 参数显示usage

  1. 功能说明

    • 在请求体中设置 "stream_options": {"include_usage": True} 可以在流式响应结束时返回 token 使用统计(usage)。
  2. 前提条件

    • 必须同时启用 "stream": True(开启流式传输),否则该参数无效。
  3. 请求体示例

    json
    {
      "stream": true,
      "stream_options": {
        "include_usage": true
      }
    }
  4. 注意事项

    • 仅当流式传输完成时,usage 数据才会在最终返回的块中显示。
  5. 适用场景

    • 需要实时获取流式响应,同时希望最终统计 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用户输入消耗的tokens15
completion_tokensAI回答消耗的tokens8
total_tokens本次对话总tokens(输入+输出+推理)23
如果你发现 total_tokens 大于 输入输出tokens之和,说明 total_tokens 里还包含了未展示的推理tokens,比如 gemini-2.5-pro 就会出现这种情况。

一个 Key 用全球大模型